发布时间: 2026-01-30
Codesys与两台机器人进行EIP通讯
1. 简介
EtherNet/IP 是一种基于以太网技术的工业自动化网络协议,是以太网技术在工业领域的应用。它是由罗克韦尔自动化公司(Rockwell Automation)开发的,是一种开放的网络标准,可以用于连接各种各样的设备,如 PLC、传感器、执行器、HMI 等。
EtherNet/IP 协议基于 TCP/IP 协议栈,采用了面向连接和面向无连接的通信方式,可以实现高速的数据传输和实时的控制。它可以支持 10Mbps、100Mbps和 1000Mbps 三种传输速率,距离可以达到 100 米或更远。同时,EtherNet/IP还具有很强的灵活性和可扩展性,可以支持多种拓扑结构和协议适配器。
EtherNet/IP 协议的主要特点包括:
高速传输:EtherNet/IP 可以支持多种传输速率,可以满足不同应用场景的需求。
实时性强:EtherNet/IP 可以实现高速数据传输和实时控制。
灵活性强:EtherNet/IP 可以支持多种拓扑结构和协议适配器。
易于集成:EtherNet/IP 是一种开放的网络标准,可以与各种各样的设备集成使用。
可扩展性强:EtherNet/IP 可以通过加入新的协议适配器和功能模块来扩展网络功能。
安全性好:EtherNet/IP 支持多种安全机制,如 VLAN、VPN、IPsec 等
EC 系列产品支持以太网/IP 从站应用。 如果控制器作为从设备运行,则无需进行其他置。
在通信配置过程中可能使用的术语描述如下:
1.Originator: 向从站发起连接请求的一方,一般是主站或客户端设备。
2.Target:终端节点或者是从站设备,被请求建立连接的一方。
3.O->T:指示发起者到目标节点的方向,用于描述数据报由主站发送到从站。
4.T->O:指示从目标到发起者的方向,用于描述数据报由从站发送到主站。
5.RPI: Requested Packet Interval, 数据报的请求周期,单位为 ms。
6.Connection Timeout Multiplier: 其值表示的乘数与 RPI 相乘得到数据报传输的超时间,一般由主站设置。
7.point to point: 一种主从站的连接类型,点对点连接。
8.Multicast:一种主从站的连接类型, 由一个从站对多个主站传播。(目前暂不支持这种链接)。
9.EDS: Electronic Data Sheet,一种包含从站所有配置信息的文件,主站必须读取这个配置文件才能生成对从站的正确请求报文。
Ethernet/IP 部分寄存器被划分为11 个组(也称 slot),每个 slot 实质是一个 Ethernet/IP 连接,且都包含有 O->T与 T->O 两个方向的数据,其中只有一个方向上承载的数据为有效数据,而寄存器数据最终会在哪一个方向传输取决于寄存器的实际意义。如从控制器的视角,所有类型的输出寄存器会在T->O 方向传输,此时另一个方向 O->T存的意义可以认为是对 T->O 方向数据的确认;相对的,所有类型的输入寄存器会在 O->T 方向传输具体每个 slot 讲义如下(具体可参照 elite 通讯手册)
Adapter Slot 0: 32 个 32 位 int 输出寄存器,地址范围 [0,31] 传输方向 T->O(elite--codesys)
Adapter Slot 1: 32 个 32 位 int 输入寄存器,地 址范围 [0,31] 传输方向 O->T(codesys--elite)
Adapter Slot 2:寄存器类型 32 个 float 输 出寄存器,地址 范围 [0,31] 传输方向 T->O(elite--codesys)
Adapter Slot 3: 寄存器类型 32 个 float 输 入寄存器,地址 范围 [0,31] 传输方向 O->T(codesys--elite)
Adapter Slot 4 寄存器类型 52 个 float 输 入寄存器,地址 范围 [0,51]
主要包含机器人位置速度等信息
传输方向 T->O(elite--codesys)
Adapter Slot 5 寄存器类型 4 个 32 位状态 寄存器,地址范 围 [0,3]
主要包含系统输入输出数字 IO 状态
传输方向 T->O (elite--codesys)
Adapter Slot 6 寄存器类型 8 个 32 位状态 寄存器,地址范 围 [0,7]
主要包含系统模拟量输入输出值
传输方向 T->O(elite--codesys)
Adapter Slot 7 寄存器类型 18 个 32 位状 态寄存器,地址 范围 [0,17] 主要包含安全参数状态及值
传输方向 T->O(elite--codesys)
Adapter Slot 8 寄存器类型 46 个 32 位状 态寄存器,地址 范围 [0,45] 主要包含时间等信息
传输方向 T->O (elite--codesys)
Adapter Slot 9 寄存器类型 64 个 8 位状态 寄存器,地址范 围 [0,63]
主要包含输入 M 变量,M912 开始
传输方向 O->T(codesys---elite)
Adapter Slot 10
寄存器类型 64 个 8 位状态 寄存器,地址范 围 [0,63] 主要包含输出 M 变量,M400 开始传输方向 T->O(elite--codesys)
2. 配置及验证步骤
2-1.硬件接线与网络配置
这里网线连接采用了交换机,参考下图
机器人1、2与电脑需要在同一网段,并且不同地址,如图
电脑IP:192.168.1.202
机器人1IP:192.168.1.200
机器人2IP:192.168.1.201
2-2. codesys配置及使用步骤
2-2-1.新建工程
打开 codesys 软件,点击新建程序,如下所示
选择 project-Empty project,可根据需要命名,点击确定
2-2-3.安装EDS文件
加载安装 elite 的EDS 文件,在 Codesys 菜单栏-工具-设备存储库,点击安装,导入附件中对应 EC 机器人 eds 文件。导入后文件会出现在 EthernetIP 总线下,同时显示文件已经安装到设备存储库
2-2-4.添加设备
选择新建设备 Untitled1,右键点击添加设备,选择对应的 CODESYS Control Win V3 X64 中的 PLC,点击添加设备
选择新建的 PLC,点击右键选择添加设备
2-2-5.设备配置
选择现场总线--EthernetIP--以太网适配器--Ethernet,点击右下角添加设备
选择设备栏 Ethernet(Ethernet),点击右键选择添加设备,选择 Ethernet/IP Scanner,点击右下角添加设备
选择 Ethernet/IP Scanner,点击右键选择添加设备,选择 Elite Robot,点击右下角添加设备
将 EC 机器人设备添加后,点击 Elite Robot,选择通用设置从站(机器人)IP地址,与机器人 IP 地址一致,如下图所示(重复两次,添加2台机器人)
2-2-6.启动PLC
找到电脑右下角图标处,右键选中,Start PLC
双击 CODESYS Control Win V3 X86 设备,进入通讯设置,选择对应电脑名称,扫描设备
2-2-7.设置主站IP
设置 Ethernet 主站 IP 地址,双击 Ethernet,选择通用中的“...”,选择对应的以太网,如下图所示
2-2-8.组态机器人模块
选择 Elite Robot 模块进行配置,选择连接,根据需要添加连接,这里连接 Adapter Slot 0、1、2、3、4、9、10,包含 INT 输入输出寄存器、Float 输入输出寄存器、位置信息寄存器及 M 虚拟输入输出(通讯类型选择组播)
2-2-9.程序编译及下载
配置完成后就可以编译程序、下载程序已经模块使能了,如下图
2-2-10.运行与测试
下载完成后就可以运行程序了
通讯正常后左侧任务栏会出现绿色的图标,代表通讯正常
机器人导入脚本并运行,关联各 5 个 INT 输入输出和 Float 输入输出,脚本如下所示(具体释义可参考 LUA 脚本手册)
while (1) do
---------------EIP-INT输入寄存器------------------------
a=get_eip_int_input_registers (0,10)--QD68/QD72-不同plc对应不同
if a~=nil then
set_global_variable ("I0", a[1])--INT输入寄存器0
set_global_variable ("I1", a[2])--INT输入寄存器1
set_global_variable ("I2", a[3])--INT输入寄存器2
set_global_variable ("I3", a[4])--INT输入寄存器3
set_global_variable ("I4", a[5])--INT输入寄存器4
set_global_variable ("I5", a[6])--INT输入寄存器5
set_global_variable ("I6", a[7])--INT输入寄存器6
set_global_variable ("I7", a[8])--INT输入寄存器7
set_global_variable ("I8", a[9])--INT输入寄存器8
set_global_variable ("I9", a[10])--INT输入寄存器9
end
--------------EIP-INT输出寄存器-----------------------------
b0=get_global_variable ("I10")
b1=get_global_variable ("I11")
b2=get_global_variable ("I12")
b3=get_global_variable ("I13")
b4=get_global_variable ("I14")
b5=get_global_variable ("I15")
b6=get_global_variable ("I16")
b7=get_global_variable ("I17")
b8=get_global_variable ("I18")
b9=get_global_variable ("I19")
set_eip_int_output_registers (0,10,{b0 , b1 , b2 , b3 , b4 , b5 , b6 , b7 , b8 , b9})--INT输出寄存器0-9数值为b0-b9
--------------EIP-Float输入寄存器-----------------------------
c=get_eip_float_input_registers(0,10)--QD196/QD200
if c~=nil then
set_global_variable ("D0", c[1])--float输入寄存器0
set_global_variable ("D1", c[2])--float输入寄存器1
set_global_variable ("D2", c[3])--float输入寄存器2
set_global_variable ("D3", c[4])--float输入寄存器3
set_global_variable ("D4", c[5])--float输入寄存器4
set_global_variable ("D5", c[6])--float输入寄存器5
set_global_variable ("D6", c[7])--float输入寄存器6
set_global_variable ("D7", c[8])--float输入寄存器7
set_global_variable ("D8", c[9])--float输入寄存器8
set_global_variable ("D9", c[10])--float输入寄存器9
end
--------------EIP-Float输出寄存器-----------------------------
d0=get_global_variable ("D10")
d1=get_global_variable ("D11")
d2=get_global_variable ("D12")
d3=get_global_variable ("D13")
d4=get_global_variable ("D14")
d5=get_global_variable ("D15")
d6=get_global_variable ("D16")
d7=get_global_variable ("D17")
d8=get_global_variable ("D18")
d9=get_global_variable ("D19")
set_eip_float_output_registers (0 ,10 ,{d0 , d1 , d2 , d3 , d4 , d5 , d6 , d7 , d8 , d9})--float输出寄存器0-9数值为d0-d9
sleep(0.2)
end
2-2-10.数据验证
Elite_Robot--EtherNET/IP IO 映射,机器人当前位置信息 Adapter Slot 4,将机器人当前基座信息发送到 Adapter Slot 4 变量中
Float 输出,将机器人数值发送到 codesys 变量,D010-D014 关联到 Adapter Slot 2 输出前 5 个数值,数据变化一致
Float 输入,将 codesys 数值发送到机器人变量,D000-D004 关联到 Adapter Slot 3 输入前 5 个数值,数据变化一致
INT 输出,将机器人数值发送到 codesys 变量,I010-I014 关联到 Adapter Slot 0 输入前 5 个数值,数据变化一致
INT输入,将codesys数值发送到机器人变量,I000-I004关联到Adapter Slot
1 输出前 5 个数值,数据变化一致
M 虚拟输入,将 Codesys 的 Bool 数值发送到机器人 M 虚拟输入变量,M912开始的 M 关联到 Adapter Slot 9 输出的 Bool 值(具体参考 Adapter Slot 9 定义数值),数据变化一致
M 虚拟输出,将机器人 M 虚拟输入变量数值发送到 Codesys 的 BOOL 值,M400开始的 M 关联到 Adapter Slot 10 输入的 BOOL 值(具体参考 Adapter Slot 10 定义数值),数据变化一致
3. 常见问题解答
设置主站IP的时候不成功、页面提示“没有到设备的连接,请重新扫描网络”
答:需要先打开PLC,再进行主站加载
其中有一台机器人通讯不成功,状态栏一直红色报警
答:检测一下机器人IP与电脑是否在同一网段,ping能否ping通,配置页面是否有设置对应的机器人IP.
通讯都正常了就是读取不到任何数据
答:检测一下通讯使能是否有打开,没有打开的情况下需要打开使能
输入了预备值当前值没有变化
答:需要在调试页面进行手动写入值