配置和运行

通讯数据格式配置

通讯参数配置可以在XYZ-Studio-Max中进行操作,设置界面如下:

../../../_images/modbus_tcp_settings.png

设置界面(可放大查看)

可以在界面中设置PLC的地址,端口和PLC的从站ID。

关节小数点位数设置时用于约定寄存器中的joint:j1~j6的小数点位数。位置/姿态小数点位数设置是用于约定寄存器中的cart_pose:x~d的小数点位数等。

WORD/DWORD下可以设置符号位和字节序,这里需要根据PLC的实际情况进行设置。LWORD/Float/Double这几个数据格式目前没有使用,可不设置。

保持寄存器地址分配参考 api接口说明。 “寄存器地址偏移”设置大于0的话,可以对默认的所有保持寄存器地址进行整体偏移。

PLC参考程序

用户可以根据 交互时序 要求,并按照 api接口说明 的规范,自己编写PLC程序。

用户也可以参考提供的PLC示例程序来编写PLC程序。plc参考程序可以从以下路径获取:

../../../_images/plc_code.png
– PLC示例程序
  • xyzModbusTcp.scl 参考的xyzModbusTcp通信FB功能块

  • CartMove_Basic_Template.scl 坐标移动基础模板

  • TrajMove_Sync_Template.scl 轨迹移动同步模板

示例程序测试硬件:西门子PLC-1200

示例程序测试软件:TIA V17,但是以上提供的.scl可以被导入到V16中

版本说明:示例程序不确保运行在其他型号的plc和TIA版本,用户需要根据情况自行修改

示例程序说明:

  1. xyzModbusTcp.scl :实现了xyzModbusTcp的时序封装,并映射了xyz的通信数据

xyzModbusTcp功能块是对xyz提供的时序的进一步封装。用户只需要关注Req信号和对应的指令输入参数,以及监视Error信号、Done信号和对应的指令输出参数即可。

../../../_images/xyzModbusTcp.PNG

输入端的 MB_Param 用来设置ModbusTcp的地址信息:

../../../_images/MB_Param.png

InterfaceId:硬件标识符;ID:PLC的slave_id;LocalPort:端口号

使用该功能块时,功能块输入端的Req为True时触发指令,Max完成工作以后功能块输出端的Done信号会更新为True。当Req为False时,Done信号才会复位。

Req信号不可以在Done信号为True之前提前复位,否则Error会输出True。读取输出数据之前要确保没有Error且Done为True才可以。

当程序通讯上以后,后续如果丢失了心跳信号,则Error会输出True。

输出端的Step信号可以用来监视当前处于时序图中的哪个步骤,可以用于调试。

输出端的Cmd_Exec_Time可以显示当前指令从触发到接收返回值所消耗的时间。

  1. CartMove_Basic_Template.sclTrajMove_Sync_Template.scl :模板程序

2个模板程序,用户可以参考这2个程序了解如何使用 xyzModbusTcp.scl

需要注意的是,在PLC中导入 CartMove_Basic_Template.scl 或者 TrajMove_Sync_Template.scl,会同步导入 xyzModbusTcp.scl 和 对应的背景数据块。

2个模板程序内部都使用到了xyzModbusTcp功能块和 xyzModbusTcp_DB 这个背景数据块 ,因此不可以在模板程序外再次使用xyzModbusTcp功能块或者修改xyzModbusTcp功能块的背景数据块,否则会导致无法正常通讯,具体参考 常见问题

PLC设置和程序导入

以下仅列出一些和ModbusTcp有关的PLC设置:

启用“系统存储器字节”和“时钟存储器字节”

../../../_images/PLC_timming.png

系统和时钟存储器设置

设置访问级别为“完全访问权限”

../../../_images/PLC_access_level.png

访问级别设置

连接机制中勾选“允许来自远程对象的PUT/GET通讯访问”

../../../_images/PLC_connect_type.png

连接机制设置

PLC导入示例程序方法:

“外部源文件”下添加外部文件

../../../_images/PLC_import.png

添加Max提供的PLC示例程序

右键导入的外部源文件,执行“从源生成块”。这里需要注意 CartMove_Basic_Template.scl 或者 TrajMove_Sync_Template.scl 均包含了 xyzModbusTcp.scl 和 对应的背景数据块,因此从这2个示例程序中生成块也会同时生成 xyzModbusTcp,请根据需要生成对应的块即可。

../../../_images/PLC_convert.png

从源生成块

此时可以看到导入的程序块,之后可以下载到PLC中。

../../../_images/PLC_xyzModbusTcp.png

导入的程序块

启动方法

启动顺序和机器人一致,先在Max中启动 “机械臂主控驱动”(即robot_server),然后启动PLC程序即可。如果先启动PLC程序,则几秒后会因为检测不到心跳而报错。