EtherNet/IP - Sample Applications

Several sample applications are provided for port’s EtherNet/IP protocol stack. They show how to set up and use the stack. The following examples can be found in the folder goal/appl/goal_eip/

  • 00_rpc_cc – communication core application (for multicore targets only)

  • 01_simple_io – simple IO application

  • 02_dlr_dhcp – simple IO application with DHCP and DLR support.

  • 03_dhcp – simple IO application with DHCP support

  • 04_parameter – sample application with parameter

  • 05_acd_dhcp – simple IO application with Address Conflict Detection and DHCP

The sample application can be found in the file goal_app_eip.c, located in the example folders except 00_rpc_cc. It sets the serial number to 123456789 and creates several assemblies and defines connections.

Assembly Instance 150 is an Output Assembly. It contains data received from a PLC. The first byte will be mirrored to the target’s LEDs. The second byte will be mirrored to second byte of Assembly Instance 100.

Assembly Instance 100 is an Input Assembly. It contains data that is sent to the PLC. Before it is sent the status of the target’s buttons are mapped to the first byte and the second byte of Assembly Instance 150 is mirrored.

The application folders also contain an EDS file that can be used by an EtherNet/IP Scanner.

By altering goal_app_eip.c changes to the assembly instances created, their size or what is done with their data are possible.

Default Identity

The identity Information of the CC is configured after startup and can be changed via API. It uses the following default values:

 

Table: Default identity values

Vendor ID

1114 (port GmbH)

Device Type

43 (Generic Device (keyable))

Product Code

1

Revision

1.1

Product Name

EtherNet/IP Adapter

 

 At first start up or after a factory reset the device

  • either issues DHCP requests to obtain an IP address. The device is only operable after a valid IP configuration was received from a DHCP server, if DHCP support is enabled;

  • or returns to the default IP address defined by GOAL_CONFIG_NET_ADDR_IP_DEFAULT (default value: 192.168.0.100), if DHCP support is not enabled.

Configuring the sample application

Changing MAC Address

The default value of the board MAC address is 02:00:00:00:00:01.

Single-Core

MAC address can be changed by the application using the function goal_miEthCfgMacAddr(). This function keeps the user MAC address and applies it automatically, when Ethernet handler is open by GOAL in stage GOAL_STAGE_ETH_PRE.

Setting the MAC is done in appl_init() in general, as shown in the following example.

 

Code: example for configuring the user MAC

#define APPL_ETH_MAC_ADDR { 0x45, 0x33, 0xab, 0x00, 0x00, 0xFF } GOAL_STATUS_T appl_init     void ) {     GOAL_ETH_MAC_ADDR_T macAddress = GOAL_ETH_MAC_ADDR; /* mac address */     /* Configure the user MAC */     res = goal_miEthCfgMacAddr(0, GOAL_MI_ID, &macAddress);     if (GOAL_RES_ERR(res)) {         goal_logErr("failed to set MAC");     }     return res; }

Board hardware, like DIP switches or NVS, will not be available when calling appl_init(). If the user MAC requires one of these features, calling goal_miEthCfgMacAddr() in another startup stage of GOAL is also possible. But the user has to register the stage callback by goal_mainStageReg() first.

Please note https://portgmbh.atlassian.net/wiki/spaces/GOALR/pages/191562110 for further information.

Multi-Core

MAC address can be changed either by Communication Core as described in section Single-Core or by Application Core as followed.

Modifications in Communication Core project

Set GOAL_CONFIG_MEDIA_MI_ETH=1 in project configuration to delay opening the ETH interface until protocol instance is going to be created from AC.

Modifications in Application Core project

Call goal_miEthCfgMacAddr() in appl_setup prior creating the network protocol instance.

 

Code: example for configuring the interface MAC from AC

#define APPL_ETH_MAC_ADDR { 0x45, 0x33, 0xab, 0x00, 0x00, 0xFF } GOAL_STATUS_T appl_setup( void ) { GOAL_STATUS_T res; /* result */ GOAL_ETH_MAC_ADDR_T mac = APPL_ETH_MAC_ADDR; /* mac address */ /* set Interface MAC at CC */ goal_miEthCfgMacAddr(0, GOAL_MA_ID_ETH, &mac);

Changing IP Address

Some of the applications providing a DHCP client. In order to change the IP address of these applications, please reconfigure the DHCP server.

All other applications start with a static IP address, which is extracted from stored GOAL CM-variables by bootup. If no valid IP address has been set in GOAL’s CM-variables before, GOAL_CONFIG_NET_ADDR_IP_DEFAULT is used instead. Please see https://portgmbh.atlassian.net/wiki/spaces/GOALR/pages/236355831 for further information.

Changing the IP address via CIP is always possible. The TCP/IP Interface Object Attribute 3 has to be set to 0 (use static IP Address). Afterwards the IP address of the device is configurable by TCP/IP Interface Object Attribute 5.