RTU主站指令库
Modbus RTU通讯协议
要实现Modbus RTU通信,一、需要STEP 7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP 7-Micro/WIN32 V3.2 Instruction Library(指令库)。
Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。
Modbus RTU从站指令库只支持CPU上的通信0口(Port0)基本步骤:1. 检查Micro/WIN的软件版本,应当是STEP 7-Micro/WIN V3.2以上版本。
2. 检查Micro/WIN的指令树中是否存在Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。
如果没有,须安装Micro/WIN32 V3.2的Instruction Library(指令库)软件包;1. 西门子编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。
关于参数的详细说明,可在子程序的局部变量表中找到;调用Modbus RTU通信指令库图中参数意义如下:a. 模式选择:启动/停止Modbus,1=启动;0=停止b. 从站地址:Modbus从站地址,取值1~247c. 波特率:可选1200,2400,4800,9600,19200,38400,57600,115200d. 奇偶校验:0=无校验;1=奇校验;2=偶校验e. 延时:附加字符间延时,缺省值为0f. 最大I/Q位:参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128g. 最大AI字数:参与通信的最大AI通道数,可为16或32h. 最大保持寄存器区:参与通信的V存储区字(VW)i. 保持寄存器区起始地址:以&VBx指定(间接寻址方式)j. 初始化完成标志:成功初始化后置1k. 初始化错误代码l. Modbus执行:通信中时置1,无Modbus 通信活动时为0。
RTU简介及常见指令介绍
RTU简介及常见指令介绍摘要: 远动终端是电网调度自动化系统中安装在发电厂、变电站的一种具有四遥远动功能的自动化设备。
RTU在电网调度自动化系统中具有重要的作用。
(系统结构:调度端SCSDA/EMS+远动信道+厂站端RTU)。
本文介绍了RTU的功能、构成、计算方法及软件内部的常用指令。
关键词: 功能组成计算命令一、RTU的功能概述1.1远方功能① 遥测:远程量测值。
RTU将采集到的厂站运行参数按规约传送给调度中心(上传)。
包括:P、Q、U、I、档位、温度等,容量达几十到上百个(路)。
② 遥信:远程状态信号。
RTU将采集到的厂站设备运行状态按规约传送给调度中心(上传)。
包括:断路器和隔离刀闸的位置信号、继电保护和自动装置的位置信号、发电机和远动设备的运行状态等。
容量达几十到几百个。
③ 遥控:远程命令。
调度中心发给RTU的改变设备运行状态的命令。
包括:操作厂站各电压回路的断路器、投切补偿电容器和电抗器、发电机组的启停等。
容量可达几十个设备。
④ 遥调:远程调节命令。
调度中心发给RTU的调整设备运行参数的命令。
包括:改变变压器分接头位置(调压)、改变发电机组P或Q的整定值(调节出力)、自动装置整定值的设定等。
容量可达几个到十几个设备。
⑤ 事故数据:a) 事件顺序记录:实时检测遥信变位(带时标的遥信),立即记录变位时刻、变位设备序号、变位状态等组成SOE优先传送(CDT下)。
b) 事故追忆:冻结某时刻全网的重要的遥测点、遥信点的画面(如照相),每个这样的画面称为一帧,其循环周期可为数秒到数分。
典型的PDR记录长度为:事故前10min,事故后5min。
⑥ 统一时钟:具有对时功能。
接收调度中心的校时命令。
统一时钟为了不同厂站之间事故分析以及电度量冻结。
⑦ 转发:接收其它RTU送来的远动信息,按规约组装转发给指定的调度中心。
⑧ 适合多种规约的数据远传:基本远动任务配套标准IEC 60870-5-101(简称101规约)或其它CDT、Polling规约。
MPI协议和PPI协议有什么不同
竭诚为您提供优质文档/双击可除MPI协议和PPI协议有什么不同篇一:通讯不同点请教下大虾们,常说的总线有profibus、can、modbus、FF、devicenet等,这些是不是以走什么协议来命名的?那我可以说:“它走can协议吗?”而常见的串口通信modbus,mpi,据校验和。
在波特率一致、各站地址不同的情况下,ppi,mpi和pRoFibus可以同时在一个网络上运行,并且互不干扰。
这就是说如果一个网络上有s7-300、s7-200,s7-300之间可以通过mpi或pRoFibus通信,而在同时在同一个网络上的tp170如果在一个通信网络上存在其他主站(如td200,或者上位计算机等),同时需要进行micro/win的编程、监控,这就是多主站网络编程。
使用西门子的下列设备可以实现micro/win的多主站编程:micro触摸屏可以与一个s7-200cpu通信。
使用智能多主站电缆和micro/winV3.2sp4以上版本。
新电缆可以在网络上传递令牌,因而自动支持多主站网络编程。
如果使用cp卡,如cp5511/cp5512(笔记本电脑pcmcia 卡)、cp5611(台式机pci卡),能够支持多主站编程通信。
如果通过cp卡编程时,选择了mpi协议,注意mpi主站不能访问作为ppi主站的cpu。
如果有第三方的产品要连接到多主站网络上,用户需要咨询第三方产品提供商以了解是否支持西门子的s7-200多主站网络。
要进行多主站编程,不但编程计算机要支持,网上的其他设备也要有多主站通信能力。
早期的多主站连接依赖于计算机硬件和windows操作系统。
随着计算机技术的发展,多数情况下已经不能做到多主站编程通信。
建议用户使用西门子的多主站编程电缆或者cp 卡配合micro/win实现多主站编程通信。
4.mpi(multipointinterface)是simatics7多点通信的接口,是一种适用于少数站点间通信的网络,多用于连接上位机和少量plc之间近距离通信。
modbus协议对应地址
CPU 上的通信口(Port0)支持 Modbus RTU 从站通信协议S7-200 CPU上的通信口Port0可以支持Modbus RTU协议,成为Modbus RTU从站。
此功能是通过S7-200的自由口通信模式实现,因此可以通过无线数据电台等慢速通信设备传输。
如果想在S7-200 CPU之间、或者其他支持Modbus RTU的设备使用Modbus RTU 协议通信,需要由有S7-200 CPU做Modbus主站。
S7-200 CPU做主站必须由用户自己用自由口模式,按相关协议编程。
详情请参考《S7-200系统手册》之相关章节。
要实现Modbus RTU通信,需要STEP 7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP 7-Micro/WIN32 V3.2 Instruction Library(指令库)。
Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。
Modbus RTU从站指令库只支持CPU上的通信0口(Port0)。
参考:Modbus RTU 主站指令库基本步骤:1.检查Micro/WIN的软件版本,应当是STEP 7-Micro/WIN V3.2以上版本。
2.检查Micro/WIN的指令树中是否存在Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLA VE两个子程序。
如果没有,须安装Micro/WIN32 V3.2的Instruction Library(指令库)软件包;图1. 指令树中的库指令3.编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLA VE,并指定相应参数。
关于参数的详细说明,可在子程序的局部变量表中找到;图2. 调用Modbus RTU通信指令库图中参数意义如下:a.模式选择:启动/停止Modbus,1=启动;0=停止b.从站地址:Modbus从站地址,取值1~247c.波特率:可选1200,2400,4800,9600,19200,38400,57600,115200d.奇偶校验:0=无校验;1=奇校验;2=偶校验e.延时:附加字符间延时,缺省值为0f.最大I/Q位:参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128g.最大AI字数:参与通信的最大AI通道数,可为16或32h.最大保持寄存器区:参与通信的V存储区字(VW)i.保持寄存器区起始地址:以&VBx指定(间接寻址方式)j.初始化完成标志:成功初始化后置1k.初始化错误代码l.Modbus执行:通信中时置1,无Modbus 通信活动时为0。
Modbus RTU 主站指令库
Modbus RTU 主站指令库西门子在STEP 7-Micro/WIN SMART 中正式推出Modbus RTU 主站协议库(西门子标准库指令)。
图1. 西门子标准指令库(STEP 7-Micro/WIN SMART)注意:1. Modbus RTU 主站指令库的功能是通过在用户程序中调用预先编好的程序功能块实现的,该库对CPU集成的RS 485 通讯口和CM 01信号板有效。
该指令库将设置通信口工作在自由口模式下。
2. Modbus RTU 主站指令库使用了一些用户中断功能,编其他程序时不能在用户程序中禁止中断。
3. Modbus RTU 主站指令库不能同时应用于CPU集成的RS 485 通讯口和CM 01信号板。
使用Modbus RTU 主站指令库,可以读写Modbus RTU 从站的数字量、模拟量I/O 以及保持寄存器。
Modbus RTU 主站功能编程1. 调用Modbus RTU 主站初始化和控制子程序使用SM0.0 调用MBUS_CTRL 完成主站的初始化,并启动其功能控制:图2. 用SM0.0 调用Modbus RTU 主站初始化与控制子程序各参数意义如下:必须保证每一扫描周期都被使能(使用a. EN 使能:SM0.0)为1 时,使能Modbus 协议功能;为0 时b. Mode 模式:恢复为系统PPI 协议c. Baud波特率:支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200。
d. Parity 校验:校验方式选择0=无校验1=奇较验2=偶较验e. Port端口号:0 = CPU集成的RS 485 通讯口;1 = 可选CM 01信号板。
f. Timeout 超时:主站等待从站响应的时间,以毫秒为单位,典型的设置值为1000 毫秒(1 秒),允许设置的范围为1 - 32767。
注意:这个值必须设置足够大以保证从站有时间响应。
S7-200 SMART PLC 串口通信说明(图文并茂)
S 7-200 S M A R T 串口通信简介S 7-200 S M A R T 支持的串口通信硬件及连接资源如表 1所示: 注意:1. P P I 模式只支持 S 7-200 S M A R T C P U 与 H M I 设备之间的通信;2. 通信信号板的工作模式(R S 485/R S 232)是由用户决定的,可以在 M i c r o /W I N S M A R T 中通过设置系统块来设置。
详细设置方法见:如何设置串口通信参数 通信端口定义1.S 7-200 S M A R T C P U 本体集成 R S 485 端口 (端口 0)表 2. S 7-200 S M A R T C P U 本体集成 R S 485 端口引脚定义 2.通信信号板 表 1.S 7-200 S M AR T 串口参数CPU 本体集成通讯口通信信号板(S B C M 01)通讯口类型R S 485R S 485R S 232支持的通信协议P P I / 自由口 / M O D B U S / U S S 波特率P P I (9600,19200,187500 b /s )自由口(1200,115200 b /s )连接资源每个通信口可连接 4 个 H M I 设备C P U 插座(9针母头)引脚号信号P o r t 0(端口0)引脚定义1屏蔽机壳接地224V 返回逻辑地(24V 公共端)3R S -485信号 B R S -485信号 B4发送请求R T S (T T L )55V 返回逻辑地(5V 公共端)6+5V +5V ,通过100 O h m 电阻7+24V +24V8R S -485信号 A R S -485信号 A9不用10位协议选择(输入)金属壳屏蔽机壳接地表 3.通信信号板(P o r t 1)引脚定义通信信号板(S B C M 01)引脚标记R S 485R S 232机壳接地机壳接地T X /B R S 485-B R S 232-T x R T S R T S (T T L )R T S (T T L )M 逻辑公共端逻辑公共端R X /AR S 485-AR S 232-R x通信信号板通信信号板可以扩展 C P U 的通信端口,其安装位置如图 1所示。
Modbus RTU通信指令说明
一主站初始化EN:使能位,必须用SM0.0一直接通Mode:为1=Modbus,0=PPI(stop Modbus),用SM0.0一直接通Baud:波特率(1200、2400、4800、9600、19200、38400、57600或115200)一般为9600Parity:效验方式,0=无效验,1=奇效验,2=偶效验Port:0=CPU集成的端口,1=通过扩展SB信号板的端口Timeout:从站响应时间,超时时间,单位:ms毫秒Done:完成标志位Error:错误代码二读或写从站数据指令EN:使能位,必须用SM0.0一直接通First:读写请求,必须使用脉冲触发,加沿指令Slave:从站地址(0-247)RW:读写命令,1=写,0=读Addr:从站通信数据起始地址,要写Modbus地址(0001,10001,30001,40001)Count:通信数据区地址的数量,单位取决于Addr处Modbus 地址对应的PLC类型DataPtr:主站通信数据区地址(指针格式)Done:完成标志位Error:错误代码一初始化从站Mode:1=启用Modbus,0=禁用ModbusAddr:从站地址(1-247)Baud:波特率Parity:效验方式,0=无效验,1=奇效验,2=偶效验Port:通讯端口,0=CPU集成的端口,1=通过扩展SB信号板的端口Delay:通讯超时时间(默认为0)MaxIQ:从站允许主战读写的最大I/Q点数MaxAI:从站允许主战读写的最大AI点数MaxHold:从站允许主战读写的最大V区字数HoldStart:保持寄存器起始地址,(指针)Done:完成标志Error:错误信息存储区(BYTE)二MBUS_SLAVE指令用于处理来自Modbus主站的请求,并且必须在每次扫描时执行,以便检查和响应Modbus请求。
Done:完成标志Error:错误信息存储区(BYTE)。
s71200-modbus-通讯指令解析
s71200-modbus-通讯指令解析S7-1200 作为Modbus RTU 主站S7-1200 支持Modbus RTU通信模式的模块可作为Modbus RTU主站。
以下以CPU1215C DC/DC/DC和CM1241 RS485 模块为例,介绍S7-1200 Modbus RTU 主站通信组态及编程步骤。
硬件和软件需求及所完成的通信任务:硬件:①CPU1215C DC/DC/DC (订货号:6ES7 215-1AG31-0XB0)②CM1241 RS485 (订货号:6ES7 241-1CH30-0XB0)③PS 307电源(订货号:6ES7307-1KA02-0AA0)④PC(带以太网卡)⑤TP以太网电缆软件:①STEP 7 Professional V11 SP2 UPD4+HSP②ModSim(该软件是第三方软件,可以从Internet 网络下载)所完成的通信任务:将Modbus RTU从站ModSim中Modbus地址从40001开始的5个字中的数据,分别读取到Modbus RTU主站CPU1215C 中地址从DB1.DBW0开始的5 个字中。
1.组态Modbus RTU 通信模块在硬件目录里找到“通信模块”→“点到点”→“CM1241(RS485)”,双击或拖拽此模块至CPU左侧即可,如下图1所示:图1 组态通信模块接下来,在“设备视图”中用鼠标选中CM1241(RS485)模块,在“属性”→“端口组态”中配置此模块硬件接口参数。
如下图2所示:以下以传输率=9.6Kbps,奇偶校验=无奇偶校验,数据位=8位字符,停止位=1,其它保持默认设置为例。
图2 RS485 端口设置最后在“硬件标识符”里确认一下硬件标识符为271,如下图3所示:图3 硬件标识符2.添加启动OB在项目树下选择“CPU1215C DC/DC/DC”→“程序块”→“添加新块”,在弹出的窗口中选择“OB 组织块”→ “Startup”,添加启动OB 100,如下图4所示:图4 添加启动OB3.调用MB_COMM_LOAD指令为使端口一启动就被设置为Modbus RTU通信模式,可在OB 100中调用“MB_COMM_LOAD”指令。
西门子MODBUS协议详解
要使用 Modbus RTU 主站指令库,须遵循下列步骤:
Modbus RTU 主站功能编程
1. 调用 Modbus RTU 主站初始化和控制子程序
使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,并启动其功能控制:
-
101 = 从站不支持请求的功能
102 = 从站不支持数据地址
103 = 从站不支持此种数据类型
104 = 从站设备故障
105 = 从站接受了信息,但是响应被延迟
106 = 从站忙,拒绝了该信息
107 = 从站拒绝了信息
108 = 从站存储器奇偶错误
2. Modbus RTU 主站指令库使用了一些用户中断功能,编其他程序时不能在用户程序中禁止中断。
3. Modbus RTU 主站库对CPU的版本有要求。CPU 的版本必须为 2.00 或者 2.01(即订货号为6ES721*-***23-0BA*),1.22版本之前(包括1.22版本)的 S7-200 CPU 不支持。
b. First 读写请求位: 每一个新的读写请求必须使用脉冲触发
c. Slave 从站地址: 可选择的范围 1 -247
d. RW 从站地址: 0 = 读, 1 = 写
注意:
1. 开关量输出和保持寄存器支持读和写功能
2. 开关量输入和模拟量输入只支持读功能
e. Addr 读写从站的 选择读写的数据类型
通常 Modbus 地址由 5 位数字组成,包括起始的数据类型代号,以及后面的偏移地址。Modbus Master协议库把标准的 Modbus 地址映射为所谓 Modbus 功能号,读写从站的数据。Modbus Master协议库支持如下地址:
西门子PLC Modbus通讯
1.Modbus RTU主站1.1 Modbus RTU 主站指令库1.2 Modbus RTU 主站功能编程1.3 关于 Modbus RTU 主站协议及地址1.4 Modbus RTU 主站常问问题1.5 Modbus RTU主站例程2.Modbus RTU从站2.1 CPU 上的通信口(Port0)支持 Modbus RTU 从站通信协议2.2 编程基本步骤:2.3 Modbus RTU 从站地址与S7-200的地址对应2.4 Modbus RTU 从站指令库支持的功能码2.6Modbus RTU从站例程2.7 Modbus RTU 从站常见问题3.STEP 7-Micro/WIN 的标准指令库3.1 分配库指令数据区1.Modbus RTU主站1.1 Modbus RTU 主站指令库西门子在 Micro/WIN V4.0 SP5 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。
图 1. 西门子标准指令库(Micro/WIN V4.0 SP5)Modbus指令库注意● 1. Modbus RTU 主站指令库的功能是通过在用户程序中调用预先编好的程序功能块实现的,该库对Port 0 和 Port 1 有效。
该指令库将设置通信口工作在自由口模式下。
● 2. Modbus RTU 主站指令库使用了一些用户中断功能,编其他程序时不能在用户程序中禁止中断。
● 3. Modbus RTU 主站库对CPU的版本有要求。
CPU 的版本必须为 2.00 或者 2.01(即订货号为6ES721*-***23-0BA*),1.22版本之前(包括1.22版本)的 S7-200 CPU 不支持。
使用 Modbus RTU 主站指令库,可以读写 Modbus RTU 从站的数字量、模拟量 I/O 以及保持寄存器。
要使用 Modbus RTU 主站指令库,须遵循下列步骤:● 1.安装西门子标准指令库● 2.按照要求编写用户程序调用 Modubs RTU 主站指令库1.2 Modbus RTU 主站功能编程1. 调用 Modbus RTU 主站初始化和控制子程序使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,并启动其功能控制:图 2. 用 SM0.0 调用 Modbus RTU 主站初始化与控制子程序各参数意义如下:a. EN 使能:必须保证每一扫描周期都被使能(使用 SM0.0)b. Mode 模式:为 1 时,使能 Modbus 协议功能;为 0 时恢复为系统 PPI 协议c. Baud 波特率:支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200。
modbus协议对应地址
CPU上的通信口(Porto )支持Modbus RTU从站通信协议S7-200 CPU上的通信口PortO可以支持Modbus RTI协议,成为Modbus RTL从站。
此功能是通过S7-200的自由口通信模式实现,因此可以通过无线数据电台等慢速通信设备传输。
如果想在S7-200 CPU之间、或者其他支持Modbus RTU的设备使用Modbus RTU 协议通信,需要由有S7-200 CPU做Modbus主站。
S7-200 CPU做主站必须由用户自己用自由口模式,按相关协议编程。
详情请参考《S7-200系统手册》之相关章节。
要实现ModbusRTl通信,需要STEP7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP7-Micro/WIN32 V3.2 Instruction Library (指令库)。
Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。
Modbus RTU从站指令库只支持CPU上的通信0 口(Port0)。
参考:Modbus RTU主站指令库基本步骤:1. 检查Micro/WIN 的软件版本,应当是STEP 7-Micro/WIN V3.2 以上版本。
2. 检查Micro/WIN的指令树中是否存在Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT 和MBUS_SLAVE两个子程序。
如果没有,须安装Micro/WIN32 V3.2 的Instruction Library (指令库)软件包;图 1. 指令树中的库指令3. 编程时使用SM0.1 调用子程序MBUS_INIT 进行初始化,使用SM0.0 调用MBUS_SLAVE ,并指定相应参数。
关于参数的详细说明,可在子程序的局部变量表中找到;图中参数意义如下:a. 模式选择:启动/停止Modbus, 1=启动;0=停止b. 从站地址:Modbus从站地址,取值1~247c. 波特率:可选1200,2400,4800,9600, 19200,38400, 57600,115200d. 奇偶校验:0=无校验;仁奇校验;2=偶校验e. 延时:附加字符间延时,缺省值为0f. 最大I/Q位:参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128g. 最大AI字数:参与通信的最大AI通道数,可为16或32h. 最大保持寄存器区:参与通信的V存储区字(VW)i. 保持寄存器区起始地址:以&VBx指定(间接寻址方式)j. 初始化完成标志:成功初始化后置1k. 初始化错误代码l. Modbus执行:通信中时置1,无Modbus通信活动时为0。
MODBUS
5 - Force Single Coil
6 - Preset Single Register 7 - Read Exception Status 8 - Diagnostic test 15 - Force Multiple Coils
16 - Preset Multiple Registers
MODBUS commnication
A&D AS V5, 08/2000 N° 13
S7-200 Modbus RTU 主站
注意: 1. Modbus RTU 主站指令库的功能是通过在用户程序中调用预先编好的程序功能块实现的 ,该库对 Port 0 和 Port 1 有效。该指令库将设置通信口工作在自由口模式下。 2. Modbus RTU 主站指令库使用了一些用户中断功能,编其他程序时不能在用户程序中禁 止中断。 3. Modbus RTU 主站库对CPU的版本有要求。CPU 的版本必须为 2.00 或者 2.01(即订货 号为 6ES721*-***23-0BA*),1.22版本之前(包括1.22版本)的 S7-200 CPU 不支持。 4. 未安装西门子 Instruction Library 软件包的情况下,不能显示出来使用
Modbus RTU 从站功能码 功能码 主站使用相应功能码作用于此从站的效用 1读取单个/多个线圈(离散量输出点)状态。 功能 1 返回任意个数输出点(Q)的 ON/OFF 状态。 2读取单个/多个触点(离散量输入点)状态。 功能 2 返回任意个数输入点(I)的 ON/OFF 状态。 3读取单个/多个保持寄存器。功能 3 返回 V 存储区的内容。在 Modbus 协议下保持寄 存器都是“字”值,在一次请求中可以读取最多 120 个字的数据。 4读取单个/多个输入寄存器。功能 4 返回 S7-200 的模拟量数据值。 5写单个线圈(离散量输出点)。功能 5 用于将离散量输出点设置为指定的值。这个 点不是被强制的,用户程序可以覆盖 Modbus 通信请求写入的值。 6写单个保持寄存器。功能 6 写一个值到 S7-200 的 V 存储区的保持寄存器中。 15写多个线圈(离散量输出点)。功能 15 把多个离散量输出点的值写到 S7-200 的 输出映像寄存器(Q 区)。输出点的地址必须以字节边界起始(如 Q0.0 或 Q2.0 ),并且输出点的数目必须是 8 的整数倍。这是此 Modbus RTU 从站指令库的限 制。些点不是被强制的,用户程序可以覆盖 Modbus 通信请求写入的值。 16些多个保持寄存器。功能 16 写多个值到 S7-200 的 V 存储区的保持寄存器中。在 一次请求中可以写最多 120 个字的数据。
实用西门子PLC(Modbus RTU)通讯
PLC主站1、Modbus RTU 主站初始化(MBUS-CTRL 指令)ENEN :使能端,要一直接通;Mode:1=Modbus RTU通信0=PPI通信;Baud :波特率4800 9600 19200 38400 ;Parity:0=无校验、1=奇校验、2=偶校验;Port :通讯端口选择0=本身集成端口、1=扩展信号板端口;Timeout:通讯最大等待回复时间,单位ms ;Done :完成标志位;Error :错误代码。
2、读写指令MBUS-MSGEN:使能端,一直接通;First:读写触发,需配合沿指令使用;Slave:从站地址;RW:0=读、1=写;Addr :读写从站的Modbus首地址;Count:读写数量;DataPtr:数据指针(用于存储将要读取或写入的数据);其他同上。
PLC从站1、Modbus RTU 从站初始化(MBUS-INIT)EN:使能端,使用SM0.1激活;Mode:1=Modbus、0=PPI ;Addr:从站站地址;Baud:波特率;Parity:奇偶校验0=无、1=奇校验、2=偶校验;Port:通讯端口选择0=集成端口、1=扩展端口;Delay:一般填0;MaxIQ:允许主站读写的最大IO点数;MaxAI:允许主站读取的最大AI字数;MaxHold:允许主站读取的最大V区字数;HoldStart:允许主站读取的V区首地址(Modbus地址为40001);其他同上。
2、处理主站通讯请求指令(MBUS-SLAVE)变频器从站1、西门子变频器2、三菱变频器硬件接线。
Modbus RTU V3及以上版本指令介绍
Modbus RTU V3及以上版本指令介绍TIA V13 SP1版本软件中提供了2个版本的Modbus RTU指令:图1. 两个版本Modbus RTU指令早期版本的Modbus RTU指令(图1. 中MODBUS (V2.2))仅可通过CM1241通信模块或CB1241通信板进行Modbus RTU通信。
新版本的Modbus RTU指令(图1. 中MODBUS(RTU) V3.0)扩展了Modbus RTU的功能,该指令除了支持CM1241通信模块、CB1241通信板,还支持PROFINET 或PROFIBUS 分布式I/O 机架上的PTP通信模块实现Modbus RTU通信。
新版本Modbus RTU指令所支持的PTP模块如下图2所示:图2. 新版本Modbus RTU指令所支持的PTP模块Modbus RTU指令的使用新版本Modbus RTU指令中包含Modbus RTU 主站指令和从站指令。
本文以CPU1217C+CM1241 RS422/485+ET200SP CM PTP 模块为例,介绍新版本Modbus RTU 指令主从通信的编程步骤。
其中CPU 机架CM1241 RS422/485作为Modbus RTU从站,分布式机架ET200SP 中CMPTP 模块作为Modbus RTU主站。
网络结构图如下:图3. Modubus RTU 网络通信结构图本项目中使用到的硬件和软件如下:硬件:①CPU1217C (订货号:6ES7 217-1AG40-0XB0),固件版本V4.1.3②CM1241 RS422/485模块(订货号:6ES7 241-1CH32-0XB0),固件版本V2.1③24V 电源PS307(订货号:6ES7307-1KA02-0AA0)④ET200 SP IM155-6PN HF(订货号:6ES7155-6AU00-0CN0)⑤CM PTP模块(订货号:6ES7137-6AA00-0BA0)软件:①TIA V13 SP1 UP 91.设备组态a.组态CM1241 RS422/485模块打开设备视图,添加S7-1200CPU,并在硬件目录里找到“通信模块”→“点到点”→“CM1241(RS422/485)”,拖拽此模块至CPU左侧即可,如下图4所示:图4. 添加CM 1241 RS422/485模块注意:固件版本>=V2.1 的CM 1241 RS422/485模块,才支持新版本Modbus RTU 指令。
S7-200 MODBUS RTU通讯教程
•
10001 - 19999:数字量输入(触点)
•
30001 - 39999:输入数据寄存器(通常为模拟量输入)
•
40001 - 49999:数据保持寄存器
Modbus Master 协议库支持的功能
为了支持上述 Modbus 地址的读写,Modbus Master 协议库需要从站支持下列功能:
表 1. 需要从站支持的功能
成位来激活,以保证所有读写指令循环进行(见
每一个新的读写请求必须使用脉冲触发
位:
从站地
c. Slave
可选择的范围 1 - 247
址:
d. RW
从站地 0 = 读, 1 = 写
址:
注意: 1. 开关量输出和保持寄存器支持读和写功能 2. 开关量输入和模拟量输入只支持读功能
围为 1 - 32767。
注意: 这个值必须设置足够大以保证从站有时间响应。 f. Done 完成位:初始化完成,此位会自动置 1。可以用该位启动 MBUS_MSG 读写操作(见例程)
g. Error
初始化错误代码(只有在 Done 位为 1 时有效):
0= 无错误
1= 校验选择非法
读写从站
e. Addr
选择读写的数据类型
的
数据地 00001 至 0xxxx - 开关量输出
址:
10001 至 1xxxx - 开关量输入 30001 至 3xxxx - 模拟量输入 40001 至 4xxxx - 保持寄存器 f. Count 数据个数 通讯的数据个数(位或字的个数)
Modbus 指令库启动后,如何通过同一个通信端口进行 CPU 监控? Modbus 指令库使用的是 CPU 的自由口通信功能,工作在自由口模式下的通讯口不能使用 Micro/WIN 的 PPI 编程
西门子S200 modbus主站实现介绍
S7-200 MODBUS RTU 主站通讯Modbus RTU 主站指令库西门子在Micro/WIN V4.0 SP5 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。
图 1. 西门子标准指令库(Micro/WIN V4.0 SP5)注意:1. Modbus RTU 主站指令库的功能是通过在用户程序中调用预先编好的程序功能块实现的,该库对Port0和Port 1有效。
该指令库将设置通信口工作在自由口模式下。
2. Modbus RTU 主站指令库使用了一些用户中断功能,编其他程序时不能在用户程序中禁止中断。
3. Modbus RTU 主站库对CPU的版本有要求。
CPU 的版本必须为 2.00 或者2.01(即订货号为6ES721*-***23-0BA*),1.22版本之前(包括1.22版本)的S7-200 CPU 不支持。
使用 Modbus RTU 主站指令库,可以读写 Modbus RTU 从站的数字量、模拟量I/O 以及保持寄存器。
要使用 Modbus RTU 主站指令库,须遵循下列步骤:1. 安装西门子标准指令库2. 按照要求编写用户程序调用 Modubs RTU 主站指令库Modbus RTU 主站功能编程1. 调用 Modbus RTU 主站初始化和控制子程序使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,并启动其功能控制:图 2. 用 SM0.0 调用 Modbus RTU 主站初始化与控制子程序各参数意义如下:a. EN使能: 必须保证每一扫描周期都被使能(使用 SM0.0) b. Mode模式: 为 1 时,使能 Modbus 协议功能;为 0 时恢复为系统 PPI 协议 c. Baud 波特率: 支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200。
d. Parity 校验: 校验方式选择0=无校验1=奇较验2=偶较验e. Timeout 超时: 主站等待从站响应的时间,以毫秒为单位,典型的设置值为1000 毫秒(1 秒),允许设置的范围为1 - 32767。
cp1hmodbus rtu指令
cp1hmodbus rtu指令
CP1HModbus RTU指令是指以CP1H PLC为主站使用Modbus RTU协议与其他设备进行通信的指令集。
包括以下指令:
1. MBREAD: 读取Modbus从站设备的寄存器值。
2. MBWRITE: 向Modbus从站设备写入数据。
3. MBWRITER: 批量向Modbus从站设备写入数据。
4. MBREADR: 批量读取Modbus从站设备的寄存器值。
5. MBSCAN: 执行Modbus设备扫描,检测从站设备的状态。
6. MBSTAT: 查看Modbus通信状态。
7. MBTCPINIT: 初始化Modbus TCP通信。
8. MBTCPCONF: 配置Modbus TCP通信参数。
9. MBTCPREAD: 读取Modbus TCP从站设备的寄存器值。
10. MBTCPWRITE: 向Modbus TCP从站设备写入数据。
11. MBTCPWRITER: 批量向Modbus TCP从站设备写入数据。
12. MBTCPREADR: 批量读取Modbus TCP从站设备的寄存器值。
这些指令提供了方便快捷的接口,使得CP1H PLC的Modbus RTU通信更加方便、高效。
200SMART MODBUS RTU通讯指令介绍
200SMART MODBUS RTU通讯指令介绍
主站指令1(PLC自带485通讯口)
主站指令2(信号板SB CM01)
从站指令
(1)MBUS—CTRL:主站参数定义
(2)MBUS—MSG:主站读写指令
(3)MBUS—INIT:从站定义指令
(4)MBUS—SLAVE:从站应答
主站定义指令
EN:使能;为1时指令有效,为0时指令不执行
Mode:模式选择;为1时为modbus,为0时为
PPI
Baud:波特率,数据传输速率9600、19200等
Parity:奇偶校验0=无校验1=奇校验2=偶校验
Port:端口;0=PLC自带串口1=信号板CM01
Timeo:通信超时
Done:完成位
Error:错误字节
注:1、此条指令写在主站,写一天即可;
2、波特率和奇偶校验和从站应保持一致,不然无法通信;
主站读写指令
first:触发;需要用沿触发
slave:从站地址
RW:读写0=读取、1=写入
Addr:从数据区
Counl:数据范围
Dataptr:主站数据存放位置
从站定义指令
EN:使能,sm0.1初始化
Mode模式:1=modbus 0=禁用modbus
Buand:波特率
Parity:奇偶校验
Port:端口
Delay:默认为0,表示立即应答
Maxiq:通信最大I/O总数
Maxai:通信最大模拟量通道
Maxhold:通信最大v区
Holdstart;v区起始地址
从站应答指令。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Modbus RTU 主站指令库西门子在Micro/WIN V4.0 SP5 中正式推出Modbus RTU 主站协议库(西门子标准库指令)。
图1. 西门子标准指令库(Micro/WIN V4.0 SP5)注意:1. Modbus RTU 主站指令库的功能是通过在用户程序中调用预先编好的程序功能块实现的,该库对Port 0 和Port 1 有效。
该指令库将设置通信口工作在自由口模式下。
2. Modbus RTU 主站指令库使用了一些用户中断功能,编其他程序时不能在用户程序中禁止中断。
3. Modbus RTU 主站库对CPU的版本有要求。
CPU 的版本必须为2.00 或者2.01(即订货号为6ES721*-***23-0BA*),1.22版本之前(包括1.22版本)的S7-200 CPU 不支持。
使用Modbus RTU 主站指令库,可以读写Modbus RTU 从站的数字量、模拟量I/O 以及保持寄存器。
要使用Modbus RTU 主站指令库,须遵循下列步骤:1. 安装西门子标准指令库2. 按照要求编写用户程序调用Modubs RTU 主站指令库安装西门子标准指令库Modbus RTU 主站功能编程1. 调用Modbus RTU 主站初始化和控制子程序使用SM0.0 调用MBUS_CTRL 完成主站的初始化,并启动其功能控制:图2. 用SM0.0 调用Modbus RTU 主站初始化与控制子程序各参数意义如下:a. EN 使能:必须保证每一扫描周期都被使能(使用SM0.0)b. Mode 模式:为 1 时,使能Modbus 协议功能;为0 时恢复为系统PPI 协议c. Baud 波特率:支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200。
d. Parity 校验:校验方式选择0=无校验1=奇较验2=偶较验e. Timeout 超时:主站等待从站响应的时间,以毫秒为单位,典型的设置值为1000 毫秒(1 秒),允许设置的范围为 1 - 32767。
注意:这个值必须设置足够大以保证从站有时间响应。
f. Done 完成位:初始化完成,此位会自动置1。
可以用该位启动MBUS_MSG 读写操作(见例程)g. Error 初始化错误代码(只有在Done 位为1时有效):0=无错误1=校验选择非法2=波特率选择非法3=模式选择非法2. 调用Modbus RTU 主站读写子程序MBUS_MSG,发送一个Modbus 请求;图3. 调用Modbus RTU 主站读写子程序各参数意义如下:a. EN 使能:同一时刻只能有一个读写功能(即MBUS_MSG)使能注意:建议每一个读写功能(即MBUS_MSG)都用上一个MBUS_MSG 指令的Done 完成位来激活,以保证所有读写指令循环进行(见例程)。
b. First 读写请求位:每一个新的读写请求必须使用脉冲触发c. Slave 从站地址:可选择的范围 1 - 247d. RW 从站地址:0 =读,1 =写注意:1. 开关量输出和保持寄存器支持读和写功能2. 开关量输入和模拟量输入只支持读功能e. Addr 读写从站的选择读写的数据类型数据地址:00001 至0xxxx - 开关量输出10001 至1xxxx - 开关量输入30001 至3xxxx - 模拟量输入40001 至4xxxx - 保持寄存器f. Count 数据个数通讯的数据个数(位或字的个数)注意:Modbus主站可读/写的最大数据量为120个字(是指每一个MBUS_MSG 指令)g. DataPtr 数据指针:1. 如果是读指令,读回的数据放到这个数据区中2. 如果是写指令,要写出的数据放到这个数据区中h. Done 完成位读写功能完成位i. Error 错误代码:只有在Done 位为1时,错误代码才有效0 =无错误1 =响应校验错误2 =未用3 =接收超时(从站无响应)4 =请求参数错误(slave address, Modbus address,count, RW)5 =Modbus/自由口未使能6 =Modbus正在忙于其它请求7 =响应错误(响应不是请求的操作)8 =响应CRC校验和错误-101 =从站不支持请求的功能102 =从站不支持数据地址103 =从站不支持此种数据类型104 =从站设备故障105 =从站接受了信息,但是响应被延迟106 =从站忙,拒绝了该信息107 =从站拒绝了信息108 =从站存储器奇偶错误常见的错误:∙如果多个MBUS_MSG 指令同时使能会造成6 号错误∙从站delay 参数设的时间过长会造成主站3 号错误∙从站掉电或不运行,网络故障都会造成主站3 号错误3. 在CPU 的V 数据区中为库指令分配存储区(Library Memory)Modbus Master 指令库需要一个284个字节的全局V 存储区。
参考:分配库指令数据区关于Modbus RTU 主站协议库的补充说明此为西门子正式推出的标准库指令说明资料。
在Modbus RTU Master 协议和PPI 协议之间切换:Modbus RTU Master 协议指令库使通信口工作在自由口模式下,此时不能与Micro/WIN 软件通信。
要在切换回PPI 协议,可以:∙将MBUS_CTRL 指令的Mode 输入端设置为逻辑“0”∙将CPU 的允许模式选择开关置为STOP 位置Modbus RTU Master 协议库的执行时间:Modbus RTU Master 协议库的MBUS_CTRL 指令不需要很长的执行时间。
MBUS_需要1.11 ms 用于初始化,在后续的每个扫描周期中只占用0.41 ms。
调用MBUS_MSG 子程序会加长处理时间。
大部分时间都用于CRC 校验的计算。
每读、写一个字的数据就需要 1.85 ms 扫描时间。
数据最多的情况下(读、写120 字的数据),扫描时间大概会扩增加222 ms。
读操作的时间主要消耗在接收数据上;写操作的时间主要消耗在发送数据上。
Modbus 地址通常Modbus 地址由5 位数字组成,包括起始的数据类型代号,以及后面的偏移地址。
Modbus Master 协议库把标准的Modbus 地址映射为所谓Modbus 功能号,读写从站的数据。
Modbus Master 协议库支持如下地址:∙00001 - 09999:数字量输出(线圈)∙10001 - 19999:数字量输入(触点)∙30001 - 39999:输入数据寄存器(通常为模拟量输入)∙40001 - 49999:数据保持寄存器Modbus Master 协议库支持的功能为了支持上述Modbus 地址的读写,Modbus Master 协议库需要从站支持下列功能:表1. 需要从站支持的功能Modbus 地址和 S7-200 存储区地址的映射S7-200 通过 Modbus Master 和 Slave 协议库通信时,Modbus 地址和 S7-200 内存储区地址的 映射关系都类似。
Modbus 保持寄存器地址映射举例:Modbus 保持寄存器地址S7-200 存储区字寻址 S7-200 存储区字节寻址Modbus 数字量地址映射举例:位地址(0xxxx 和 1xxxx )数据总是以字节为单位打包读写。
第一个字节中的最低有效位对应 Modbus 地址的起始地址。
如下图所示:图 4. 数字量地址映射举例Modbus RTU 主站例程为了更好地理解 Modbus 主站的编程,可参考下面的例程。
注意:1. 该例程使用Micro/WIN V4.0 SP5 保存。
2. 该例程仅访问一个从站,若访问不同的从站,可通过改变从站地址来实现。
Modbus RTU 主站指令库应用例程注意:此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。
使用该软件的风险完全由用户自行承担。
由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
常问问题Modbus RTU 主站库对CPU 的版本是否有要求,为什么编译例子程序时,会遇到 4 个错误?Modbus RTU 主站库对CPU 的版本确实有要求,CPU 的版本必须为2.00 或者2.01(即订货号为6ES721*-***23-0BA*),1.22 版本之前(包括1.22 版本)的S7-200 CPU 不支持。
Modbus 指令库启动后,如何通过同一个通信端口进行CPU 监控?Modbus 指令库使用的是CPU 的自由口通信功能,工作在自由口模式下的通讯口不能使用Micro/WIN 的PPI 编程通信监控。
如果通信口都已经被占用,可以考虑:∙加一个通信模块(如EM 277、CP 243-1、EM 241 等)扩展出一个编程通信口∙中止自由口模式,可以将CPU 上的模式开关从RUN 拨到STOP;或者保持处于RUN 状态,用程序停止指令库的Modbus 模式(参见指令库应用)如何理解Modbus 地址与功能码的区别?Modbus 地址与Modbus 的功能码是两个层次的概念。
根据Modbus 通信协议,Modbus 数据的地址使用0xxxx、1xxxx、3xxxx 和4xxxx 的形式,分别表示数字量输出、数字量输入、模拟量输入等数据地址。
在使用S7-200 的指令库时,Modbus 数据地址与S7-200 的I/O 和数据存储区地址间有特定的对应关系。
有些设备表明它支持Modbus RTU 通信协议,但也详细提供了读写数据的详细通信帧格式,其中包括如何指定Modbus 站的地址,需要读写数据类型、长度等等。
数据帧有特定字节指出此指令读写的数据类型和地址,此字节的数据内容即所谓“功能码”,如功能 1 指定读取单个/多个数字量输出点的值。
支持Modbus 协议的设备或软件,使用时用户直接设置或看到的应当是Modbus 数据地址。
Modbus 地址所访问的数据,是通过各种“功能”读写而来。
功能码是Modbus 地址的底层。
如果Modbus 通信的一方提供的所谓Modbus 协议只有功能码,则需要注意了解此功能号与Modbus 地址间的对应关系。
如何访问大于9999 的保持寄存器地址?通常Modbus 协议的保持寄存器地址范围在40001 - 49999 之间。
对于多数应用来说已经够了。
但有些Modbus 从站把地址映射到保持寄存器区的地址超过9999 的部分。
Modbus Master 协议库支持超过9999 的保持寄存器地址。
地址范围为400001 - 465536。
只需在调用MBUS_MSG 子程序时给Addr 参数赋相应的值即可,如416768。