Skip to content

网关服务操作指南


一、 Profinet 通信使用说明

1. 环境配置

(1) 硬件网关
电压:12V~24V
电流:0.5A~1A

(2) 博图软件
版本:TIA Portal V16

(3) GSD文件
GSDML-V2.41-AUBO-irj45-20230720.xml

(4) 硬件 PLC
S7-1200 CPU 1214C DC/DC/DC 6ES7 214-1AG

(5) 软件IP设置
需要确保ARCS软件—工业网关配置—PLC地址处于同一网段,可在设置—系统—网络界面设置,若网关配置使用默认配置,可使用下图参数。

(6) 网关服务配置文件说明

ICM 服务进程配置文件默认存储在 /root/arcs_ws/config/aubo_icm.conf 中,里面包括一些网关使用过程的必要配置,使用前可对其进行设置,具体选项如下:

注意:网关的配置为默认设置,可根据实际情况修改设置,例如,Profinet 通讯的 IP 和站名一般由博图等软件进行设置,配置一般不用改动,可直接使用。

配置项说明:

配置项描述默认值是否必需
protocolType协议类型:
1:Profinet
2:Ethernet/IP
3:EtherCAT
1
littleEndian数据存储格式:0:大端,1:小端;0
ipAddr网关模块 IP;192.168.0.100
netmask网关模块掩码;255.255.255.0
gateway网关模块网关;192.168.0.1
port网关模块端口;505
protocolMode协议模式:
1 min mode
2 standard mode
3 custom mode;
2
pnCoilNumber线圈数量;64
pnRegisterNumber寄存器数量;32
controlRobot控制机器人关键字: 0 不可控制, 1 可控制机器人工程开启、暂停等功能。控制工程启动时,需判断机械臂是否在准备点;1
readyPointIO机械臂是否在准备点;0
portName控制柜设备串口号: /dev/ttyS*(若通过 usb 连接控制柜,可通过命令 ls /dev/ttyU* 查看当前串口号,若使用其他485串口如iS控制柜、改进型控制柜上的九针RS485口串口号配置为:/dev/ttyS2,新C控制柜丝印A1、B1对应RS485口为:/dev/ttyS0,S、ES系列为:/dev/ttyS7)/dev/ttyUSB0
slaveId从站编号;1
baudrate波特率;115200
dataBit数据位;8
parity奇偶校验;none
stopBit停止位;1
controlRobotInManualMode是否在手动模式下控制机器人;1

2. 网关接线介绍

2.1 网关各硬件模块简介

备注:该硬件模块支持 Profinet、Ethernet/IP、EtherCAT 三种工业协议,根据软件进行选择使用,参见【ICM 网关服务配置文件】。

各接口模块说明:

  • 模块1: 指示灯,蓝色表示连接成功;
  • 模块2: WLAN3,内部微控制器网口,预留;
  • 模块3: WLAN2,WLAN1,工业协议双端口,WLAN1连接 PLC,WLAN2连接博图软件所在电脑;
  • 模块4: 电源(DC,12V~24V);
  • 模块5: RS485 总线,与控制柜通信;
  • 模块6: CANFD,内部微控制器预留;

2.2 硬件接线图

image-20240910182045282

(1) 电源线(红正黑负),图中直接从机械臂控制柜供电;
(2) usb 转 485 通讯线,现场使用需使用屏蔽线,金属外壳接地;
(3) 正确接线,通电后硬件网关的 绿灯 (如上图中的网关绿灯状态)亮起;网关与 PLC 连接成功,并可以正常通信,硬件网关的 蓝灯 亮起。

3. 网关与 PLC 通信配置

此处的配置以 Profinet 协议为例,其它协议的配置类似;

3.1 PLC 新建 Profinet 工程

双击打开博图软件,进入主页面,选择【开始】->【创建新项目】,如下图所示,并按照步骤标注操作。

3.2 西门子型号与版本配置

在新建的工程下双击【添加新设备】->【控制器】/CPU/CPU 1214C DC/DC/DC 6ES7 214-1AG40-0XB0,如下图所示选择。核对信息后【确定】。

3.3 PLC 设置

搜索机械臂设备站 打开工程,【在线访问】->【电脑网卡名称】,双击【更新可访问的设备】,如下图所示:

3.4 网关 IP 与设备站配置

双击【在线和诊断】,如下图所示操作步骤,分别配置 IP 地址、设备站名称。

注:若显示的有默认 IP 地址和设备站名称,应该是之前进行过设置,查看 IP 和名称没有问题后,可跳过该步骤(2.4)继续往后操作;

分配网关 IP 地址

分配网关设备站名称

3.5 PLC 导入 gsd 文件

在博图软件菜单栏【选项】->【管理通用站描述文件(GSD)】,如下图所示:

注:GSD 文件由 AUBO 开发提供,可以找相关工程师获取较新版本。

安装成功如下图所示提示,安装成功后【关闭】即可,如下图:

3.6 PLC 组态

双击【设备组态】->点击【网络视图】->【其它现场设备】->【IO】->【AUBO Robot】-> 双击【AUBO_Module】,如下图所示:

添加成功如下图所示:

单击未分配,选择②,如下图所示:

组态成功如下图所示:

通信设置:
双击 AUBOIODEV1 中 Ethernet 端口,如下图标注:

槽模块添加:
双击【模块】中的各个槽,在界面右侧【模块】中,双击 1-6 个槽,添加到设备,如下图所示:

配置 AUBOIODev1 的 IP :
双击 Ethernet 端口,选择【以太网地址】,设置网关设备站IP 地址,设置设备站名称,如下图所示:

推荐 IO 周期设置:

PLC IP 配置:

单击【网络视图】->单击 PLC【Ethernet】端口,选择【以太网地址】,设置 PLC 的 IP 和设备名称,如下图所示:

3.7 保存项目 > 编译 > 下载 > 装载

所有配置完成,保存项目,操作①~⑤,编译 -> 下载,搜索设备,下载;如下图所示步骤:

注意:若步骤④【开始搜索】置灰,请检查 AUBO 机械臂站名设置是否一致。根据提示一步步操作,直到出现【装载】。

3.8 运行并转至在线

将 PLC 切换至运行模式,点击【转至在线】,如下图所示执行步骤:

PLC 与网关设备站连接成功,界面全部呈绿色连接状态,如下图所示:

4. PLC 与控制器通信

4.1 功能简介

硬件网关作为不同协议间转换的中转设备,一端通过 RS485 连接机器人控制器,一端连接 PLC 设备,使得 PLC 可以读取机器人 IO 状态、位姿信息、线圈和保持寄存器等数据内容,同时可以通过控制工程实现机器人工程的启动、暂停、继续、停止等功能。目前网关支持 Profinet、Ethernet/IP、EtherCAT 三种协议类型,本次测试使用 Profinet 协议类型。

通信示意图:

4.2 ICM 使用方法

4.2.1 ICM 启停

网关服务 ICM 作为后台进程与 PLC 进行数据交换,使用 ICM 需导入 OEM 包,安装方式请参考 如何安装OEM包 ,安装完成并重启设备后,会重新启动ICM,ICM实现了自启动功能,也可通过手动方式进行启动暂停,命令如下:

  • ICM 运行日志查看命令: tail -f /root/arcs_ws/log/icm/aubo_icm.log

  • ICM 通信日志查看命令: tail -f /root/arcs_ws/log/icm/icm_register.log

  • ICM 服务启动命令: systemctl start aubo_icm

  • ICM 服务停止命令: systemctl stop aubo_icm

  • ICM 服务重启命令: systemctl restart aubo_icm

  • ICM 状态查看指令: systemctl status aubo_icm

网关正常运行时,使用命令: systemctl status aubo_icm ,输出信息如下:

4.2.2 日志显示

(1) ICM 日志文件

ICM 服务程序日志系统用于记录程序执行的相关信息,默认存储在目录 root/arcs_ws/log/icm/ 中,日志包括两种:

  • aubo_icm.*.log 存放的是 ICM 的运行日志;
  • icm_register.*.log 存放的是 ICM 的通信日志;

(2) ICM 的运行日志

root/arcs_ws/log/icm/aubo_icm.log 内容如下:

运行日志解释说明:

  • 出现 ICM is Running 时,表示 ICM 服务进程启动成功;
  • 出现 Run program 时,表示 PLC 控制机器臂执行“开始程序”动作,其它动作的日志类似;

(3) ICM 的通信日志

root/arcs_ws/log/icm/icm_register.log 内容如下:

运行日志解释说明:

  • plc set bool input 0: 0 ==> 1 表示 PLC to Robot 使用 getBoolInput(0) 读取 PLC slot_5 起始地址第一个 bool 量, 原值为0,读取到的值为1;
  • plc set int16 register 0: 100 ==> 200 表示 PLC to Robot 使用 getInt16Register(0)读取 PLC slot_5 的第9个字节开始的第一个 word(16Bit) 量,原值为100,读取的值为200;
  • robot bool output 0 changed: 0 ==> 1 表示 Robot to PLC 使用 setBoolOutput(0,true),将 PLC slot_4 起始地址第一个 bool 量(原值为 false )置为 true;
  • robot int16 register 32 changed: 183 ==> 381 表示Robot to PLC 使用 setInt16Register(32,381),将 PLC slot_4 保持寄存器 ( slot_4 第9个字节作为保持寄存器起始地址) 第一个数据(原值为 183 )写入值381;

示教器日志显示

使用 PLC 控制工程的相关操作会把日志显示在示教器的日志界面中,目前支持上电、启动机器人、启动工程、暂停工程、继续工程、停止工程等,具体内容需要参考最新的协议;日志显示如下:

日志解释说明:

例如:Debug message signal: HoldingRedister addr:0 value:3 action: startup

表示控制器端在地址为0的保存寄存器中接收到 PLC 端传输的信号值“3”,触发了控制器端的上电动作;

注:当 PLC 读取数据失败时,可通过查看日志系统进行确认。

5 PLC 与 控制器通信示例

本次通信使用 Profinet 协议,PLC 与机械臂进行通信包括的内容有

  • 机械臂 IO 状态(slot_1)

  • 机械臂位姿(slot_2)

  • 机械臂关节电流电压温度(slot_3)

  • 线圈保持寄存器(slot_4、slot_5)

  • 控制工程(slot_6)

其中 slot_1、slot_2、slot_3 可通过 PLC 直接进行读取,slot_6可通过 PLC 直接进行写入,slot_4、slot_5 线圈和保持寄存器的内容, 通过 ARCS 系统脚本调用的方式实现,具体使用方法如下文;

注:协议会更新,请联系工程师获取最新的协议(Profinet、Ethernet/IP、EtherCAT );

线圈
slot_4、slot_5 中前8个字节作为线圈(bool量)使用,第9个字节开始作为保持寄存器使用
(1) PLC to Robot
bool0 = getBoolInput(0),读取 PLC slot_5 起始地址第一个 bool 量,并保存在变量 boll0 中

(2) Robot to PLC
setBoolOutput(0,true),将 PLC slot_4 起始地址第一个 bool 量置为 true。

保持寄存器
(1) PLC to Robot
tmp1 = getInt16Register(0),机器人读取 PLC slot_5 的第9个字节开始的第一个 word(16Bit) 量,并保存在变量tmp1 中。

(2) Robot to PLC
setInt16Register(32,3),将 PLC slot_4 保持寄存器 ( slot_4 第9个字节作为保持寄存器起始地址) 第一个数据写入值3,其中 setInt16Register 的起始地址为 32。

PLC 端读写数据

在博图软件中根据 Profinet 地址协议对 PLC 中的地址进行读操作和写操作,如下图示例:

注意:该图中监控的地址是测试时根据协议地址表随意填写的,实际应用中根据实际情况更改;

二、 EIP 通信使用说明

1. 环境配置

(1) 硬件网关
电压:12V~24V
电流:0.5A~1A

(2) AutoShop 软件
版本:V4.10.0.0

(3) EDS 文件
eip_AuboRobot_v1.0.1.eds

(4) 硬件 PLC
汇川 Easy 521

(5) 网关服务配置
ICM 服务进程配置文件默认存储在 /root/arcs_ws/config/aubo_icm.conf 中,里面包括一些网关使用过程的必要配置,使用前可对其进行设置,EIP 通信的具体配置如下:

配置项描述默认值是否必需
protocolType协议类型:
1:Profinet
2:Ethernet/IP
3:EtherCAT
1
littleEndian数据存储格式:0:大端,1:小端;0
ipAddr网关模块 IP;192.168.0.100
netmask网关模块掩码;255.255.255.0
gateway网关模块网关;192.168.0.1
port网关模块端口;505
protocolMode协议模式:
1 min mode
2 standard mode
3 custom mode;
2
pnCoilNumber线圈数量;64
pnRegisterNumber寄存器数量;32
controlRobot控制机器人关键字: 0 不可控制, 1 可控制机器人工程开启、暂停等功能。控制工程启动时,需判断机械臂是否在准备点;1
readyPointIO机械臂是否在准备点;0
portName控制柜设备串口号: /dev/ttyS*(若通过 usb 连接控制柜,可通过命令 ls /dev/ttyU* 查看当前串口号,若使用其他485串口如iS控制柜、改进型控制柜上的九针RS485口串口号配置为:/dev/ttyS2,新C控制柜丝印A1、B1对应RS485口为:/dev/ttyS0,S、ES系列为:/dev/ttyS7)/dev/ttyUSB0
slaveId从站编号;1
baudrate波特率;115200
dataBit数据位;8
parity奇偶校验;none
stopBit停止位;1
controlRobotInManualMode是否在手动模式下控制机器人;1

2. 网关接线

2.1 网关各硬件模块简介

各接口模块说明:
•模块1: 指示灯,蓝色表示连接成功;
•模块2: WLAN3,内部微控制器网口,预留;
•模块3: WLAN2,WLAN1,工业协议双端口,WLAN1连接 PLC,WLAN2连接博图软件所在电脑;
•模块4: 电源(DC,12V~24V);
•模块5: RS485 总线,与控制柜通信;
•模块6: CANFD,内部微控制器预留;

2.2 硬件接线图

(1) 电源线(红正黑负),图中直接从机械臂控制柜供电;
(2) usb 转 485 通讯线,现场使用需使用屏蔽线,金属外壳接地;
(3) 正确接线,通电后硬件网关的 绿灯 (如上图中的网关绿灯状态)亮起;网关与 PLC 连接成功,并可以正常通信,硬件网关的 蓝灯 亮起。

3. 网关与PLC通信

3.1 PLC 新建 EIP 工程

双击打开 AutoShoop 软件,进入主页面,选择【File】->【New Project】,如下图所示,并按照步骤标注操作,填写工程名称,并选择汇川 PLC 的型号 Easy521;

3.2 PLC 设置

选择【Tools】->【Communication】,通信类型选择 Ethernet0 ,地址填写 PLC 的IP地址,然后点击【Test】或者【Ping】看看网络是否连通,如果不通,则点击【Search】,软件会自动搜索局域网中可用的PLC设备;

根据搜索到的PLC设备,可将其目标PLC的IP地址填入【Device IP】中,点击【Test】或者【PING】,看看通信连接是否正常;

如下图所示,使用 Ping 命令后通信正常;

3.3 PLC 导入 EDS 文件

在 AutoShop 软件的右侧菜单栏【ToolBox】-> 【Ethernet/IP Device】,鼠标右键单击【Ethernet/IP Device】,会出现【Import EDS】,点击【Import EDS】导入事前准备好的 EDS 文件;如下图所示:

备注:EDS文件由 AUBO 开发人员提供,可以找相关工程师获取最新版本;

3.4 设备站网关 IP 设置

根据EDS文件生成 Ethernet/IP Device,双击右侧 ToolBox 中的【AuboRobot】,在左侧Project Manage中的 Ethernet/ip下会生成【Aubo_Robot】,单击【Aubo_Robot】对网关设备站进行相关设置,主要包括 IP AddressElectronic Keying; IP Address设置为网关的真实IP,就是在 ICM 的配置文件中配置的网关IP; Electronic Keying中的 keying Opetion 选择设置为 Exact Match,其它使用默认值即可,如下图所示:

3.5 保存项目 -> 下载 -> 运行 -> 监控

所有配置完成后,保存项目,然后点击【下载】-> 【运行】 -> 【监控】,如下图所示步骤:

将 PLC 切换至运行模式,点击【运行】 -> 【监控】后,左侧【Config】->【Ethernet/IP】,Ethernet/IP 和 Aubo_Robot都变为绿色,表示PLC 与网关设备站连接成功,并且能够正常通信;

添加监控的地址变量,在左侧点击【Variable Monitor Table】-> 【MAIN】,在 MAIN 表中点击【...】会弹出选择变量对话框【Variable Input Assistant】,然后点击【UserVar】->【SYS_EIP】选择分配地址;

SYS_EIP 里面的地址是根据 EDS 文件导入的,里面的地址是开发人员事先根据 EIP 地址表分配好的地址,这里的地址表跟开发人员提供的 EIP 的通信地址表对应;可以根据 EIP的地址表来选择相应的地址字段;

以下是根据EIP的地址表添加的一些监控地址,包括LO信号、位置X坐标、Joint6关节角、心跳、机器人状态、通用线圈(Robot => PLC)、通用寄存器(Robot => PLC)、通用线圈(PLC => Robot)、通用寄存器(PLC => Robot)、控制工程等等;

4. 网关与控制器通信

网关服务使用指南:https://docs.aubo-robotics.cn/application_notes/39-icm/

ICM 的运行日志 root/arcs_ws/log/icm/aubo_icm.log 内容如下:

运行成功标志:

  • 出现 RTDE Client Connect Successed时,表示网关与机器臂通信成功;
  • 出现 Modbus ConnectRtu Succeed 时,表示网关与控制器的 modbus 通信成功;
  • 出现 ICM is Running 时,表示 ICM 服务进程启动成功;

ICM 的运行日志中出现以上内容,并且没有其它错误日志,这表示ICM启动成功并在正常运行;

5 PLC与控制器通信示例

5.1 数据转换工具介绍

c++在线工具: https://www.jyshare.com/compile/12/

c++
#include <iostream>  
#include <cstring> 
  
int main() {  
    // 将浮点数转为字节数组
    float value = -0.957064038; 
    unsigned char hex_bytes[sizeof(float)]; 
    memcpy(hex_bytes, &value, sizeof(float));  
  
	std::cout << "Hex Result: "; 
    for (size_t i = 0; i < sizeof(float); ++i) {  
        std::cout << std::hex << static_cast<int>(hex_bytes[i]) << " ";  
    }  
    std::cout << std::dec << std::endl; 
    
	// 将字节数组转为浮点数
	unsigned char bytes[4] = {0x26, 0x2, 0x75, 0xBF}; 
    float result =0.0;
	memcpy(&result, bytes, sizeof(float));  
    std::cout << "Float Result: " << result << std::endl; 
    return 0;  
}

使用说明:
上述代码主要是将十六进制字节数组与有符号浮点型数据相互转换;方便转换数据查看 PLC 接收的数据是否正确;直接将上述代码段拷贝到在线工具中运行;

5.2 通信示例

本次通信使用 EIP 协议,PLC 与机械臂进行通信包括的内容有

•机械臂 IO 状态(slot_1)

•机械臂位姿(slot_2)

•机械臂关节电流电压温度(slot_3)

•通用线圈和通用保持寄存器(slot_4、slot_5)

其中 slot_1、slot_2、slot_3 可通过 PLC 直接进行读取,slot_4、slot_5 包含了线圈和保持寄存器的内容, 通过 ARCS 系统脚本调用的方式实现PLC跟机器臂通信。

5.2.1 读取机器臂位姿:

将机器臂移动到任意位置,记录机器臂的位姿,如下,此时机器臂处于 X = 171.58mm;

根据地址表中的X坐标的地址,在 AutoShop 软件中的 MAIN 表中添加监控地址 _IP1_10;

AutoShop 软件监控地址 _IP1_10 接收到机器臂传输过来的数据为十六进制 0xF2 0xB2 0x2F 0x3E;

使用工具将十六进制字节数组 0xF2 0xB2 0x2F 0x3E 转为浮点数为0.171581,跟真实机器臂的位姿X值能对应上,数据传输正确;

5.2.2 读取机器臂安全状态:

使用示教器将机器臂上电并释放抱闸,记录机器臂的安全状态,此时当前机器臂的安全状态为 Normal;

根据地址表中的安全状态的地址,在 AutoShop 软件中的 MAIN 表中添加监控地址 _IP1_27;

根据地址表中的安全状态的地址,在 AutoShop 软件中的 MAIN 表中添加监控地址 _IP1_27,该地址读取到了值为1,表示机器臂正处于正常运行模式(Normal);

5.2.3 通用线圈(Robot => PLC):

setBoolOutput(0,true),将 PLC slot_4 起始地址第一个 bool 量置为 true。

根据地址表中的第一个通用线圈(Robot => PLC)的地址,在 AutoShop 软件中的 MAIN 表中添加监控地址 _IP1_48;

在 AutoShop 软件中的 MAIN 表中添加监控地址 _IP1_48,此时监控的数据为0,即表示为 false, 过1s后,监控的数据为1,即表示为 true,可以看到监控的数据在0和1之间变换;

5.2.4 通用保持寄存器(Robot => PLC):

setInt16Register(32,183),将 PLC slot_4 保持寄存器 ( slot_4 第9个字节作为保持寄存器起始地址) 第一个数据写入值183,其中 setInt16Register 的起始地址为 32, 过1s后,再将数据改为99。

根据地址表中的第一个通用寄存器(Robot => PLC)的地址,在 AutoShop 软件中的 MAIN 表中添加监控地址 _IP1_56;

在 AutoShop 软件中的 MAIN 表中添加监控地址 _IP1_56,此时监控的数据为183,过1s后,监控的数据变为99;可以看到监控的数据在183和99变换;

5.2.5 通用线圈(PLC => Robot):

根据地址表中的第一个通用线圈(PLC => Robot)的地址,在 AutoShop 软件中的 MAIN 表中添加监控地址 _IP1_88;

在 AutoShop 软件中的 MAIN 表中对地址 _IP1_88 写入1;

bool0 = getBoolInput(0),读取 PLC slot_5 起始地址第一个 bool 量,并保存在变量 bool0 中,此时读到PLC的对应地址的值为 true;

5.2.6 通用保持寄存器(PLC => Robot):

根据地址表中的第一个通用寄存器(PLC => Robot)的地址,在 AutoShop 软件中的 MAIN 表中添加监控地址 _IP1_96;

在 AutoShop 软件中的 MAIN 表中对地址 _IP1_96 写入100;

tmp0 = getInt16Register(0),机器人读取 PLC slot_5 的第9个字节开始的第一个 寄存器(16Bit) ,并保存在变量tmp0 中, 此时读到PLC的对应地址的值为 100;

常见问题

1. 通讯失败

(1)检查硬件接线是否正确,网线及串口线是否有松动,网关和 PLC 的电源线是否松动;
(2)若接线没有问题IP设置正确,PLC仍然无法扫描到,查看最新的ICM运行日志,若出现如下报 错,表示可能是网关配置中串口号错误或串口线存在问题;

(3)进入机器人终端查看能否 ping 通网关和 PLC,若ping不通网关说明机器人与网关之间IP设置存在问题,能ping通网关ping不通PLC说明PLC与网关IP设置存在问题,网关与PLC 连接成功后,蓝灯亮起,网关无红灯亮起;

注意: 保证ARCS软件—网关配置—PLC的IP地址在同一网段,例如网关IP配置为192.168.0.100,ARCS软件则设置IP为192.168.0.12,PLC为192.168.0.33,前三位网络位必须一致,最后一位主机位不能一致,子网掩码统一为255.255.255.0,网关统一为192.168.0.1

(4)查看 ICM 的运行日志,出现如下日志时,说明网关服务运行正常,否者,有问题;

(5)ICM 自动生成的配置文件不能直接用,需按照实际情况配置,配置参考如下:

2. 通讯成功,读取数据错误

(1)数据变化,但是结果不正确,需要对配置文件 littleEndian 项进行修改,看看是否选错大小端;
(2)数据不变化,但是 ICM 服务进程正在执行,需重启 ARCS 软件,并观察日志最后一行,出现 AUBO-ICM is Running 代表服务已启动,并与网关正在进行数据传输;