Ken Roach
Lifetime Supporting Member + Moderator
PowerFlex N-table emulation makes the infant Jesus cry.
There are three methods for controlling the speed of a PowerFlex 525 or other A-B drive over Ethernet from a MicroLogix 1100/1400 or SLC-5/05.
1. Use a CIP Generic message (or EEM, in the SLC-5/05) to write to the CIP Output Assembly Object repeatedly, to functionally simulate a cyclic I/O connection.
2. Use a PCCC message (MSG instruction in MicroLogix or SLC) to write to the emulated N41 Data Table addresses for Command and Reference and Timeout values.
3. Use one of the above messaging methods to write to the Parameter Object (with an EEM) or to the emulated SLC-500 Data Tables that represent Parameters (with an MSG) to write to a Preset Speed variable. Care should be taken to write to these values infrequently, or to use the function code or option parameter to be sure that these do not result in a nonvolatile memory write.
The logic shown by our colleague Padees is an example of the second method.
I do not recall if you can write to just N41:2 (the Reference value) and not to N41:0 (the Command value). I don't think that you can; you should find that the PowerFlex rejects such a message. Write to N41:0, Length 3, to cover the Command register, the unused register, and the Reference register.
The unused register is in there to make it similar to PowerFlex 700/750 series, which use a 32-bit Reference. PowerFlex 525 is a 16-bit reference value.
In the example that Padees showed, you can see that he is using the Command register to perform a Fault Reset on the PowerFlex. (bit 02 of the Command register).
The Start and Stop bits in the Command register have no effect when set to zero, so there's no harm in sending a zero to the N41:0 and N41:1 words in the same payload as you are sending the Reference to N41:2. I would recommend writing a constant zero to those registers in logic immediately before the MSG instruction.
Because method #2 emulates a cyclic I/O connection, you must also write a nonzero value to N42:3 for a Timeout value, and then keep writing to N41:0-2 more frequently than that number of seconds.
There are three methods for controlling the speed of a PowerFlex 525 or other A-B drive over Ethernet from a MicroLogix 1100/1400 or SLC-5/05.
1. Use a CIP Generic message (or EEM, in the SLC-5/05) to write to the CIP Output Assembly Object repeatedly, to functionally simulate a cyclic I/O connection.
2. Use a PCCC message (MSG instruction in MicroLogix or SLC) to write to the emulated N41 Data Table addresses for Command and Reference and Timeout values.
3. Use one of the above messaging methods to write to the Parameter Object (with an EEM) or to the emulated SLC-500 Data Tables that represent Parameters (with an MSG) to write to a Preset Speed variable. Care should be taken to write to these values infrequently, or to use the function code or option parameter to be sure that these do not result in a nonvolatile memory write.
The logic shown by our colleague Padees is an example of the second method.
I do not recall if you can write to just N41:2 (the Reference value) and not to N41:0 (the Command value). I don't think that you can; you should find that the PowerFlex rejects such a message. Write to N41:0, Length 3, to cover the Command register, the unused register, and the Reference register.
The unused register is in there to make it similar to PowerFlex 700/750 series, which use a 32-bit Reference. PowerFlex 525 is a 16-bit reference value.
In the example that Padees showed, you can see that he is using the Command register to perform a Fault Reset on the PowerFlex. (bit 02 of the Command register).
The Start and Stop bits in the Command register have no effect when set to zero, so there's no harm in sending a zero to the N41:0 and N41:1 words in the same payload as you are sending the Reference to N41:2. I would recommend writing a constant zero to those registers in logic immediately before the MSG instruction.
Because method #2 emulates a cyclic I/O connection, you must also write a nonzero value to N42:3 for a Timeout value, and then keep writing to N41:0-2 more frequently than that number of seconds.