Knowledge Base /
Integration Guides
DeltaV Integration With AB PowerFlex Using Ethernet/IP Class1 Messaging
By Geoff Nash
Product: DeltaV Virtual IO Module - VIM2

This technical note describes the recommended settings for integrating PowerFlex module using Class1 messaging with the Generic Device Ethernet/IP driver for the Virtual IO Module.

Introduction

The 1756-PowerFlex (this example uses the PowerFlex70 via 20-COMM-E or PowerFlex70E) interfaces with Ethernet/IP other PowerFlex modules such as the 700 may require minor modifications. This communications path uses an implicit Class1 I/O connection (as specified by the Rockwell EDS file for the device) for the data to be transferred. The EDS file may be obtained from the Rockwell web site (http://www.ab.com/networks/eds/). Every PowerFlex module requires a separate Class1 connection, and must have a slot ID (0-31) assigned.

VIM Configuration

This section provides information for configuring PowerFlex70 connection to the VIM. It assumes the user is familiar with configuring the VIM using the VimNet Explore Utility. This device requires one Class1 connection for each PowerFlex module in the rack. The Class 1 message definition will be discussed below.

Class 1 Messages:

Open the VimNet Explorer. If the appropriate configuration is not already loaded, create a configuration containing the VIM and PowerFlex module (device) under the VIM. Right click on the “EthernetIP Connection Library” leaf in the navigational panel on the left of the display. Select “Add Connection Definition” or “Import Connection Definition” to load the PowerFlex70 default “.vdf” file (Figure 1).

The “Add Connection Definition” (Figure 2) will automatically open the connection definition edit dialog. If importing, you must select the definition to be modified (right click on the definition and select “Properties”). This opens the “VIM_EtipBufferMapping” Utility shown in Figure 2. This is the utility that allows the configuration of the connection between the VIM and the PowerFlex I/O module.

The connection definition dialog is comprised of several areas. The upper left corner has the Library Name and Version. These are used to uniquely identify a connection definition. Below this is the Ethernet/IP buffer definition. This includes the radio buttons to specify the message type (must be class1 for this device), and the message buffer sizes. Below this are the base dataset definition (one dataset is required for each PowerFlex) and a grid containing the remaining datasets for the connection.

The right side of the dialog has three grids; the top allows the mapping of the input buffer into the specified datasets, while the middle grid allows the mapping of the output buffer. The bottom grid is not necessary for this application.

You must enter a new name in the “Library Name” field. This is the name that will be displayed in the VinNet Explorer library. The name must be unique to the library for each connection definition.

Make sure the message type radio button (Class1) is checked, the ENBT field is unchecked (Class1 client connection), and select the “MsgParameters” button to open the “SpecialData” utility (Figure 3). This utility allows you to enter or modify the necessary parameters to configure the actual Ethernet/IP Class1 connection. For the PowerFlex, other than the data size (output to target, and target to output) are fixed and should not be changed. The initial parameters may be read from the EDS file supplied by Rockwell.

In Figure 3, the PowerFlex 70 (0001007B00300200.eds) electronic data sheet is loaded and the “Discrete Exclusive Owner” connection is selected. When first imported only the editable fields are enabled, however if the properties are later examined all parameters are enabled. In either case, only modify the data size and RPI for output (Originator to Target) and input (target to Originator).

From the EDS file and PowerFlex EtherNet/IP Adapter 22-COMM-3 manual, (22comm-um004_-3n-p.pdf) file:

For this purpose output (O) is the VIM, target (T) is the PowerFlex module.

There are 2 connections available in the eds file (addressed by connection point or assemble instance):

Connection T->O

Discrete Exclusive Owner 1

CP Size

O->T 2 0-20 (default 4)*

T->O 1 4-24 (default 8)**

Size

Discrete Input Only 2 1

CP Size

O->T 2 0

T->O 1 4-24 (default 8)

*VIM supplies the 4-byte run/idle header

** includes an initial 4 byte status header and 0-20 bytes of data

The data in the input/output

The input and output data sizes are configurable based on the user defined parameters configured in the module. The definition file supplied (PowerFlex70.vdf) has all parameters configured and requires output size of 20 bytes, input of 24 (to include the 4-byte header).

Both OT and TO connections should be to “Scheduled” and Inhibition “Default." The OT connection should be “Point to Point” while TO should be “MultiCast." Make sure the OT connection has the “Run/Idle Header” checkbox checked and the TO does not (note if imported, the EDS file specifies a run/idle header for the TO side of the connetions, this is not required as the 4-byte status header is accounted for by the input buffer size, de-select if this is set). Next, set the RPI (requested packet interval) to the required interval. These are the expected time for the PowerFlex (TO) and VIM (OT) to send data messages. The Data size for both of these was set using the “VIM_EtipBufferMapping” utility.

Finally, the overall connection parameters are the “Use Slot Addressing” (unchecked), Transport Trigger, “Cyclic," and Timeout Multiplier (4). Configuration Connection should be 6.

If any value has been changed, the last step in the SpecialData words is to select “OK” to save these parameters into the current connection definition in the VIM_EtipBufferMapping” utility. To exit without modifying the definition, select “Cancel."

When all values are selected, the bytes of data defined and mapped (configured) to VIM datasets are displayed in the EtipBuffer section along with the current RPI for the input and output (Figure 4).

Figure 4

In the VIM_EtipBufferMapping” utility, select the datasets to map these connections to. Since the data is all either unsigned 16 bit register discrete data only one dataset is required. This is the “Base DataSet” as displayed in Figure 5. This dataset is configured as a 16-bit unsigned integer output (with read-back). This allows the connection to read and write discrete and unsigned integer data to one dataset.

Now you are ready to map the DeltaV datasets. Mapping is necessary as the input buffer for each module is specifically formatted, and some of the data is not necessary for DeltaV. This mapping also allows both input and output buffers to share the same dataset. The mapping is done in the top and middle grid on the right of the connection definition dialog. Both grids are edited in the same manor (Figure 6).

The first 4 bytes of the input buffer are the “header." This header is used by some systems to determine the state of the IO module, but DeltaV does not need this so select “Add” a mapping element. This opens a dialog that displays the next available DeltaV dataset elements. The type of element is show grayed, the default dataset is displayed and the next byte available for data (offset). The first element in the Ethernet/IP buffer is the header, to prevent this from being mapped into the DeltaV dataset, select the “Unmapped Bytes” checkbox. Finally, select the number of bytes for the header (4). Select “Ok” to accept this map element and return to the connection dialog.

The connection now has the first 4 byte header mapped (Figure 7). From this state, you can edit the current selection by selecting “Edit” or double clicking on the row, you can delete the currently selected row, or you can add another element.

For this module, you will now add the IO data definition mapping. Again use the “Add” button to open a mapping element definition. As before, this opens with default dataset is displayed and the next byte available for data (offset). This offset is specified in bytes, not DeltaV registers. The offset is zero (0) meaning the first byte of data that will be displayed in the dataset. As the default dataset is an unsigned 16 bit integer, this byte represents the first byte of the registers (there are 2 bytes per register). Select the number of bytes (1 is the minimum), 2 bytes will include the first status register, the remaining are added as either mapped or unmapped depending on whether user defined values are included.1

1The first 16 bit register assigned to the IO buffer of the PowerFlex module (both input and output consists of discrete status bits. In the Logix 5000 configuration utility these are configured as a single 16 bit tag and as 16 boolean tags, the actual data is transferred only as the 16-bit value.

The Ethernet/IP buffer must be mapped from the beginning, with no skipped bytes (see first and second column in Figure 7). The type of data (specified by the dataset selected is displayed in column 3, the specific dataset in column 4 and the offset into the dataset for the data from the specified location in the buffer (and number of bytes, in columns 5 and 6.

Figure 9

This definition may be documented in the VIM using the “Fields” button. The Fields dialog allow each register (or “Field” to be defined, along with the Byte in the mapping element starting at 0 for each element, the starting bit (if discrete or boolean field), and number of elements (registers elements). This is for documentation only, the information is not sent to the VIM but stored and displayed in the VimNet Explorer definition.

The PowerFlex70 module has 16 discrete fields comprising the first register, 1 register field for the Output frequency and 4 user-define values (one register each) as shown in this Logix configuration screen:

When you have entered the fields, you may edit (double click the row) or delete (button).

Select “OK” to return the mapping element dialog, then “Ok” again to return to the connection definition.

Finally, select the “OK” button in the connection definition dialog to return to VimNet Explorer with the new (or edited definition), or select “Cancel” to return without updating the definition.

To add this Class1 connection to the VIM configuration, select the Node, the specific VIM, card, port and device for the connection, then right click on the device and select “Add Connection."

In the dialog box, add a description and select the specific connection definition from the “Ethernet Device Definition” combo box. The connection is added to the list and the next available dataset(s) in DeltaV are assigned.

You can display this connection by selecting the plus (+) in front of it, and examine the definition of each assigned dataset here. When configuring the actual DeltaV datasets (DeltaV Explorer), you may use these definitions as a reference.

The top section of the detail panel show the configuration required for the specified DeltaV dataset (Figure 16), separated by tab (i.e., General Tab, DeltaV tag, etc.). The bottom portion (Figure17) shows any configured fields in the dataset, the name associated when the field was added to the buffer mapping along with the DeltaV register, or registers, as well as the bits (if this was assigned as a discrete (bit) field group).


Figure 17

Configuration is completed by uploading to the VIM. Communications to the device will not commence until both the VIM upload and DeltaV download to the VIM are complete.

DeltaV Configuration

The actual connection between the PowerFlex module in DeltaV is configured in VimNet Explorer. The DeltaV dataset(s) assigned in DeltaV Explorer may be on any card (57-60) / port (1-2) and device, but they must match the definition as specified in VimNet Explorer. Click on one of the datasets, all DeltaV parameters for the dataset are shown in the detail window.

One or more datasets are assigned to a connection as necessary. There is always at least one dataset to define a connection; the remaining datasets for the connection (if required) must immediately follow the first.

To start, use DeltaV Explorer to select the device. Right-click, and select “New Dataset” (Figure 19) to open the Dataset properties dialog. In the General tab (Figure 20), select the data direction of the connection data for this dataset. Since these are mapped datasets, if the dataset is to include output data, this will be “Output.” If it is to include input data, “Input.” may be used, if both select “Output” and check the “Output Read-back” box. It is best to set Output with read-back for all mapped datasets. Refer to the VimNet Explorer definition of the dataset for actual requirements. Output mode should be 0, as Class1 messaging transmits all IO data in each message.

The DeltaV tab (Figure 21) of the dataset property box is used to select the data type of the data that will be presented. This should be appropriate for the data that will be accessed in the PowerFlex module. If the data is floating point, only a floating point dataset in DeltaV is appropriate as noted above. Mapping of datasets in the connection allows this to be assigned separately from integer and bit registers.

Figure 21

On the PLC tab (Figure 22), the “Device data type” may be specified, but is not required. The first dataset associated with the connection is specified with a device data type of 39 (mapped EthernetIP Class1 client) on the PLC tab. Any remaining datasets (if necessary) are assigned 36 (EthernetIP extension data). In addition, the number of values on this tab will determine the size of the connection data read/written from this dataset. The number of registers in the associated datasets mapping elements determines the total data in both directions, by the data direction, type, and size in each dataset.

All words on the special data tab (Figure 23 should be 0 (any values here are ignored).

Finally, when all dataset connections to the VIM are configured in DeltaV, download to the cards in the VIM.

EDS file:

[File]

DescText = "PowerFlex 70 EC";

CreateDate = 06-23-2006;

CreateTime = 15:00:00;

ModDate = 05-15-2007;

ModTime = 17:00:00;

Revision = 1.3;

HomeURL = "http://www.ab.com/networks/eds/EN/0001007B00320300.eds";

[Device]

VendCode = 0x01;

VendName = "Rockwell Automation - Allen-Bradley";

ProdType = 0x7B;

ProdTypeStr = "DPI to EtherNet/IP";

ProdCode = 0x0032;

MajRev = 3;

MinRev = 1;

ProdName = "PowerFlex 70 EC";

Catalog = "20A... (with Enhanced Control)";

Icon = "PF70.ico";

[Device Classification]

Class1 = 1_RSNetWorx_Adapter;

Class2 = EtherNetIP;

[Port]

Port2 = TCP,

"EtherNet/IP port",

"20 F5 24 01",

2;

[Params]

Param1 =

0, $ first field shall equal 0

,, $ path size,path

0x0000, $ descriptor

2, $ data type : 16-bit Unsigned Integer

2, $ data size in bytes

"Output Size", $ name

"", $ units

"", $ help string

0,20,4, $ min,max,default data values

0,0,0,0, $ mult,dev,base,offset scaling not used

0,0,0,0, $ mult,dev,base,offset link not used

0; $ decimal places not used

Enum1 =

0, "0", 4, "4", 8, "8", 12, "12", 16, "16", 20, "20";

Param2 =

0, $ first field shall equal 0

,, $ path size,path

0x0000, $ descriptor

2, $ data type : 16-bit Unsigned Integer

2, $ data size in bytes

"Input Size", $ name

"", $ units

"", $ help string

4,24,8, $ min,max,default data values

0,0,0,0, $ mult,dev,base,offset scaling not used

0,0,0,0, $ mult,dev,base,offset link not used

0; $ decimal places not used

Enum2 =

4, "4", 8, "8", 12, "12", 16, "16", 20, "20", 24, "24";

[Connection Manager]

Connection1 =

0x04010002, $ trigger & transport

$ 0-15 = supported transport classes (class 1)

$ 16 = cyclic (1 = supported)

$ 17 = change of state (0 = not supported)

$ 18 = on demand (0 = not supported)

$ 19-23 = reserved (must be zero)

$ 24-27 = exclusive owner

$ 28-30 = reserved (must be zero)

$ 31 = client 0 (don't care for classes 0 and 1)

0x44244405, $ point/multicast & priority & realtime format

$ 0 = O=>T fixed (1 = supported)

$ 1 = O=>T variable (0 = not supported)

$ 2 = T=>O fixed (1 = supported)

$ 3 = T=>O variable (0 = not supported)

$ 4-7 = reserved (must be zero)

$ 8-10 = O=>T header (4 byte run/idle)

$ 11 = reserved (must be zero)

$ 12-14 = T=>O header (4 byte run/idle)

$ 15 = reserved (must be zero)

$ 16-19 = O=>T point-to-point

$ 20-23 = T=>O multicast

$ 24-27 = O=>T scheduled

$ 28-31 = T=>O scheduled

,Param1,, $ O=>T range,default,description (sizes in bytes)

,Param2,, $ T=>O range,default,description (sizes in bytes)

,, $ config part 1 (private configuration)

,, $ config part 2 (module configuration)

"Discrete Exclusive Owner", $ connection name

"", $ Help string

"20 04 24 06 2C 02 2C 01"; $ path

1_PLC5C_RTD_Format1 = 1_PLC5C_1794_Discrete_RTD_Format;

Connection2 =

0x02010002, $ trigger & transport

$ 0-15 = supported transport classes (class 1)

$ 16 = cyclic (1 = supported)

$ 17 = change of state (0 = not supported)

$ 18 = on demand (0 = not supported)

$ 19-23 = reserved (must be zero)

$ 24-27 = input only

$ 28-30 = reserved (must be zero)

$ 31 = client 0 (don't care for classes 0 and 1)

0x44244405, $ point/multicast & priority & realtime format

$ 0 = O=>T fixed (1 = supported)

$ 1 = O=>T variable (0 = not supported)

$ 2 = T=>O fixed (1 = supported)

$ 3 = T=>O variable (0 = not supported)

$ 4-7 = reserved (must be zero)

$ 8-10 = O=>T header (4 byte run/idle)

$ 11 = reserved (must be zero)

$ 12-14 = T=>O header (4 byte run/idle)

$ 15 = reserved (must be zero)

$ 16-19 = O=>T point-to-point

$ 20-23 = T=>O multicast

$ 24-27 = O=>T scheduled

$ 28-31 = T=>O scheduled

,0,, $ O=>T range,default,description (sizes in bytes)

,Param2,, $ T=>O range,default,description (sizes in bytes)

,, $ config part 1 (private configuration)

,, $ config part 2 (module configuration)

"Discrete Input Only", $ connection name

"", $ Help string

"20 04 24 06 2C 02 2C 01"; $ path

1_PLC5C_RTD_Format2 = 1_PLC5C_1794_Discrete_RTD_Format;

[Capacity]

TSpec1 = TxRx, 2, 400;

TSpec2 = TxRx, 40, 400;

MaxCIPConnections = 16;

MaxConsumersPerMcast = 1;