We have a discrete manufacturing line of about 35 stations using Siemens S7 PLCs.
Some stations are assembling a “parent” component with “child” components. The station PLC scans the QR codes of the parent component and of all the child components. We want to collect the parenting/genealogy data in a database (timestamp, station ID, parent serial number, child serial numbers, etc.).
What is the recommended way to do this with Ignition and S7 PLCs?
Not specific to Siemens:
The simple way (drag and drop) to do this would be a transaction group for each station that triggers on the serial number. Use OPC Read mode to ensure all other data in the transaction is fresh after the trigger. Make sure the PLC code loads the trigger value last.
A script driven by a tag change would be an alternative.
I guess that means Ignition has to poll the serial number on the PLC at least as often as the station cycle time, ideally even more often to not introduce any delay?
Let’s say the station processes one unit per second. If Ignition polls the serial number once per second, then the maximum latency between the PLC making the serial number available and Ignition reading it and triggering the transaction group will be 1 second (if the previous read happens just before the PLC updating the tag)?
Actually, you have to poll a bit faster than the cycle time to be sure, and to leave time to get the rest of the data. But only the trigger needs to be polled. OPC read mode makes a non-subscription read for the other items.
Is there anyway to queue the data in the PLC so that Ignition doesn’t have to work as hard constantly? IE Is the production bursty or continuous?
OTOH Ignition may not be the correct tool for the job you want to do, given the performance requirements. In a previous project I wrote a C# based windows service and was collecting data from a Cognex camera and pushing it into a database with a 40ms throughput. The operator interface (actually a C# WPF based program) pulled the data out of the DB at its leisure.