原文地址

说明
除了需要 STEP 7 >= V13 SP1 (TIA Portal) 的软件,还需要 S7-1200 CPU 固件版本 >= V4 (文章编号: 6ES721x-1xx40-0XB0)。

Modbus RTU 可以通过以下模块通讯。

  • CB 1241 RS485 (订货号: 6ES7241-1CH30-1XB0) 结合 S7-1200 CPU 固件升级到 >= V4.1.1.
  • CM 1241 RS422/485 (订货号: 6ES7241-1CH32-0XB0) 结合通讯模块固件升级到 >= V2.1
  • CM 1241 RS232 (订货号:6ES7241-1AH32-0XB0) 结合通讯模块固件升级到 >= V2.1

除了 "Modbus_Master" 指令,还需要 "Modbus_Comm_Load" 指令才能建立通讯。
两个程序块都在 STEP 7 (TIA Portal) 中,"Instructions>Communication>Communication processor>MODBUS ( RTU )>= Version 3.0"。
 

图. 01

Modbus_Comm_Load

Modbus_Comm_Load 程序块是用来选择通讯模块的,设置通讯参数并用主站(或从站)的参数将连接参数化。

图. 02

在第一次调用 Modbus_Master (or Modbus_Slave)之前,非循环块 Modbus_Comm_Load 必须运行一次并且运行完成 (DONE 为 1)。 Modbus_Comm_Load 可以在程序的第一个循环中(通过在硬件组态中启用系统存储器位 M1.0) 调用。在硬件组态中插入通讯模块之后,就可以在 PORT 参数传输通讯模块的符号名。
通讯参数 BAUD (波特率)和 PARITY (奇偶校验) 必须要与从站地址相匹配。在参数 MB_DB 传输 Modbus_Master (or Modbus_Slave)背景数据的数据结构 MB_DB,这样就可以定义通讯模块 (通过 PORT 参数识别) 为 MODBUS 主站(或从站)。除此之外,必须改变 Modbus_Comm_Load 的实例数据中的静态参数以便进行双工操作模式,通过初始值设定(0 = full duplex (RS232), 1 = full duplex (RS422) 四线制模式,4 = half duplex (RS485) 两线制模式)。      

图. 03

Modbus_Master
使用 Modbus_Master 功能块来定义通讯模块,并将 Modbus_Comm_Load 组态块选择为 MODBUS 主站。

图. 04

Modbus_Master 块用来选择需要与之通讯相匹配的 MODBUS 从站,指定功能代码并定义本地数据的存储区。下面表格介绍了参数。

Parameter Description
REQ 使能通讯。
MB_ADDR MODBUS-RTU 站地址。
MODE 请求的类型:"0" = 读 "1" = 写 "104" = 读取从站的输入字 (寄存器地址到 65535) ...
DATA_ADDR 定义 MODBUS 起始地址( = 偏移量 + 从站寄存器地址):MODE = 104:Offest =0
DATA_LEN 定义 MODBUS 数据长度(位或者字节形式):MODE = 104: Words
DATA_PTR 定义主站本地数据接收区和发送区。DATA_PTR 参数必须引用一个数据块,这个数据块的 “Optimized block access” 属性必须已被禁用。

表 01

"MODBUS (RTU)" 指令库也包含 "MODBUS" 指令库的功能。
但是,如果使用 Modbus_Slave 块,MB_HOLD_REG 参数只支持 “Word” 数据类型的一维数组。

下载
下载包括 "109474481_S7-1200_Modbus_Master_V13-SP1.zip" 项目。它包含了以下程序文件夹。

  • "CPU-V4_CM1241RS485-V2d1" 使用 S7-1200 CPU 固件 V4.0 版的 Modbus-RTU 通讯,通过 CM 1241 RS422/485 固件 V2 版本。
  • "CPU-V4d1_CB1241RS485" 使用 S7-1200 CPU 固件 V4.1.1 版的 Modbus-RTU 通讯 ,通过 CB 1241 RS485。

地址为 1 的 Modbus 从站,从地址 53248 开始 (16#D000) 规定的 9 个输入字可以通过 RS485 通讯使用监控表读取 (比如 ebm-papst 公司的 Motor VarioDrive C)。
 复制 "109474481_S7-1200_Modbus_Master_V13-SP1.zip" 文件到一个单独的目录,然后双击点开文件。可以使用 STEP 7 来打开并处理提取的项目数据。

   S7-1200_Modbus_Master_V13-SP1.zip (3,9 MB)

SIAMATIC S7-1200 中通过 Modbus RTU 如何读取地址范围 9999 到 65535 的输入字的更多相关文章

  1. 获取TXT文件,解决读取TXT乱码问题,查找所输入字是否在TXT文件中,

    /// <summary> /// 查看是否存在 /// </summary> /// <param name="str"></param ...

  2. Modbus RTU 通信应用案例

    如何打开项目归档文件 例程中的TIA博途项目文件与STEP 7项目文件均为归档文件,需要按如下方式打开: TIA博途项目文件 1. 打开TIA博途软件,通过软件左下方“项目视图”按钮切换至项目视图: ...

  3. Modbus RTU新版本指令介绍

    Modbus RTU新版本指令介绍 TIA V13 SP1版本软件中提供了2个版本的Modbus RTU指令: 图1. 两个版本Modbus RTU指令 早期版本的Modbus RTU指令(图1. 中 ...

  4. modbus4j中使用modbus tcp/ip和modbus rtu over tcp/ip模式

    通过借鉴高人博客,总结如下: 1. TcpMaster类,用于生成ModbusMaster主类 package sun.sunboat; public class TcpMaster { privat ...

  5. MODBUS RTU协议中浮点数是如何存储,读到浮点数寄存器的数值如何转换成所需的浮点数

    浮点数保存的字节格式如下: 地址 +0 +1 +2 +3内容 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM 这里S 代表符号位,1是负,0是正E 偏移127的幂,二进 ...

  6. Modbus RTU程序开发解读

    Modbus是很好的串口通信协议,其中RTU协议最为常用,通过Modbus RTU,我们可以轻松读写串口信息. 从官网下载libModbus,观察modbus.h可知关键的结构体为: typedef ...

  7. Modbus RTU 通信工具设计(转)

    Modbus RTU 通信工具设计 Modbus 是一个工业上常用的通讯协议.一种通讯约定. ModBus 协议是应用层报文传输协议(OSI 模型第7层),它定义了一个与通信层无关的协议数据单元(PD ...

  8. Modbus协议栈实现Modbus RTU多主站支持

    前面我们已经详细讲解过Modbus协议栈的开发过程,并且利用协议栈封装了Modbus RTU主站和从站,Modbus TCP服务器与客户端,Modbus ASCII主站与从站应用.但在使用过程中,我们 ...

  9. Modbus库开发笔记之六:Modbus RTU Master开发

    这一节我们来封装最后一种应用(Modbus RTU Master应用),RTU主站的开发与TCP客户端的开发是一致的.同样的我们也不是做具体的应用,而是实现RTU主站的基本功能.我们将RTU主站的功能 ...

随机推荐

  1. C语言-排序和查找

    一 冒泡排序:算法特点:两层循环外层控制排序的趟数,内存控制相邻元素两两比较的次数.n个数共需n-1趟,(i=1;i<n;i++)趟数=n-1-1+1,其中第j趟需要相邻元素两两比较的次数为n- ...

  2. 某元素 fixed 后,从页面消失

    position: fixed; top: 0; left: 0; width: 100%; z-index: 1; 一开始是定位后,元素就从页面消失了,添加了 层级 之后就可以了.

  3. 第七届蓝桥杯javaB组真题解析-抽签(第五题)

    题目 /* 抽签 X星球要派出一个5人组成的观察团前往W星. 其中: A国最多可以派出4人. B国最多可以派出2人. C国最多可以派出2人. .... 那么最终派往W星的观察团会有多少种国别的不同组合 ...

  4. Elasticsearch 6.8.4 启动报错解决方法

    运行环境:centos 7,jdk 1.8 问题一: ERROR: bootstrap checks failed max ] ] 原因:无法创建本地文件问题,用户最大可创建文件数太小 解决方案:切换 ...

  5. js学习:基本语法结构

    语句 JavaScript 程序的执行单位为行(line),也就是一行一行地执行.一般情况下,每一行就是一个语句. 语句(statement)是为了完成某种任务而进行的操作,比如下面就是一行赋值语句. ...

  6. MySql向SQLServer迁移常见问题

    -- MySql与SQLServer update inner join语法区别-- MySql: UPDATE A LEFT JOIN B ON A.B_ID = B.B_ID SET A.A_NA ...

  7. 【剑指Offer面试编程题】题目1507:不用加减乘除做加法--九度OJ

    题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 输入: 输入可能包含多个测试样例. 对于每个测试案例,输入为两个整数m和n(1<=m,n<=10 ...

  8. 3_07_MSSQL课程_Ado.Net_委托、事件

    委托和事件的区别? (1)委托是一个类. 事件是一个委托类型的实列. (2)委托可以在定义委托实列的类的外部触发执行.(不安全) 事件只能能在定义它的类的内部触发执行.(安全),类外部只能注册事件的响 ...

  9. Vue -> 解决 vue-ueditor-wrap 不能显示的问题

  10. 使用HttpURLConnection通过post请求服务器时,URLEncode编码的必要性

    通过Post提交表单数据时,数据类型为x-www-urlencoded,提交到服务器的数据服务器默认是通过URLEncoder.encode()编码过得,所以服务器处理时会用URLDecoder.de ...