Thanks again to JaxGTO above. If anybody stumbles across this, I couldn't quite figure out how to address an N file inside Codesys so using a similar approach that was near that solution in the Manual, I did this:
Class Code
Services
Instances
Class Attributes
Instance Attributes
Important: Setting a Register object attribute can be done only when the
Control Timeout (class attribute 100) has been set to a non-zero
value.
Hexadecimal Decimal
0x07 7
Service Code Implemented for: Service Name
Class Instance
0x0E Yes Yes Get_Attribute_Single
0x10 Yes Yes Set_Attribute_Single
Instance Description
1 All I/O data being read from the DPI device (read-only)
2 All I/O data written to the DPI device (read/write)
3 Logic Status and Feedback data (read-only)
4 Logic Command and Reference data (read/write)
5 Datalink A (input data from device to scanner) (read only)
6 Datalink A (output data from scanner to device) (read/write)
7 Datalink B (input data from device to scanner) (read only)
8 Datalink B (output data from scanner to device) (read/write)
9 Datalink C (input data from device to scanner) (read only)
10 Datalink C (output data from scanner to device) (read/write)
11 Datalink D (input data from device to scanner) (read only)
12 Datalink D (output data from scanner to device) (read/write)
13 Logic Status and Feedback Data (read-only)
14 Mask (1) (read/write)
(1) The mask command word is set to the value of the first word of the data where there
are ones in the second word of the data. Command = (word 1 and not word 2) or (word
1 and word 2). This only controls specified bits in the Logic Command data to the DPI
product and does not change the Reference value.
15 Logic Status (read-only)
16 Logic Command (read/write)
17 Feedback (read-only)
18 Reference (read/write)
Attribute ID Access Rule Name Data Type Description
100 Set Control Timeout WORD Control timeout in seconds
I did a write message class level to Attribute 100 to set a timeout, then wrote 4 BYTES to Instance 4 to start/stop the drive, reading the status back at the same place to confirm the drive was running/had the correct speed command.
In Codesys it looked like this (apologies for the bad documentation, was doing test bench style dev)
Setup message:
SAS(
xExecute:= ,
itfEtherNetIPDevice:= PowerFlex70, (* instance of the device (instance is found in the I/O Image of the device) *)
eClass:= 7, (* cip class which contains the desired attribute *)
dwInstance:= 0, (* value of 0 is class level, range from 1..x is instance level *)
pData:= ADR(WRITE), (* data buffer *)
udiDataSize:= SIZEOF(WRITE), (* size of the data buffer *)
wAttribute:= 100, (* attribute no. 6 of the tcp/ip interface object is the Hostname (CIP Spec. Vol.2 Chapter 5-3.3.2.6)*)
xDone=> ,
xBusy=> ,
xError=> ,
eError=> );
Command Message:
//first write this THIS ONE RUNS THE PFLEX 70!!!!!!!!!!!!!!!!!
SAS1(
xExecute:= ,
itfEtherNetIPDevice:= powerflex70, (* instance of the device (instance is found in the I/O Image of the device) *)
eClass:= 7, (* cip class which contains the desired attribute *)
dwInstance:= 4, (* value of 0 is class level, range from 1..x is instance level *)
pData:= ADR(WRITEWORD), (* data buffer *)
udiDataSize:= SIZEOF(WRITEWORD), (* size of the data buffer *)
wAttribute:= 4, (* attribute no. 6 of the tcp/ip interface object is the Hostname (CIP Spec. Vol.2 Chapter 5-3.3.2.6)*)
xDone=> ,
xBusy=> ,
xError=> ,
eError=> );