在用视觉工控机和其它工业机器人通讯时,我们常用到协议转换器,比如modbus_rtu转pN,
如上图所示,上面时rs485总线,右侧的绿色就是Pn
485总线来自于工控机的DB9接口,走modbus协议,PN直接连接安川机器人
视觉工控机:作为 Modbus RTU 主站,通过其 COM1 (RS485) 接口发出Modbus指令。
协议转换器:核心作用是协议转换。
它的 RS485 接口 作为 Modbus RTU 从站,接收来自工控机的Modbus报文。
它的 PROFINET 接口 作为 PROFINET 控制器(主站),将转换后的数据通过PROFINET协议发送给机器人。
安川机器人:作为 PROFINET 设备(从站),接收来自协议转换器的PROFINET指令。
整个数据流是:Modbus RTU (工控机 -> 转换器) -> 内部处理 -> PROFINET (转换器 -> 机器人)。
配置文件重新解读(基于正确架构)
.dsn
文件正是用来配置这个“协议转换器”如何完成上述工作的。我们用博途的概念来类比,这个转换器内部相当于运行着一个“虚拟PLC”。
1. 定义转换器的“两面性”
plaintext
port-0:[ethernet]:[profinet] >profinet port-1:[rs485]:[modbusRTU] >modbusrtu>node>... port-2:[rs485]:[modbusRTU] >modbusrtu port-3:[rs485]:[modbusRTU] >modbusrtu
port-0
: 这是转换器的 PROFINET 主站/控制器接口。配置它就是为了告诉转换器如何以“主站”的身份去连接机器人(从站)。博途类比: 这就像在博途中组态一个PLC的PROFINET接口,并激活它的“控制器”功能。
port-1
: 这是转换器的 Modbus RTU 从站接口。配置它是为了告诉转换器如何以“从站”的身份响应工控机(主站)的查询。博途类比: 这就像在博途中组态一个CM(通信模块)的Modbus从站功能,或者调用
MB_SLAVE
指令来让PLC响应Modbus请求。
port-2, port-3
: 这两个端口在此架构下未被使用。它们的功能是作为额外的Modbus主站或从站接口,但当前项目不需要。
2. 配置PROFINET主站面(连接机器人)
plaintext
IP地址为192.168.1.15, 设备名称kj201isv
含义: 这不是转换器自身的身份,而是它要连接的机器人(PROFINET从站)的身份!
关键点:
kj201bbb
和192.168.1.15
必须是安川机器人控制柜中设定的PROFINET设备名称和IP地址。协议转换器需要知道这些信息才能找到并连接它。博途类比: 这就像在博途的网络视图中,将机器人设备拖入项目,然后在其属性中填写它真实的设备名称和IP地址。PLC(在此是协议转换器)需要用它来识别设备。
3. 配置Modbus从站面(连接工控机)
plaintext
协议类型选择为modbus主站 -> 此描述应为笔误,实际应为“从站” 波特率为115200, 数据位8, 停止位1, 奇偶校验1(偶校验)
含义: 这定义了转换器如何与您的视觉工控机进行Modbus通信。
关键点: 这些参数(波特率、数据位等)必须与您在视觉工控机上配置COM1口Modbus主站时的参数完全一致。
博途类比: 这就像在博途中配置一个
MB_SLAVE
指令块时,需要设置其通信端口参数。
4. 核心:数据映射翻译规则
这是转换器的“大脑”,它定义了Modbus地址和PROFINET IO数据之间的对应关系。
read holding registers
(功能码03)动作: 当视觉工控机(Modbus主站)发送读取保持寄存器请求时,转换器会响应这个请求。
数据来源: 响应数据来自哪里?就来自
内存映射起始地址0
开始的16个寄存器。这个内存的数据又是从哪来的?: 正是转换器通过PROFINET从安川机器人那里读来的数据!
博途类比: 这相当于一个映射:
机器人的输出数据 (PROFINET) -> 转换器内存地址0 -> 响应给工控机的Modbus数据
。
write holding registers
(功能码16)动作: 当视觉工控机(Modbus主站)发送写入保持寄存器请求时,转换器会接收这个数据。
数据去向: 接收到的数据被存放在
内存映射起始地址1500
开始的16个寄存器中。然后呢?: 转换器会将这些数据,通过PROFINET写入到安川机器人的输入地址中!
博途类比: 这相当于一个映射:
工控机发来的Modbus数据 -> 转换器内存地址1500 -> 发送给机器人的PROFINET输入数据
。
总结与工作流程(正确版)
物理连接:
视觉工控机(COM1/RS485) ---(Modbus RTU)---> 协议转换器(RS485口)
协议转换器(PN口) ---(PROFINET)---> 安川机器人控制柜(PN口)
数据流(工控机读机器人状态):
工控机通过COM1发送Modbus指令:
读地址0开始的16个寄存器
。协议转换器收到指令,将之前从机器人PROFINET接口读到的、存放在内存地址0的数据打包成Modbus响应报文,发回给工控机。
工控机解析响应,得到机器人状态。
数据流(工控机向机器人发命令):
工控机通过COM1发送Modbus指令:
向地址0开始的16个寄存器写入数据
。协议转换器接收数据,并将其存入内存地址1500。
协议转换器通过PROFINET接口,将内存地址1500的数据写入到机器人的输入地址中。
机器人接收到命令并执行。
最终效果:
无需在视觉工控机上开发任何PROFINET驱动。您只需要使用最简单的Modbus RTU协议(例如使用开源的modbus库),像操作一个普通的Modbus从站一样,读写指定的寄存器地址(0和1500),就可以间接、无缝地控制安川机器人。所有的协议转换苦活累活,都由这个网关完成了。