Converting a SLC 5/05 program to CLX (L33-ER v24.01), and the last issue/question I have (I hope) is how to translate the DeviceNet mapping. On the old program, I was reading into INTs, but in the new program, I have to read to unbroken blocks of DINTs (forced by the card) due to the limit of 4 read/writes per object in DeviceNet.
For example, the data mapping of the first node read on the old card was split into two reads, the first starting at word 0 with a length 40, the second starting at word 5 with a length 32:
xxxxxxxxxxxxxxxx M1:1.0
xxxxxxxxxxxxxxxx M1:1.1
00000000xxxxxxxx M1:1.2
xxxxxxxxxxxxxxxx M1:1.3
xxxxxxxxxxxxxxxx M1:1.4
My plan is to map the DeviceNet information in a way that I can easily drop it into my new program in the same orientation so that my converted tags will get the same information without having to readdress a bunch of stuff.
The problem I'm running into is that it seems I am forced to use DINTs in the 1769-SDN, so my data structure ends up being twice as long. M1:1.0 becomes Local:1:I.Data[0] and my map looks like:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Local:1:I.Data[0]
000000000000000000000000xxxxxxxx Local:1:I.Data[1]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Local:1:I.Data[2]
In order to manually arrange those into 16 bit blocks in DeviceNet, I would need 5 individual reads, which is impossible as far as I know. I also can't start a copy from the middle of the DINT to break the data up manually and move groups of 16 bits at a time into the correct INT locations in my PLC program.
Does anyone have a technique they could share that doesn't involve readdressing all my Integers in my program? Or am I just going to have to bite the bullet?
Thanks for any help you guys can offer, and as always please ask if you need any additional information!
For example, the data mapping of the first node read on the old card was split into two reads, the first starting at word 0 with a length 40, the second starting at word 5 with a length 32:
xxxxxxxxxxxxxxxx M1:1.0
xxxxxxxxxxxxxxxx M1:1.1
00000000xxxxxxxx M1:1.2
xxxxxxxxxxxxxxxx M1:1.3
xxxxxxxxxxxxxxxx M1:1.4
My plan is to map the DeviceNet information in a way that I can easily drop it into my new program in the same orientation so that my converted tags will get the same information without having to readdress a bunch of stuff.
The problem I'm running into is that it seems I am forced to use DINTs in the 1769-SDN, so my data structure ends up being twice as long. M1:1.0 becomes Local:1:I.Data[0] and my map looks like:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Local:1:I.Data[0]
000000000000000000000000xxxxxxxx Local:1:I.Data[1]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Local:1:I.Data[2]
In order to manually arrange those into 16 bit blocks in DeviceNet, I would need 5 individual reads, which is impossible as far as I know. I also can't start a copy from the middle of the DINT to break the data up manually and move groups of 16 bits at a time into the correct INT locations in my PLC program.
Does anyone have a technique they could share that doesn't involve readdressing all my Integers in my program? Or am I just going to have to bite the bullet?
Thanks for any help you guys can offer, and as always please ask if you need any additional information!