配置和运行 ============================ 通讯数据格式配置 +++++++++++++++++++++++++ 通讯参数配置可以在XYZ-Studio-Max中进行操作,设置界面如下: .. figure:: img/s7-settings-in-max.png :width: 1034px :align: center 设置界面 可以在界面中设置PLC的地址,端口号,机架号和槽号。 同时可以设置小数点位数和DB块编号。系统默认用到DB块的1600个字节。 PLC参考程序 +++++++++++++++++++++++++ 用户可以根据 :doc:`交互时序 <./introduction>` 要求,并按照 :doc:`./api` 的规范,自己编写PLC程序。 用户也可以参考提供的PLC示例程序来编写PLC程序。plc参考程序可以从以下路径获取: .. figure:: ../modbus_tcp/img/plc_code.png :width: 500px :align: center -- PLC示例程序 - Global_xyzS7_DB.db **参考的映射好的DB数据块** - xyzS7.scl **参考的xyzS7通信FB功能块** - CartMove_Basic_Template.scl **坐标移动基础模板** - TrajMove_Sync_Template.scl **轨迹移动同步模板** 示例程序测试硬件:西门子PLC-1200 示例程序测试软件:TIA V17,但是以上提供的.db和.scl可以被导入到V16中 版本说明:示例程序不确保运行在其他型号的plc和TIA版本,用户需要根据情况自行修改 示例程序说明: 1. ``Global_xyzS7_DB.db`` :全局数据块,映射了xyz的通信数据 该数据块提前映射好了所有输入输出。导入到PLC以后数据块编号会自动更新,而Max默认的数据块编号是99,用户需要注意修改。 .. figure:: img/global_xyzs7_db.PNG :width: 1133px :align: center 2. ``xyzS7.scl`` :基于 ``Global_xyzS7_DB.db`` 实现了xyzS7通信的时序封装。导入该功能块会同时导入 ``Global_xyzS7_DB.db`` xyzS7功能块是对xyz提供的时序的进一步封装。用户只需要关注Req信号和对应的指令输入参数,以及监视Error信号、Done信号和对应的指令输出参数即可。 .. figure:: img/xyzS7.PNG :width: 354px :align: center 使用该功能块时,功能块输入端的Req为True时触发指令,Max完成工作以后功能块输出端的Done信号会更新为True。当Req为False时,Done信号才会复位。 Req信号不可以在Done信号为True之前提前复位,否则Error会输出True。读取输出数据之前要确保没有Error且Done为True才是正确的。 如果丢失心跳包信号,则输出端的Error更新为True,同时输出端的Connected也会为False。 输出端的Step信号可以用来监视当前处于时序图中的哪个步骤,可以用于调试。 输出端的Cmd_Exec_Time可以显示从当前指令的触发到接收返回值所消耗的时间。 需要注意的是,在PLC中导入 ``xyzS7.scl`` ,会同步导入 ``Global_xyzS7_DB.db``。 3. ``CartMove_Basic_Template.scl`` 和 ``TrajMove_Sync_Template.scl`` :模板程序 2个模板程序,用户可以参考这2个程序了解如何使用 ``xyzS7.scl``。 需要注意的是,在PLC中导入 ``CartMove_Basic_Template.scl`` 或者 ``TrajMove_Sync_Template.scl``,会同步导入 ``xyzS7.scl`` 和 ``Global_xyzS7_DB.db``。 PLC设置和程序导入 +++++++++++++++++++++++++ **以下仅列出一些和ModbusTcp有关的PLC设置:** 启用“系统存储器字节”和“时钟存储器字节” .. figure:: ../modbus_tcp/img/PLC_timming.png :width: 1037px :align: center 系统和时钟存储器设置 设置访问级别为“完全访问权限” .. figure:: ../modbus_tcp/img/PLC_access_level.png :width: 1035px :align: center 访问级别设置 连接机制中勾选“允许来自远程对象的PUT/GET通讯访问” .. figure:: ../modbus_tcp/img/PLC_connect_type.png :width: 1040px :align: center 连接机制设置 机架号和槽号 .. figure:: img/rack_slot.png :width: 699px :align: center rack和slot **PLC导入示例程序方法:** "外部源文件"下添加外部文件 .. figure:: img/S7_import.png :width: 909px :align: center 添加Max提供的PLC示例程序 右键导入的外部源文件,执行“从源生成块”。注意导入 ``xyzS7.scl`` 会同时导入 ``Global_xyzS7_DB.db``, 而导入 ``CartMove_Basic_Template.scl`` 或者 ``TrajMove_Sync_Template.scl``,会同步导入 ``xyzS7.scl`` 和 ``Global_xyzS7_DB.db``,请根据需要生成相应的块即可。 .. figure:: img/S7_compile_from_out.png :width: 420px :align: center 从源生成块 此时可以看到导入的程序块,注意Global_xyzS7_DB导入后默认DB块编号是1,需要和Max中的设置值一致,之后可以下载到PLC中。 .. figure:: img/S7_xyzS7.png :width: 292px :align: center 导入的程序块 启动方法 +++++++++++++++++++++++++ 正常启动顺序: 启动PLC并运行S7程序 -> 启动“机械臂主控驱动”(即robot_server) 注意不允许先启动“机械臂主控驱动”,否则在启动PLC程序后会复位robot_server的一些标志位,导致时序混乱无法完成通讯。 因此如果有异常要重新开始(如:调试/重置/通讯故障/时序错误等)情况下,需要按照如下顺序重新开始: - 关闭 robot_server、停止PLC的CPU -> 目的是复位两边的标志位和变量等 目前robot_server还无法监视到S7断开连接,所以也需要手动关闭 robot_server - 重新启动PLC的CPU - 重新启动 robot_server