配置和运行 ============================ 通讯数据格式配置 +++++++++++++++++++++++++ 通讯参数配置可以在XYZ-Studio-Max中进行操作,设置界面如下: .. figure:: img/modbus_tcp_settings.png :width: 1036px :align: center 设置界面(可放大查看) 可以在界面中设置PLC的地址,端口和PLC的从站ID。 关节小数点位数设置时用于约定寄存器中的joint:j1~j6的小数点位数。位置/姿态小数点位数设置是用于约定寄存器中的cart_pose:x~d的小数点位数等。 WORD/DWORD下可以设置符号位和字节序,这里需要根据PLC的实际情况进行设置。LWORD/Float/Double这几个数据格式目前没有使用,可不设置。 保持寄存器地址分配参考 :doc:`./api`。 "寄存器地址偏移"设置大于0的话,可以对默认的所有保持寄存器地址进行整体偏移。 PLC参考程序 +++++++++++++++++++++++++ 用户可以根据 :doc:`交互时序 <./introduction>` 要求,并按照 :doc:`./api` 的规范,自己编写PLC程序。 用户也可以参考提供的PLC示例程序来编写PLC程序。plc参考程序可以从以下路径获取: .. figure:: img/plc_code.png :width: 500px :align: center -- 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信号和对应的指令输出参数即可。 .. figure:: img/xyzModbusTcp.PNG :width: 378px :align: center 输入端的 MB_Param 用来设置ModbusTcp的地址信息: .. figure:: img/MB_Param.png :width: 432px :align: center 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可以显示当前指令从触发到接收返回值所消耗的时间。 2. ``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功能块的背景数据块,否则会导致无法正常通讯,具体参考 :doc:`./trouble_shooting` 。 PLC设置和程序导入 +++++++++++++++++++++++++ **以下仅列出一些和ModbusTcp有关的PLC设置:** 启用“系统存储器字节”和“时钟存储器字节” .. figure:: img/PLC_timming.png :width: 1037px :align: center 系统和时钟存储器设置 设置访问级别为“完全访问权限” .. figure:: img/PLC_access_level.png :width: 1035px :align: center 访问级别设置 连接机制中勾选“允许来自远程对象的PUT/GET通讯访问” .. figure:: img/PLC_connect_type.png :width: 1040px :align: center 连接机制设置 **PLC导入示例程序方法:** "外部源文件"下添加外部文件 .. figure:: img/PLC_import.png :width: 982px :align: center 添加Max提供的PLC示例程序 右键导入的外部源文件,执行“从源生成块”。这里需要注意 ``CartMove_Basic_Template.scl`` 或者 ``TrajMove_Sync_Template.scl`` 均包含了 ``xyzModbusTcp.scl`` 和 对应的背景数据块,因此从这2个示例程序中生成块也会同时生成 xyzModbusTcp,请根据需要生成对应的块即可。 .. figure:: img/PLC_convert.png :width: 426px :align: center 从源生成块 此时可以看到导入的程序块,之后可以下载到PLC中。 .. figure:: img/PLC_xyzModbusTcp.png :width: 358px :align: center 导入的程序块 启动方法 +++++++++++++++++++++++++ 启动顺序和机器人一致,先在Max中启动 “机械臂主控驱动”(即robot_server),然后启动PLC程序即可。如果先启动PLC程序,则几秒后会因为检测不到心跳而报错。