EEVblog Electronics Community Forum

Electronics => Manufacturing & Assembly => Topic started by: khs on August 16, 2023, 08:51:16 pm

Title: A new BOM SW manages Stock, Order numbers and calculates Prices of the Product
Post by: khs on August 16, 2023, 08:51:16 pm
Some years ago here I've presented my new stencil printer. Meanwhile it looks the market accepted it quite well and so some small companies including me (and even some bigger) can manufacture their prototypes easier.

The Problem:
So far so good. Sure, the stencil  printer was an improvement, but at this time for me it was always nearly impossible to know my stock and when I ordered parts I always missed some because I've overseen it - aside the fact it was always difficult to remember the distributor with the best price...

Meanwhile I think I've solved this problem, so I would like to introduce this new approach to manage the stock and maybe more important for professionals: Calculate the price of a product. 

Placement Files:
One or more board pnp data files with different numbers can be entered into the bomm_place.ini file. This makes handling projects with multiple boards with different numbers especially regarding ordering components and price calculations quite easy.

Feeder Files:
The database is made with simple text files. One for every part (or component) and they are used for all projects. So if there is any price, stock or other update this update is for all projects. A feeder number can be used for optimizing feeders and excluding parts from pnp placement by making the feeder number negative.

Because the component file includes a number for the feeder it's called "feeder file".

BOM Calculation:
The price of every component can be stored in the feeder files so a price calculation of the bom is simple - especially when there is more than one pc-board.

Find the Best Price:
The feeder file can store more order numbers and more distributors. A component not available is marked with a negative price.

The components to order are listed in a HTML file with a link to the feeder file. The software  searches for the lowest price and put the distributors with the lowest prices together, so ordering part is done in some minutes.

Remove Stock:
When the pc-boards are finished the required parts can removed from stock by calling
bomm -r so the stock is always more or less up to date.

Add Stock:
Adding stock is simple by entering the new stock number. You may add a line with time, date and distributor like
ADD <number> <time> <distributor>
then you know a not to find part was ordered or not...

The Pc-Board File to enter Time Duration to Manufacture:
One important improvement and from my knowledge never used before is a feeder file for the pc-board. This pc-board feeder file is a feeder file like all other feeder board but it's the best location to include time information to manufacture, the time required to test the board and to do some administration work like making invoices.

Manual and PNP place Time:
Time information can be included into any other feeder files if there is a component time consuming to handle. But for most of the components a default value can be used.

There are two different time duration required to place a component on the pc-board. One for placing it with a pnp machine and other to place it manually. For these two time durations a default value can be set, so calculation of the time required to place all component on the board gets simple.

Setup Time:
Additional times to manufacture a board are setup times. Some times like the time required to order parts can be entered into the pc-board feeder file. Setup times to mount a component into a feeder can set as a default value and is added for every used component with a positive feeder number. Component on fixed feeder places can be excluded from the feeder setup time calculation.

Development Cost:
Shared cost for development can be entered into the pc-board feeder file too by entering the weeks required for development and the units are planned to manufacture.

Partial - or include more complex Components:
Additional the pc-board feeder file is a good place to add some partial "components" like solder paste. Partial components can be used to make a feeder file to add all components to make something like a transformer.

With all these features the database based on feeder files is very powerful and flexible.

File Format:
The board data file format is Page, Package, Value, X, Y, R, designator, so there is a complete description all components. For Eagle there is a ULP and for Kicad there is a translation for Specctra DSN files.

Output files are CSM60 format and CSV bom and placement. Placement format is
Designator, X,Y, Layer, R, part value , footprint and feeder number.

Component Flags:
With additional flags different board version can be selected by changing values of a component. The  syntax it's quite simple: value_1@flag_1 | value_2@flag _2 and so on.

If flag_1 is set, the component has value_1, if flag_2 is set, then the component has the value_2.
With these flags different board version can be generated without modifying the board file.

BOM Management:
There is an additional HTML file with all feeder files listed with a description, part numbers, prices  and stock. Some editions of the software provide a link to the data sheet. So with ctrl - F the component can be located in fractions of seconds.

Not a New Problem:
But I have to admit, I'm a little late: Some time ago my software was still working quite fine I found an interesting book from Charles H. House: The HP Phenomenon.

During reading the interesting book I reached the page 524 and noticed in the year 1974 it seemed Dave Packard was not very confident with his management: "..running a manufacturing shop that's a hell of lot easier to run it if  you've got tree times as much raw materials on hand as you needed, .. (so) we don't need professional managers."

A little bit later on the next page he added: "I was shocked to find some places in the company we came out with a hell of good products and the people had failed to price it in order to make a profit on a current basis".

I was a little bit surprised my tiny company and a huge and very successful company had similar problems: One is stock management (in my case opposite to HP) and the other the pricing of the product - I had no idea how to calculate the price in a reasonable time.

A little time after reading the book I found April 1981, seven years later HP offered with 31K $  a quite expensive software to handle these problems. I started in 2014 - so a little bit later than HP -  to write my own software to solve the problem - without knowing the similar problems HP had in 1974.

I think it would be quite difficult to try the old HP software, but I've made a demo and a free version for non commercercial use so you can try my software instead...

at http://www.khs-instruments.com/Products/Tools/BOMM_DEMO_FREE.zip (http://www.khs-instruments.com/Products/Tools/BOMM_DEMO_FREE.zip)  ;-)

It includes a simple opamp test-board with Eagle, Kicad, all required feeder and config files so you can play around...
Title: Re: A new BOM SW manages Stock, Order numbers and calculates Prices of the Product
Post by: khs on August 31, 2023, 06:54:13 pm
Here some updates:

Here a new conversion tool to convert an existing csv database to feeder files.

It was developed by using open-office 3.3 and digikey csv spreadsheets and it shows again it's quite uncomfortable (for me) to generate a csv database for all components used.

The spreadsheet for resistors is different to spreadsheets for capacitors and this is different to spreadsheets for opamps and so on, so a spreadsheet for all components including some additional  information regarding the components gets quite confusing.

But digikey spreadsheets offer a lot of additional valuable information and it would be nice to have it in the feeder files to get fast access to additional information during development of new products using components in stock.

Unfortunately the spreadsheets are not compatible to feeder files, so here is a program to convert it.

The conversion program uses the column keywords in the first line and transfers the next lines line by line into feeder files. Every csv line represents a component so it's converted into a feeder file.  With the keywords it should be possible to convert a (comma separated) csv database into feeder files.

The file name for the feeder files is generated by adding the package name to the value name.  The package name has the keyword *pack and the value has the keyword *val in the first line of the spreadsheet.

There are about 60 additional keywords for adc's dac's resistors diodes and so on. This looks a little bit uncomfortable but there is a way to make the life easier:

A "keyword line" can be generated for every of the different component classes, so it can be copied and pasted into the csv files so conversion to feeder files should be quite easy.

By default the information of every row is transferred to the feeder file. Rows with unknown keywords are inserted as comments into the feeder files. It's possible to delete the rows before converting the data into feeder files, but the work must be done every time before the data conversion starts.

This is the reason the keyword *nop was added to avoid the data of the row to be transferred to the feeder file, so the keyword line for a component class can be reused.

Unfortunately Mouser csv data is not compatible to Open Office. But with existing feeder files it's  not too much work to add the order number and prices from Mouser  / RS / Farnell and the other well known distributors to have the order numbers and prices of all distributors in one feeder file to find out the lowest price.

The in the zip file there is a dac.csv sample spreadsheet can be converted via csv2fed to feeder files.

BTW. There is a simple way for non professional users to expand the numbers of feeders, by selecting only used feeder file directories in the bomm_feeder_dir.ini by commenting the not required directories out by //.