CS机器人与欧姆龙Fins TCP通讯
1. 简介
CS机器人与plc通讯的方式有很多种,比如Modbus,EtherNet/IP,Profinet,socket通讯,但是有些型号的PLC不支持以上这几种通讯方式怎么办呢?CS系列的机器人就还有一种通讯方式可供客户使用,那就是Fins/Tcp通讯。本篇文章就是讲解如何与欧姆龙PLC进行Fins/tcp通讯。
版本信息为:
• 机器人系统版本v2.10.0
• Fins插件版本v2.3.0
• RTSI Service插件版本 v1.0.0
2. 操作流程
2.1安装Fins和RTSI Service通讯插件
2.1.1安装Fins通讯插件
第一步:将fins插件放在u盘里。
图-1
第三步:进入图-2界面后,按照图-2界面所示步骤操作即可进入图-3界面。
图-2
第四步:按照图-3操作步骤所示进行操作,即可进入图-4界面;(注意第一步要选择U盘,因为我这个是在虚拟机上进行操作的,所以选择的是本机,在实际示教器上要选择U盘)
图-3
第五步:按照图-4操作,点击“重启”即可。
图-4
第六步:重启之后就可以看到图-5界面所示,该插件已经激活,图-6界面所示,该插件已经安装到机器人上了。如果发现机器人示教器上没有该插件,再次重启机器人即可。
图-5
图-6
2.1.2安装RTSI Service插件
第一步:按照安装Fins/tcp通讯插件步骤的第一步到第五步进行操作。
第二步:操作完后就可以在机器人配置→插件里找到这个插件了,如图-7所示。
图-7
2.2使用Fins和RTSI Service通讯插件
2.2.1只使用Fins通讯插件(只使用Fins通讯插件时是通过RPC的方式读写PLC寄存器的脚本)
2.2.1.1与PLC建立通讯连接(如图-8所示步骤操作)
第一步:进入机器人配置界面。
第二步:进入Fins插件。
第三步:设置IP地址(此处IP地址为PLC的IP地址),点击“连接”按钮。
第四步:查看连接状态,连接状态有:”空闲、连接中、已连接1、已连接2、连接失败” 这五种。
空闲:未连接到PLC。
连接中:正在连接PLC。
已连接1:成功连接到PLC, 且成功识别PLC信息 。
已连接2:连接到PLC,但未识别PLC信息。
连接失败:上一次连接失败了。
注意:处于已连接2状态时需要通过选择PLC模式并点击设置来确定PLC信 息,否则可能无法通讯。这就需要进行第五步的操作。
第五步:设置PLC模式。(目前能自动识别的PLC有“CV、CS、CJ、CP”)。
第六步:勾选自动连接。自动连接的作用是,在关机重启后自动连接所设置的IP的PLC。
图-8
2.2.1.2如何读写PLC的寄存器
第一步:通过rpc=rpc_factory("xmlrpc","http://6.0.0.10:9601")函数建立一个 RPC对象。如图-9红框1所示。
第二步:
(1)可以通过DM100=rpc.memoryAreaReadInt16("dm100")函数读取 PLC里16位整数寄存器“dm100"里的值并将值存在全局变量DM100中。如图-9红框2所示。
(2)可以通过rpc.memoryAreaWriteInt16("dm100",1)函数将”1“写入到PLC里16位整数寄存器“dm100"里去。如图-9红框3所示。
(3)可以通过rpc.memoryAreaReadBit("w4.02")["value"]?=True函数读取 PLC里位寄存器“w4.02"里的值并判断值是否等于”True"。如图-9红框5所示。
(4)可以通过rpc.memoryAreaWriteBit("w4.02",True)函数将”True“写入到PLC位寄存器“w4.02"里去。如图-9红框4所示。
(5)详细脚本请参考图-10
图-9
图-10
2.2.2同时使用Fins和RTSI Service通讯插件(通过RTSI插件将PLC寄存器的数据映射到机器人通用寄存器中,RTSI插件占用了 RTSI 输入订阅的 input_bit_registers0_to_31,input_bit_registers32_to_63,input_int_register(0-24),input_double_registerX(0-24)。因此需要注意是否有其他功能或外部 客户端在占用。)
2.2.2.1运行RTSI插件,如图-11红框标注所示。
图-11
2.2.2.2按照2.2.1.1的操作步骤与PLC建立通讯即可。
2.2.2.3建立通讯信号,此功能是通过RTSI同步PLC和机器人的寄存器,点击添加,会出现新的待设置条目。如图-12所示。
PLC寄存器地址:输入需要同步的PLC寄存器地址,例如“W0”、“W1”
PLC寄存器类型:需要同步的PLC寄存器类型。
传输方向:PLC_TO_ROBOT:读取PLC数据然后写入机器人寄存中。
ROBOT_TO_PLC:读取机器人寄存器然后写入PLC中。
RTSI Register:要同步的机器人寄存器。该寄存器就是机器人I0里自带的寄存器,比如 整数寄存器,布尔寄存器,浮点寄存器。如图-12所示。
RTSI Register Force:当PLC寄存器类型为BIT_FORCE或WORD_FORCE时生效。
映射状态是指:读写PLC的错误码,为0时代表没有问题。
图-12
图-13
2.2.2.4如何使用建立的寄存器
使用了RTSI插件就不要使用脚本函数去读取或者写入PLC寄存器的值了,就可以直接使用机器人与PLC同步了的寄存器,如图-14红框所示。
图-14
3. 常见问题解答
1.因为使用的FINS协议库不支持,且暂时没有需求场景,当传输方向为ROBOT_TO_PLC 是,类型:DOUBLE、FLOAT、BIT_FORCE、WORD_FORCE 不可用。
2.FINS协议实时性本身一般,加上又使用了RPC、扩展IO等方式,所以同步 数据时延迟会很大,使用脚本时函数的执行时间也会较长。
3.PLC的一些寄存器可能有读写权限。
4. 示例
1.以下文件为使用了RTSI插件的程序
CS_BACKUP_2024-05-11_11-42-57.zip
2. .以下文件为没有使用了RTSI插件的程序
CS_BACKUP_2024-07-16_15-15-52.zip