西门子200SMART Modbus RTU通讯实例,附程序详解
西门子S7-200SMART与变频器MODBUS-RTU通信例程

西门子S7-200SMART与变频器MODBUS-RTU通信例程S7-200 SMART CPU 自带一个 RS485 端口(端口0),标准型CPU 额外支持 SB CM01 信号板(端口1),信号板可通过 STEP 7-Micro/WIN SMART 软件组态为 RS232 通信端口或 RS485 通信端口。
本例程是以CPU自带的端口0为MODBUS主站,变频器为从站的通信。
1,接线方式CPU自带的端口定义:我们只用3脚和8脚注意,西门子的A,B与变频器的定义是反的,所以西门子8脚A 要与变频器B-对应,西门子3脚 B与变频器A+对应。
接线图如下:2,在与变频器通讯前,最好是先用MODBUS调试助手先测试PLC与调试助手之间的通信。
通过测试我们可能发现,调试助手中一个寄存器的长度与一个VW对应。
变频器MODBUS寄存器地址是16进制的表达方式。
所以我们PLC程序中的地址也最好用16进制表表达,这样方便直观。
变频器如下:但我们的调试助手助手的寄存器地址是十进制的。
所以要转换一下。
以上面的40100为例,转换成16进制为9CA4.所以我们如果要用调试助手与变频器通信调试,要注意将变频器16进制地址转换成10进制的地址在调试助手中监控。
查看变频器参数地址表变频器中部分参数(只读)读取变频器输出频率:7203H。
PLC程序中也按16进制的表达方式,读取从站1中16#7023地二的值。
先用调试助手模拟测试7203H,测试如下我们监控发现报警,代码为4:请求参数错误(slave address,Modbus address,count,RW)。
报这个错误的原因是,寄存器地址超出SMART200的MODBUS寄存器地址范围。
SMART200的寄存器地址范围为40001到49999和 400001 至 465535。
注意这里指的是10进制地址。
对于上面变频器7203H也就是10进制的29187 地址29187超出PLC中40001到49999和 400001 至 465535允许范围了,怎么处理呢?对于没超出范围地地址,可以直接用,对于超出范围的地址,我们就要加上400000,所以以上寄存器地址在PLC中就要用429187 3,PLC与变频器连接通信特别注意:PLC与变频器通信时,超出范围的寄存器地址,要加400001才会对应正确4,具体参考程序:(本例程中除了变频器外,还有多个从站的轮询)。
实用西门子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、三菱变频器硬件接线。
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区起始地址
从站应答指令。
西门子smart200通讯说明文档

TPC和西门子SMART200 PLC通讯说明S7-200 SMART CPU 模块本体集成1个以太网接口和一个RS485接口,通过扩展CM01信号版,其通讯端口数量最多可增到3个。
串口支持下列协议:PPI、ModbusRTU、USS、自由口通讯通讯连接方式:<1>采用标准串口型号的西门子PC/PPI电缆。
<2>采用RS232/485转换器连接,RS485的A正B负与PLC编程口3正8负连接。
<3>TPC触摸屏的RS485接口的A正B负与PLC编程口3正8负连接。
注意:1.只支持串口型号的PPI电缆,不支持USB型号的PPI电缆,使用时请注意。
2.TPC触摸屏的DB9针的口里面7、8脚为RS485的正和负。
1 PPI协议通讯SMART200通讯参数设置:SMART200 PLC可以通过西门子STEP 7-MicroWIN SMART配置波特率和PLC地址。
当为SMART200修改参数后,需要将改动参数的系统块下载至SMART200。
每台SMART200 CPU的默认波特率为9.6 kbps(即: 9600 bps),默认PLC地址为2(数据位,停止位,校验位固定为8位、1位,偶校验)。
通讯参数设置方法:1、将电脑本地网卡的IP 设置和PLC的IP在同一个网段内,PLC默认IP为192.168.2.12、通过网线连接好电脑和PLC连接好,运行西门子STEP 7-MicroWIN SMART软件,双击通讯,更新可访问的设备,找到所连接PLC的IP,选择后点击确认。
3、双击系统块,打开通讯部分,设置RS485端口的通讯参数,设置地址和波特率,默认波特率为9.6 kbps(即: 9600 bps),默认PLC地址为2。
4、MCGS添加西门子PPI驱动,通用串口父设备使用默认参数设置,如下图“西门子_S7200PPI”子设备参数设置如下:设备地址:PLC设备地址,可设定范围1-31,默认值为2。
与西门子PLC实现Modbus-RTU通信实例

与西门⼦PLC实现Modbus-RTU通信实例⼀、准备⼯具及材料1.台式电脑⼀台,笔记本电脑⼀台;2.西门⼦200smart PLC⼀台,3.多功能电表DW9L-RC38或DS9L或DS7L⼀台,温控表TE系列⼀台,4.仪表说明书及通讯协议,5.9针接⼝通讯线⼀根,6.USB转RS485转换器⼀台,7.电源线,⽹线、⽹络交换机等。
⼆、软件安装软件名称:STEP 7-MicroWIN SMART,可从西门⼦⽹站下载。
三、梯形图编程1.主要编程思路PLC使⽤⾃带的RS485接⼝与仪表进⾏通信连接,PLC作为主站,仪表为从站,使⽤标准Modbus-RTU通讯协议。
调⽤编程软件⾃带的Modbus协议库,实现与仪表的数据通信。
2.MBUS_CTRL 和 MBUS_MSG 指令介绍本⽰例使⽤单个主站及 MBUS_CTRL 和 MBUS_MSG 指令。
同⼀理念对使⽤第⼆个主站及 MB_CTRL2 和 MB_MSG2 指令的⽰例同样适⽤。
3.电⼒仪表通信协议:4.梯形图编程(1)设置PLC型号(2)设置库存储器的地址分配(系统已分配VB0~VB285⽤于modbus通信使⽤,我们就从VB286开始)(3)编辑符号表(4)编辑状态图表(5)编制第⼀、⼆段:置位标志位及通讯初始化:波特率Baud=9600,Parity=0⽆校验,Port=0集成CPU内RS485⼝,Timeout从站响应超时50ms。
Done初始化完成返回"TURE",Error输出错误结果。
(6)程序3-4:当MBUS_CTRL初始化完成后,M0.0 从关闭变为接通时,延时T33=10mS时间后,置位第⼀条 MBUS_MSG 指令的启⽤标志 (M2.0)=1。
(7)程序5:读第⼀台从机设备,地址1,型号DW9L或DS9L或DS7L。
当第⼀个启⽤标志 (M2.0) 接通后,调⽤ MBUS_MSG 指令。
只需为启⽤该指令的第⼀次扫描设置 First 参数。
200smart 与V20变频器Modbus rtu通讯例子

200smart与V20变频器Modbus rtu通讯例子基于上次200smart与V20变频器的USS通讯验证之际,我就有心想测试一下Modbus rtu方式连接V20变频器,毕竟,硬件接线基本就绪着的,只是控制程序及V20变频器参数稍微有一些区别而已。
测试硬件:1)cpu200smart SR30;6ES7288-1SR30-0AA02)V20变频器;6SL3210-5BE23-0UV03)DP插头;6ES7972-0BB12-0XA04)编程软件,STEP7MicroWIN SMART V2.45)连接导线若干V20变频器参数设置:1)P0010=30P0970=21设置回工厂设置2)P0003=3(专家参数)3)设置V20Modbus rtu宏参数Cn0114)设置与变频器连接的电机参数P0100开始,省略5)其中:有关通讯参数部分P0700=5P2010[0]=69600bpsP2014[0]=100mS,修改为0mSP2021=1Modbus rtu从站地址P2022=1000应答超时P2023=2RS485通讯协议P2034=2偶校验P2035=1一个停止位设置好宏参数及修改部分参数后,给变频器重新断电再上电,使设置生效。
6)编辑熟悉了的Modbus rtu程序:7)初始化:轮询:V20控制字:其中,40100的控制字数据含义:16#047E:V20变频器准备16#047F:正转16#0C7F:反转16#057E:正向点动16#067E:反向点动16#04FE:故障确认40101,频率设置:VD10读V20变频器状态字及频率:读取实际频率:V20变频器的频率值,由16384对应P1082变频器最大频率(按50Hz计算获取)8)编译、下载用户程序,连接通讯,在线测试:V20变频器频率设置VD10的数据,由V20变频器反馈到40111=VW106,经过计算获得数据存放到VD14=24.99,基本接近频率设置VD10的数据。
西门子200SMART Modbus RTU通讯实例,附程序详解

通讯材料:1)、PLC2台,分别是200SMART 的CR60和SR20;2)、2个DP插头(6ES7972-0BX12-0XA0)3)、连接导线若干(plc电源及通讯)验证内容:令:CR60PLC为主站,发送PLC系统时钟(8个字节的信息)给SR20从站;SR20从站发送一个双字的循环移位数据给主站,并由通讯数据VD100接收输出到QD0。
主站程序:在验证过程中曾经出现一个错误,使MSG指令始终显示为6,表示从站无响应。
我验证时,由于连接2台plc之间的3+、8-没有确认,造成接线错误,使MSG的error错误信息为6,检查后找到原因,重新接线后仍然报警6。
最后检查为控制程序不完整,主要原因是没有给MB0一个初始化操作,造成错误值没有得到有效的刷新。
于是,在程序段1中加入初始化操作得到解决。
主站MSG指令主要理解Addr地址的应用,下面有描述。
从站程序:从站通讯地址设置为1#从站自VB31开始为读取主站VB11开始的8个字节主站系统时钟数据,指定VB31的起始地址是由Addr地址40011定义的,从站循环指令VD11运行结果,将由Mbus_init的Holdstart 定义的起始地址发送和接收。
编写小结:自简而深进行编写Modbus RTU通讯程序,相对从站通讯程序比较简单,仅仅只是指定通讯种类由Mbus_init管脚指定maxIQ/maxAI/maxHOLD/Holdstart定义,其它管脚根据主站定义匹配进行,相对主站需要根据从站地址偏移量来确定。
通讯数据:Modbus通讯程序相对的难点是通讯映射的地址关系。
主站读取从站的数据,起始地址是根据从站Holdstart管脚定义的起始地址开始算,而不是指从站的V区物理地址。
在验证程序中,从站的Mbus_init起始地址为VB11,那么,主站MSG指令的Addr 40001,应该是指从站的VB11地址。
同理,从站读取主站系统时钟,主站的MSG指令的Addr 40011,对应到从站的地址相当于偏移了10个字(偏移量10word + 11byte = 31byte),即为VB31开始的8个字节中存放,Modbus通讯地址计算是40001开始的。
西门子S7-200SMART和变频器的MODBUS无线通讯实例测试

西门子S7-200SMART和变频器的MODBUS无线通讯实例测试本案例详细介绍了通过PLC的MODBUS RTU命令远程控制变频器的编程方法,借助DTD434M西门子等欧美系PLC专用无线通讯终端,非常方便地实现了PLC与变频器的远距离无线操控,解决了工业现场布线不便,移动设备无法拉线以及滑束线磨损断线的难题这里我们选用西门子PLC型号为S7-200 Smart和台达的变频器为例,并结合西安达泰的DTD434M系列无线通讯终端来说明PLC与变频器之间的无线通讯过程。
其他变频器和S7-200Smart的无线MODBUS通讯都是一样的,最大的区别就是通讯代码是各厂家自行定义的,查说明书就行。
我们的硬件测试环境如下 ▼系统硬件件接线表如下▼变频器通讯格式选择如下▼首先我们打开STEP7编程软件,在库里面找到我们要用到的MODBUS协议库文件如下图所示▼1初始化Modbus 主站通信EN:使能:必须保证每一扫描周期都被使能(使用SM0.0)Mode:模式:常为1,使能 Modbus 协议功能;为0 时恢复为系统 PPI 协议Baud:波特率:设为9600,要与从站波特率对应。
Parity :校验:校验方式选择 0=无校验,1=奇校验,2=偶校验。
Timeout:超时:主站等待从站响应的时间,以毫秒为单位,典型的设置值为1000毫秒(1秒),允许设置的范围为 1-32767。
注意:这个值必须设置足够大以保证从站有时间响应。
Done:完成位:初始化完成,此位会自动置1。
可以用该位启动 MBUS_MSG 读写操作。
Error:初始化错误代码(只有在 Done 位为1时有效):0=无错误,1=校验选择非法, 2=波特率选择非法,3=模式选择非法。
详细程序如下图▼2读写从站保持寄存器的数据EN;使能:同一时刻只能有一个读写功能(即 MBUS_MSG)使能。
First:读写请求位:每一个新的读写请求必须使用脉冲触发。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通讯材料:1)、PLC2台,分别是200SMART 的CR60和SR20;2)、2个DP插头(6ES7972-0BX12-0XA0)3)、连接导线若干(plc电源及通讯)
验证内容:令:CR60PLC为主站,发送PLC系统时钟(8个字节的信息)给SR20从站;SR20从站发送一个双字的循环移位数据给主站,并由通讯数据VD100接收输出到QD0。
主站程序:
在验证过程中曾经出现一个错误,使MSG指令始终显示为6,表示从站无响应。
我验证时,由于连接2台plc之间的3+、8-没有确认,造成接线错误,使MSG的error错误信息为6,检查后找到原因,重新接线后仍然报警6。
最后检查为控制程序不完整,主要原因是没有给MB0一个初始化操作,造成错误值没有得到有效的刷新。
于是,在程序段1中加入初始化操作得到解决。
主站MSG指令主要理解Addr地址的应用,下面有描述。
从站程序:从站通讯地址设置为1#
从站自VB31开始为读取主站VB11开始的8个字节主站系统时钟数据,指定VB31的起始地址是由Addr地址40011定义的,从站循环指令VD11运行结果,将由Mbus_init的Holdstart 定义的起始地址发送和接收。
编写小结:自简而深进行编写Modbus RTU通讯程序,相对从站通讯程序比较简单,仅仅只是指定通讯种类由
Mbus_init
管脚指定maxIQ/maxAI/maxHOLD/Holdstart定义,其它管脚根据主站定义匹配进行,相对主站需要根据从站地址偏移量来确定。
通讯数据:
Modbus通讯程序相对的难点是通讯映射的地址关系。
主站读取从站的数据,起始地址是根据从站Holdstart管脚定义的起始地址开始算,而不是指从站的V区物理地址。
在验证程序中,从站的Mbus_init起始地址为VB11,那么,主站MSG指令的Addr 40001,应该是指从站的VB11地址。
同理,从站读取主站系统时钟,主站的MSG指令的Addr 40011,对应到从站的地址相当于偏移了10个字(偏移量10word + 11byte = 31byte),即为VB31开始的8个字节中存放,Modbus通讯地址计算是40001开始的。