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

设置界面(可放大查看)
可以在界面中设置PLC的地址,端口和PLC的从站ID。
关节小数点位数设置时用于约定寄存器中的joint:j1~j6的小数点位数。位置/姿态小数点位数设置是用于约定寄存器中的cart_pose:x~d的小数点位数等。
WORD/DWORD下可以设置符号位和字节序,这里需要根据PLC的实际情况进行设置。LWORD/Float/Double这几个数据格式目前没有使用,可不设置。
保持寄存器地址分配参考 api接口说明。 “寄存器地址偏移”设置大于0的话,可以对默认的所有保持寄存器地址进行整体偏移。
PLC参考程序
用户可以根据 交互时序 要求,并按照 api接口说明 的规范,自己编写PLC程序。
用户也可以参考提供的PLC示例程序来编写PLC程序。plc参考程序可以从以下路径获取:
- – PLC示例程序
xyzModbusTcp.scl 参考的xyzModbusTcp通信FB功能块
CartMove_Basic_Template.scl 坐标移动基础模板
TrajMove_Sync_Template.scl 轨迹移动同步模板
示例程序测试硬件:西门子PLC-1200
示例程序测试软件:TIA V17,但是以上提供的.scl可以被导入到V16中
版本说明:示例程序不确保运行在其他型号的plc和TIA版本,用户需要根据情况自行修改
示例程序说明:
xyzModbusTcp.scl
:实现了xyzModbusTcp的时序封装,并映射了xyz的通信数据
xyzModbusTcp功能块是对xyz提供的时序的进一步封装。用户只需要关注Req信号和对应的指令输入参数,以及监视Error信号、Done信号和对应的指令输出参数即可。
输入端的 MB_Param 用来设置ModbusTcp的地址信息:
![]()
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可以显示当前指令从触发到接收返回值所消耗的时间。
CartMove_Basic_Template.scl
和TrajMove_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设置:
启用“系统存储器字节”和“时钟存储器字节”

系统和时钟存储器设置
设置访问级别为“完全访问权限”

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

连接机制设置
PLC导入示例程序方法:
“外部源文件”下添加外部文件

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

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

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