本案例是三菱PLC通过CClinkIE转ModbusTCP网关连接川崎机器人的配置案例
具体步骤如下。
机器人步骤:
1、TCP通信命令
川崎机器人提供以下TCP通信命令:
· TCP_LISTEN 创建套接字并等待连接请求
· TCP_ACCEPT 检查是否接收到连接请求
· TCP_CONNECT 创建套接字并发送连接请求
· TCP_SEND 发送数据字符串
· TCP_RECV 接收数据字符串
· TCP_CLOSE 中断套接字通信
· TCP_END_LISTEN 结束等待连接请求
如其字面意义,上述命令实现的功能与一般通用的TCP通信协议指令基本相同,具有TCP通信协议编程基础的开发者很容易就能掌握,此外需要注意的是,在调用通信命令前,需判断是否会出现异常,如端口被占用、套接字非法等,异常调用会导致系统报错,并使机器人控制系统异常停止运行,从而影响机器人正常使用。
该ModbusTCP服务器可以同时连接多个客户端,满足与多个外围设备的通信需求,程序中可以预定义客户端最大连接数量。每个外围设备的通信占用一个连接套接字,当外围设备断开与服务器的连接后,服务器端应能检测到通信服务中止,并关闭连接套接字,为后续设备的再次连接预留连接资源。
2、标准ModbusTCP协议数据包的解析与处理
ModbusTCP服务器与客户端建立连接后,循环等待接收客户端发送的Modbus请求应用数据单元(ADU),请求(或响应)应用数据单元包括两部分,前面七个字节长的报文头称为MBAP报文头(Modbus协议报文头),MBAP之后的部分为协议数据单元PDU,PDU又由功能码和数据域组成。如下图所示:
基于TCP/IP协议的ModbusTCP与串行链路上的Modbus在传输的数据帧格式上有区别:
1) 由于网际层IP和传输层TCP已经负责对双方通信数据报进行了地址和端口解析处理,并将源主机发送的数据单元可靠交付到目的主机,ModbusTCP应用数据单元中已经不再包含地址域,不需要在应用层对外围设备的地址进行解析,而该地址域在串行链路上必要的。
2) ModbusTCP应用数据单元中增加了七字节的MBAP报文头,该报文头包括2字节的事务处理标识符、2字节的协议标识符、2个字节的长度域,以及1个字节的单元标识符。需要在应用层中对MBAP报文件头进行解析处理。
3) 由于采用面向连接的TCP协议,已经提供了可靠的传输服务,在ModbusTCP的应用数据单元中不再包含差错校验域,不需要进行串行链路中的数据帧的CRC计算和校验。
对ModbusTCP应用数据单元的解析处理分两步,首先是解析MBAP报文头,解析正确后提取后续的协议数据单元PDU,再对PDU进行解析,根据PDU的解析结果访问用户应用数据,并生成Modbus响应,发送应答给外围设备。
3、对外数据接口的规划
川崎机器人的PC程序和机器人控制程序可以公用的信号和变量包括:通用I/O信号、系统开关和全局变量。
通用I/O信号分为直接与外部通信的外部I/O信号和仅可在内部使用的I/O信号,其中外部输入信号相当于PLC的开关量输入信号,外部输出信号相当于PLC的开关量输出信号,内部I/O信号相当于PLC的内部寄存器。通用I/O信号有数量限制,外部输入信号、外部输出信号和内部I/O信号数量均最多不能超过960点。
系统开关是用于指示机器人各种系统设置或状态的信号,如开关名称POWER指示马达电源ON/OFF状态,TEACH_LOCK显示示教锁定的ON/OFF状态。系统开关的名称及其黙认值根据不同的机器人规格而不同。
全局变量是用于PC程序或机器人控制程序中的位姿信息、数字信息、字符信息的变量,各自对应于位姿变量、实型变量、字符串变量。全局变量一旦被定义,其值保存在存储器中,可在任何程序中使用。其中实数、整数、逻辑值和ASCII值都用实数值表达。
川崎机器人控制器的ModbusTCP服务器在提供对外数据交换服务时,需根据控制器自身的特性,提前规划制定对外数据接口范围,应遵循以下原则:
1、应尽量遵循行业通则,如Modbus的公共功能码0x02,代表读离散量输入信号功能,对于离散量输入信号,并且要求是只读功能的信号,其地址范围应限定于机器人控制器内的通用信号中的外部输入信号,其地址编号起始为1001。而不应将地址编号如1~32的外部输出信号或地址编号2001~2256内部信号划入功能码0x02的范围内,因为外部输出信号和内部信号原则上不仅可读,还可写,相当于线圈的定义,应划入功能码0x01(读线圈)和0x05(写单个线圈)范围内。
2、对外开放的通用信号数量不能超出机器人设置的最大信号数量,并且机器人专用信号设置中已被指定用于专用信号的通用信号不可写。读写超过最大信号数量,或写专用信号通道,会导致机器人报错并停止,应根据机器人设置对ModbusTCP服务器相关参数进行配置,以避免对机器人运行造成干扰。
I/O信号数量设置
专用信号显示
3、在可用资源充足时,宜通过通用信号接口与外部设备交换系统开关状态信息和内部变量信息。如机器人专用信号设置中,将外部信息交换所需的系统开关指定给外部输出信号或内部信号,通过公共读写线圈功能码读写系统开关信号。或将内部变量赋值给连续内部信号多位组合而成的寄存器(或读寄存器),通过公共读(或写)寄存器功能码完成与内部变量的数据交换。
启动Modbus测试软件Modbus Poll,设置连接参数并连接K-Roset仿真。连接参数设置中的IP地址设置与第2步设置相同,端口号设置为ModbusTCP服务器程序文件中设置的服务器端口号。
4、Modbus Poll与K-Roset连接成功后,在Modbus Poll通过Setup->Read/Write Definition中的各项功能,或通过菜单的Functions下的各子功能,逐项测试Modbus功能。
确认机器人配置无误后,打开三菱PLC配置软件,开始进行CCLink一侧配置。
打开三菱PLC,设置CClinkIE一侧的参数配置,首先设置PLC的IP地址
双击详细设置进入CClinkIE配置
添加通用从站IP地址以及占用点数
设置好分配的软元件
将组态下载进PLC,并打开网关配置软件“Gateway Configuration Studio”
新建项目选择CClinkIE-MTC
设置网关在CClinkIE一侧的IP地址及占用点数(与PLC组态保持一致)
设置网关在ModbusTCP一侧的IP地址
添加从站并填写IP地址,跟ModbusPoll一样填写从站IP(命令异常码使能可监控从站在线状态)
右键添加所需要的功能码,填写参数地址以及数据长度
以03功能码(读保持寄存器)为例,填写需要读取的参数地址以及连续读取数量。
参数确认无误后下载配置给网关即可。将所有设备全部上电,当OK灯亮起,Txd和Rxd交替闪烁,即代表网关开始正常通讯。