









  软件编写
表 3. Modbus-RTU 相关指令

在此,编写 Modbus 主站程序,添加一个新 FB ,将其命名为“ModbusMaster ”,如下图 5:

图 5:添加 Modbus-Master 功能块

图 6 :调用 “Modbus_Comm_Load ”
在该 FB 中以多重背景方式调用 “Modbus_Master ”指令,该指令在指令目录下“通信—〉通信处理器—〉 Modbus (RTU )”下,如下图 7:

图 7 :调用 “Modbus_Master ”指令
对 “ Modbus_Comm_Load ”指令进行参数化,由于该指令参数较多,在此只列出必须要关注的参数,如下表 4 所示,其它参数解释见手册或在线帮助。
表 4. Modbus_Comm_Load 主要参数列表


要为 “Modbus_Comm_Load ”指令指定端口,即该指令是针对哪个点对点模块进行参数化的。在硬件配置中,每个硬件均有一个硬件标识符,该硬件标识符在硬件属性中可以查看到,如下图 8:

图 8:在硬件属性中查看模块硬件标识符
同样,该硬件标识符也可以在 “PLC 变量 —〉显示所有变量 —〉系统变量”下可以查看到,如下图 9:

图 9 :PLC 变量表中查看系统常量
可以通过如图 10 所示方法,通过拖拽的方式,将 Modbus 主站接口的硬件标识符拖至 “Modbus_Comm_Load ”指令的 “Port”接口参数处,如下图 10:

图 10 :为“ Modbus_Comm_Load ”指定端口
定义端口的工作模式,本示例中,点对点模块的工作模式为 RS485 ,需要将 “Modbus_Comm_Load ”背景数据中静态变量的 “MODE ”参数赋值为 4,赋值既可以通过 “Move ”指令来完成,也可以通过直接修改该静态变量的默认值来实现,本实例使用后一种方法,参见下图 11:

图 11 :定义 Modbus-RTU 主站端口工作模式为 RS485
通过对 “Modbus_Comm_Load ”指令的 “MD_DB ”参数赋值,将 “Modbus_Comm_Load ”指令与 “Modbus_Master ”指令进行关联,即将 “Modbus_Master ”指令的背景 DB 块中静态变量 “MB_DB ”赋值给 “Modbus_Comm_Load ”指令的 “MD_DB ”,可以通过拖拽的方式来实现,拖拽路径如下图 12:

图 12
对“ Modbus_Comm_Load ”指令的 “ MD_DB ”参数赋值除以上操作外,对于 “Modbus_Comm_Load ”指令的 “REQ ”参数,本实例使用 PLC 的首个扫描位来完成。其它参数如波特率,奇偶校验等,请根据实际使用情况对这些参数进行赋值,因本实例波特率为 9600bit/s ,无奇偶校验,以上参数使用缺省设置即可。对指令 “Modbus_Master ”进行参数设置,该指令主要参数如下表 5所示:
表 5. Modbus_Master 主要参数列表


表五

图 13 :创建一个标准 DB 块
根据下表 6 所示的 Modbus 功能码,本实例需要 Modbus 主站读取 Modbus 从站保持寄存器从起始地址开始的 10 个字的内容到创建的 “Master_Data ”中,即 Modbus 功能码 03 的功能。


表6:Modbus 功能码的选择
根据以上要求,则 “Modbus_Master ”指令应按如下赋值:
“REQ ”:本实例使用 PLC 时钟信号来完成,即下图中的 M0.5 ;
“MB_ADDR ”:2 // 访问的从站地址;
“MODE ”:0;// 与“DATA_ADDR ”参数一起决定 Modbus 功能码为 03
“DATA_ADDR ”:40001 // Modbus 地址
“DATA_LEN ”:10 // 数据长度为 10 个字
“DATA_PTR ”:该参数可以通过拖拽的方式,将创建的标准 DB 内的变量 “M_Data ”拖拽到 “DATA_PTR ”处,拖拽路径如下图 14:

图 14 :为“ Modbus_Master ”指令进行参数赋值

图 15:在从站 FB 中调用 “Modbus_Comm_Load ”指令
使用定义主站端口的工作模式相同的方法,将从站点对点模块的工作模式定义为RS485 ,需要将 “Modbus_Comm_Load ”背景数据中静态变量的 “MODE”参数赋值为 4,如下图 16:

图 16 :定义 Modbus-RTU 从站端口工作模式为 RS485
以多重背景的方式调用从站指令 “ Modbus_Slave ”指令,并设置Modbus 从站地址为 2,并为从站创建一个标准的 DB 块“Slave Data ”,长度根据实际情况定,本例中在 “Slave Data ”中创建了一个长度为 200 字的数组,并将该变量以拖拽的形式(也可以通过指针 P# 的方式),将该变量填在“Modbus_Slave ”的“MB_HOLD_REG ”参数处,如下图 17:

图 17 :调用 “Modbus_Slave ”指令

图 18
将“ Modbus_Slave ” 指令和 “Modbus_Comm_Load ”指令关联在 OB1 中分别调用 Modbus 主站程序块和 Modbus 从站程序块,并为其分配全局 DB 块,如下图 19:

图 19

图 20: 使用变量监视表测试
| 成立日期 | 2022年11月17日 | ||
| 主营产品 | 西门子PLC,西门子模块,西门子触摸屏,西门子变频器,西门子伺服电机驱动,电缆,西门子全系列 | ||
| 公司简介 | 广东湘恒智能科技有限公司主要从事工业自动化产品的集成,销售与维修。致力于为您提供在机械、化工、水泥、电力、环保等领域的电气及自动化技术的完整解决方案,包括自动化产品及系统、工程项目执行及管理、主要过程控制领域技术支持,以及专业的售后服务、培训等。公司本着“以人矢志创新、追求卓越”的工作方针,致力于工业自动化控制领域的产品开发、工程配套和系统集成、销售,拥有丰富的自动为本、科 ... | ||









