Hi folks,
I'm very much a newcomer to PLCs in general and the CIP standard in particular and have a problem I hope someone could shed some light on. I've started a work project using a CL5000 plc talking to my company's in-house developed SCADA control system.
I've set the PLC to have an array of DINT which I'm then using each bit of the DINT as a boolean. When I write the array using CIP Data Table Write from the CL5000 to my Scada, I get all 32 current BOOL values which is great. However, when I write FROM my Scada to the CL5000 I want to offer more granularity so I can only write to the bit I'm interested. This means I can't just send the DINT but have to "drill down" to the bit level and send just that.
I've configured the TAG in CL 5000 as
Name = stuff DINT[1]
so now I can see each bit within "stuff" as for example
stuff[0].1
However, I cannot seem to work out how to address this individual bit when I build the CIP Data Table command to then send to the CL5000. If I set my CIP data type to 0xC1 ( BOOLEAN) and use Segment address then the CL5000 rejects it as wrong type which I guess is due to the TAG being a DINT. When I set CIP data type to 0xC4 (DINT) I'm then sending 32 bit values when I only want to send 1 specific one which could mean I'm incorrectly overwriting 31 bit values in the plc memory.
Any advice/suggestions would be hugely appreciated.
Steve
I'm very much a newcomer to PLCs in general and the CIP standard in particular and have a problem I hope someone could shed some light on. I've started a work project using a CL5000 plc talking to my company's in-house developed SCADA control system.
I've set the PLC to have an array of DINT which I'm then using each bit of the DINT as a boolean. When I write the array using CIP Data Table Write from the CL5000 to my Scada, I get all 32 current BOOL values which is great. However, when I write FROM my Scada to the CL5000 I want to offer more granularity so I can only write to the bit I'm interested. This means I can't just send the DINT but have to "drill down" to the bit level and send just that.
I've configured the TAG in CL 5000 as
Name = stuff DINT[1]
so now I can see each bit within "stuff" as for example
stuff[0].1
However, I cannot seem to work out how to address this individual bit when I build the CIP Data Table command to then send to the CL5000. If I set my CIP data type to 0xC1 ( BOOLEAN) and use Segment address then the CL5000 rejects it as wrong type which I guess is due to the TAG being a DINT. When I set CIP data type to 0xC4 (DINT) I'm then sending 32 bit values when I only want to send 1 specific one which could mean I'm incorrectly overwriting 31 bit values in the plc memory.
Any advice/suggestions would be hugely appreciated.
Steve