Do you have a machine that you need to get data from? And do you need to send that data to another device but the machine lacks networking capabilities?
In this article I'll show how to get data a your machine into a Siemens S7-1214C PLC by using the machine's existing outputs to select which data the PLC will make available over your network.
In this example we have four outputs on our machine that tells us which product is being made.
These will be wired into our PLC as inputs, and therefore we need to add them to our PLC's tag table:
Now that we've added our Input Tags, we'll next add a new Function Block to the program named “Part Reference”:
In this step we will add the data to the FB that will be used to “select” the part number of the product being made.
‘Programs' in the static section needs “Retain” to be “Set in IDB.” “Programs” is an Array 0…15 with a max string length of 15:
Now we will add the first Logic to the FB. The Inputs will write to the first 4 Bits of the Byte “Input Code,” and are addressed as #”Input Code”.%X0 thru %X3 as shown below:
Next, we'll add an “SCL Network” to the Function Block.
This logic will convert the Byte to Int, and then select the part number based on the inputs.
It will also display the Part Number that was selected, and if no part is selected the output will display ‘No Part':
Now we need to add the “Part Reference” FB1 to the OB1 Main Routine. This will create an “Instance Data Block” (IDB).
Add “Part Number” to “Temp” in OB1, then add the four Inputs from the Tag Table to the Input side of Function Block, and finally add “Part Number” to the Output side of the Function Block:
Now create a watch table and name it ‘Part Numbers'. This table will have 1 to 15 part numbers, and the data will be written to it by “Programs” in the Function Block:
Compile and load program to PLC, then go online and add the “Part Numbers” to table and write to DB:
Now let's test the logic to make sure it is working correctly.
You can see that with no input the Part Reference output is displaying ‘No Part:
And with Input 1 on (aka high, binary 0001,) the Output is now displaying the first part number in our Part Number table:
With all Inputs on (aka all high, binary 1111,) the output is now displaying Program Fifteen from the Part Number table:
Here we can see the Inputs and how the correlate with the byte ‘Input Code’:
The above method is a good way to get part number or other information from a machine where you must use the PLC inputs to select the information using binary.
This can be used to interface with machines that do not have any industrial networking (Ethernet/Profinet/Profibus) capabilities.
Written by Chris Wright
Process/Controls Engineer and Freelance Writer
- String Selection from Binary Input - May 5, 2020
- Siemens vs. Allen-Bradley PLCs: One Engineer's Perspective - April 14, 2020