s7 200和12台modbus仪表的通讯实例
西门子S7-200Modbus通信与变频器通信实例
西门子S7-200通过自由口需要控制英威腾变频器的正负转停止和故障复位,运行频率控制以及分二次读取运行速度等12条变频器信息。
程序略微变动适应所有Modbus RTU需要控制。
下面是程序,可以直接导入程序后写入PLC试验ORGANIZATION_BLOCK 主程序:OB1TITLE=BEGINNetwork 1// 主程序,初始化并查执各变频器指令// 一.功能介绍// 该程序专为英威腾CHF系列变频器编写。
英威腾CHF系列变频器内置国际标准的MODBUS通信协议。
程序运行时,变频器作为MODBUS协议从站接收来自CPU224 PLC的通信指令,实现起停、频率给定、监控等功能。
// CHF系列矢量变频器在与CPU224通信前须做好以下准备工作:// 1.确认己安装好CHF系列变频器的通讯卡,并将卡上的端口跳线置于RS485端;// 2.用一根带9针阳性插头的串口通信电缆连接在CPU224 PLC的自由通信口端,电缆另一端的第5、3、8线分别接在CHF变频器RS485通讯卡的GND、485+、485一端子上,其余线屏蔽不用;// 3.预先设置变频器以下参数:// PC.00=1 //变频器通讯地址为1// PC.01=3 //通讯波特率9.6K// PC.02=1 //通讯数据偶校验8位数据位1位停止位// P0.03=2 //变频器的运行指令采用通讯方式// P3.01=7 //变频器的A频率设定采用通讯方式(注意P3.04/P3.05对P3.01通讯频率的影响)// 二.程式结构说明// 该程序由1个主程序3个子程序及2个中断程序组成。
子程序里包含了变频器的起停、复位、查询功能指令,由主程序调用。
中断程序为发送及接收指令提供中断支持。
// main //主程式,初始化并查执各变频器指令// sbr0 //CRC校验子程序// sbr1 //通讯端口初始化子程序// sbr2 //发送变频器写入06/读取03指令,共8个字节// intO //接收完成中断程序// int1 //发送完成中断程序LD SM0.1CALL SBR1 //调用初始化子程序,使能PORT0自由口模式Network 2// 接收完成后延时10mS M4.4接通,运行下一次发送数据LDN M4.0AN M4.1TON T35, 1 // 通讯完成后延时10mS M4.4=1,允许下一次通讯,A T35= M4.4 //主要是为了Modbus RTU二次通讯中间3.5字符间隔时间Network 3// 如果发送或接收超时,延时0.2秒复位M4.0/M4.1,这里暂时设置5秒是为了方便调试LD M4.0O M4.1TON T199, 50A T199R M4.0, 2 //发送或接收超过0.2秒没有完成,复位发送/接收Network 4 // 调用Modbus06写入指令,通讯成功,这里暂时不用,可以作打手频率设定,不知道是否支持广播写入,广播写入主要是变频器故障复位和三个打手频率设定.给棉变频器如果需要用PID控制没有必要用PLC的PID// 当VW110≠VW300时把VW110写入变频器,VW110范围(+10000~-10000)÷10000×50Hz// 地址为变频器地址;字节为发送的字节数量=8个字节;指令=03为读取指令,06为写入指令;数据地址=2000H 为英威腾变频器设置频率的地址;数据内容为写入2000H的内容,范围+10000~0~-10000// 运行命令权限最高,如果运行命令没有完成,程序将会一直执行下去,直到运行命令完成LDN M8.1 //没有发送运行命令,当运行命令发送过程中不能够发送频率写通讯AW<> VW300, VW110 //发送的数据VW110与通讯完成返回的数据不等A M4.4 //允许发送S M8.0, 1 //发送为写运行速度命令,为了接收信息时保存到VW300用CALL SBR3, 1, 8, 6, 16#2000, VW110 //把VW110数据写入到变频器地址1的2000H寄存器Network 5// 控制变频器正负转停止和故障复位同时有几个输入时执行最后的指令LD SM0.0LPSA I5.1 //运行命令MOVW 1, VW304LRDA I5.3 //反转命令MOVW 2, VW304LRDA I5.2 //停车命令MOVW 5, VW304LPPA I5.4 //故障复位命令MOVW 7, VW304Network 6 // 设定英威腾变频器1000H通信控制命令,来控制变频器正负转和停止等操作命令// 控制变频器运转英威腾变频器地址1000H 01正转运行02反转运行03正转点动04反转点动05停车06自由停车07故障复位08点动停车LDW<> VW304, VW302 //运行命令VW304与接收的返回信息比较,不相等将一直发送下去A M4.4S M8.1, 1 //为了把返回信息的保存到VW302寄存器CALL SBR3, 1, 8, 6, 16#1000, VW304 //把命令内容VW304写入到英威腾变频器的1000H地址Network 7 // 调用Modbus读取,不要读取范围以外的内容,不然会报错误// 读取变频器状态3000H 运行速度3001H 设定速度3002H 母线电压3003H 输出电压3004H 输出电流3005H运转速度// 当有其他重要的读写命令时该通讯暂停// 分2次读取英威腾变频器3000H~3005H 3008H~3013H信息,本来英威腾变频器说明书说可以连续读取16条信息,不过我读取16条信息返回数据没有CRC校验内容,不知为何,本来是试验程序,有时需要连续读取多条信息,就试验读取2次12条信息LDN M8.0AN M8.1 //程序没有发送写频率和运行命令时才能够读取变频器数据A M4.4LPS //调用查询变频器INCB VB270 //启动T37延时断开计时器A V270.0S M8.2, 1MOVW 16#3000, VW272 //读取3000H开头的连续6条信息LRDAN V270.0S M8.3, 1MOVW 16#3008, VW272 //读取3008H开头的连续6条信息LPPCALL SBR3, 1, 8, 16#03, VW272, 6END_ORGANIZATION_BLOCKSUBROUTINE_BLOCK 初始化:SBR1TITLE=通讯端口初始化子程序// 该程序在PLC的第一个扫描周期运行,主要是设置CPU224自由端口的通信格式、数据接收格式及复位各寄存区(参见西门子S7-200编程手册)。
S7-200实现MODBUS通讯问题
S7-200实现MODBUS通讯问题在EVIEW触摸屏和S7-200 CPU 之间建立一个简单的Modbus 主-从通讯。
在S7-200控制系统应用中,Modbus RTU从站指令库只支持CPU上的通讯0口(Port0)。
要实现Modbus RTU通讯,需要Step7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装Step7-Micro/WIN32 V3.2 Instruction Library(指令库)。
Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。
一、基本过程如下:(一)使用Step7-Micro/WIN V3.2以上版本。
(二)安装Micro/WIN32 V3.2 Instruction Library(指令库)软件包,Micro/WIN的指令树中如图1所示。
图1(三)编程使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。
1、MBUS_INIT指令(初始化从站)MBUS_INIT指令使能和初始化或禁止Modbus通讯,MBUS_INIT指令必须无错误的执行,才能够使用MBUS_SLA VE指令。
2、MBUS_SLA VE指令MBUS_SLA VE指令用于服务Modbus主站的请求,必须在每个循环周期都执行,以便检查和响应Modbus请求。
编程如图2所示,图2二、注意事项(一)调用Step7-Mciro/WIN32 V3.2 Instruction Library(指令库)需要分配库指令数据区(Library Memory)。
库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。
如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。
选重目录树中的程序块,选择右键菜单里的库存储区,设置如图3所示;(二)由子程序参数HoldStart和MaxHold指定的保持寄存器区,是在S7-200 CPU的V数据存储区中分配,此数据区不能和库指令数据区有任何重叠,否则在运行时会产生错误,不能正常通讯(其中及可能造成Error的值为10(从属功能未启用))。
维控屏与多个PLC进行Modbus通讯实验
1、硬件组态:S7-200PLC CPU 224XP、S7-200PLC CPU 226、维控触屏LEVI 777T、RS485总线通讯电缆、编程用USB/PPI电缆。
主从站设定:维控触屏为主站,CPU 224XP、CPU 226为两个从站。
2、通讯端口及设定:从站CPU 224XP PORT0用于Modbus通讯、PORT1用于连接编程电缆。
从站CPU 226 PORT0用于Modbus通讯、PORT1用于连接编程电缆。
维控触摸屏COM1用于Modbus通讯。
各通讯端口对应接线如下图。
3、实验内容:①触摸屏(主站)读两个PLC从站的输入点信号、V存贮区变量;②主站控制两个从站输出点,由触摸屏写入从站浮点数变量;③从站读取主站发送数据并处理。
4、从站CPU 226地址规定为6,端口PORT0通讯波特率9600,无校验、无延迟,允许存取所有的I、Q(MaxIQ=128)、和AI(MaxAI=32)数值,保持寄存器的存贮空间为VB3000开始的1000个字。
从站CPU 224XP地址规定为8,其余设置与6号从站相同。
两个从站通讯初始化编程如下所示(以6号从站为例)。
5、为从站程序块指定库存贮区,注意:程序中不可使用库存储区占用的地址。
6、在维控触屏中下载用于监控Modbus通讯结果的画面程序,如下图。
其中包括两个从站输入点I0.0~I0.7的状态、输出点Q0.0~Q0.7(受主站控制),以及从站Modbus通讯保持寄存器VD3000~VD3013内容(对应40000~40013)、整数40000和40001、浮点数VD3000和VD3014内容等。
上、下两个画面各用于两个从站的数据变化监控。
7、维控屏设置Modbus通讯口:工程配置——通讯口配置——更改连接——选择COM1——选择设备类型为“Modbus”——Modbus RTU Slave并适当调整串口参数及其它通讯设置,这里的设置是指屏(主站)要连接的通讯设备属性(即PLC)。
S7-200-Modbus通信解析
14
S7-200
Hardware Software Workshop
Modbus 报文传输格式
• RTU模式下, 报文中的每个8位字节被转化为两个16进制字符, 然后以 字节为单位进行传输, 并采用CRC(循环冗余校验)方式进行校验。 RTU模式的优点在于同波特率下有着比ASCII模式更高的传输效率。
15
S7-200
Hardware Software Workshop
Modbus 报文传输格式
• 西门子专门为 Modbus RTU 通信开发了指令库,极大地简化了 Modbus RTU 通信的开发,以便于快速实现相关应用。通过 Modbus RTU 从站指令库,使得 S7-200 可作为 Modbus RTU 中的从站设备 集成到 Modbus 网络中,以实现与 Modbus 主站设备的通信。
• Modbus 串行链路协议只有一个主站, 可以有1~247个从站。Modbus 通信只能从主站发起, 从站在未收到主站的请求时, 不能发送数据或互 相通信。
• Modbus 串行链路协议的通信接口可采用 RS-485 接口, 也可使用 RS232C 接口。其中RS-485 接口可用于远距离通信, RS-232C 接口只能 用于短距离通信。
3
S7-200
Hardware Software Workshop
定义
• 使用 Modbus 通信协议是 Modicon 公司提出的一种报文传输协议, 它广泛应用于工业控制领域, 并已经成为一种通用的行业标准。不同 厂商提供的控制设置可通过 Modbus 协议连成通信网络, 从而实现集 中控制。
• 根据传输网络类型的区别, Modbus 通信协议又分为串行链路上的 Modbus 和基于 TCP/IP 协议的 Modbus。
plc培训班-西门子S7200与变频器MODBUS通讯实例详解
西门子S7200与变频器MODBUS通讯实例详解西门子S7200PLC简介西门子S7-200PLC在实时模式下具有速度快,具有通讯功能和较高的生产力的特点。
一致的模块化设计促进了低性能定制产品的创造和可扩展性的解决方案。
来自西门子的S7 - 200微型PLC可以被当作独立的微型PLC解决方案或与其他控制器相结合使用。
Modbus通讯协议简介Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。
ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。
其系统结构既包括硬件、亦包括软件。
它可应用于各种数据采集和过程监控。
ModBus网络只有一个主机,所有通信都由他发出。
网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。
采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。
1 MODBUS RTU协议在S7-200中的应用原理1.1 MODBUS RTU协议与S7-200相互关系简介S7-200 CPU上的通讯口Port0可以支持MODBUS RTU协议,成为MODBUS RTU从站。
此功能是通过S7-200的自由口通讯模式实现,因此可以通过无线数据电台等慢速通讯设备传输。
想在S7-200 CPU与其他支持MODBUS RTU的设备使用MODBUS RTU协议通讯,需要由有S7-200 CPU做MODBUS主站。
S7-200 CPU做主站必须由用户自己用自由口模式,按相关协议编程。
2 从站指令的用法:S7-200控制系统应用中,MODBUS RTU从站指令库只支持CPU上的通讯0口(Port0)。
要实现MODBUS RTU通讯,需要Step7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装Step7-Micro/WIN32 V3.2 Instruction Library(指令库)。
S7-200实现Modbus通信范例
S7-200实现M o d b u s通信范例(总8页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除说明:使用下面的例程你可以在S7-200CPU之间设置一个简单的Modbus通讯。
这个例子是关于Modbus功能码6的(写从站保持寄存器),也可以作为其他所支持的功能码:1, 2, 3, 4, 5, 15 和16 的基本参数设置步骤。
要求:要使用Modbus协议必须先在STEP 7 Micro/Win上安装指令库。
Modbus主站协议只支持STEP 7 Micro/Win SP5及其以上版本.。
1. 硬件设置2. 参数匹配3. 指令库的存储地址4. 保持寄存器值得传输1. 硬件设置例程中的Modbus通讯是在两个S7-200 CPU的0号通讯口间进行的(最好每个CPU都有两个通讯口)。
在主站侧也可以选择相应库文件"MBUS_CTRL_P1" 和 "MBUS_MSG_P1"通过1号通讯口通信。
通讯口1与Micro/WIN建立PG或PC连接,两个CPU的通讯口0通过PPI电缆进行连接(电缆的针脚连接为2,3,7,8)。
图. 012. 参数匹配对于MODBUS通讯, 主站侧需要程序库 "MBUS_CTRL" 和 "MBUS_MSG", 从站侧需要程序库 "MBUS_INIT" and "MBUS_SLAVE"。
在 Micro/WIN 中您需要为主站和从站新建一个项目,程序与参数设置见图.02。
必须要保证主站与从站的“Baud”和"Parity"的参数设置要一致,并且程序块"MBUS_MSG"中的"Slave"地址要与程序块"MBUS_INIT"中的"Addr"所设置的一致 (见图. 02)。
西门子S7-200--MODBUS通信协议和支持MODBUS-RTU协议的电磁流量计、超声波流量计的通信实例
西门子S7_200 MODBUS通信协议和支持MODBUS RTU协议的电磁流量计、超声波流量计的通信实例S7_200系列PLC有一个通信口的也有两个通信口的,这两个口都支持MODBUS通信协议,不过要添加MODBUS库文件(SP6版本的step7 micro/win 软件自带有MODBUS库文件)。
下面根据具体的项目来说明MODBUS的使用:在项目中要采集进水流量的瞬时流量、日累计、月累计、年累计量,流量计本身有4~20mA信号输出和脉冲信号输出,这些输出信号都是瞬时量,只能转换为瞬时流量,而累积量就要通过编写程序来累加,而且信号的传输衰减和计算过程产生的误差就会造成和实际的流量相差很多,现在很多的流量计(包括其他的测量设备)都设计有通讯口,尤其是支持MODBUS协议,所以首选通信方式采集数据,这样可以直接读取我们想要的数据,只需做稍微的数据转换就可以的,同时也减小了工作量提高准确性(实际是按照流量收取费用的)。
实际的硬件连接:10套s7-200组成PPI网络(其中一个200站做主站),有一个从站要采集两个不同厂家的流量计的相关信息。
PPI网络层已经用去了一个端口0,还剩下一个端口1,那么就用这个端口并设置为自由口协议,在程序中调用MODBUS程序块并填写好必要的信息就可以了(其实调用MODBUS程序块时,程序块内就已经设置好端口为自由口协议了)。
图1.MODBUS库文件图2.控制指令图3.控制指令这里MBUS_CTRL_P1指令要一直调用,有一点要指明:图2中的程序是读取其中一台流量计的,图3是读取另一台流量计的,这两个流量计是不一样的。
这里最重要的是MBUS_MSG_P1指令中地址“Addr”的填写,其实这里要填写Modbus从站的寄存器地址(该地址内有我们需要的信息),那么这个地址要怎么填写呢,填写多少呢?这就要查看从站设备(这里是流量计)的“通信手册”了,因为每个厂家的设备都不一样,所以相同信息的寄存器地址也不一样。
S7200实现Modbus通信范例绝对精华-2024鲜版
调试与故障排除
介绍了Modbus通信的调试方法和常见故障排除技巧。
38
学员心得体会分享
2024/3/27
加深了对Modbus通信协议的理解
通过本次课程,学员们对Modbus通信协议的工作原理和通信方式有 了更深入的理解。
特点
Modbus协议是一种主/从(Master/Slave)架构的协议,具有简单、紧凑、易于理解和实现的特点。它采用半 双工通信方式,支持多种电气接口(如RS-232、RS-422、RS-485等),并且可以在各种介质上传输(如双绞线 、光纤、无线等)。
2024/3/27
4
Modbus通信原理及数据格式
提高了调试与故障排除能力
通过课程中的调试方法和常见故障排除技巧的介绍,学员们的调试和 故障排除能力得到了提高。
39
未来发展趋势预测
工业物联网与智能制造的 融合发展
随着工业物联网和智能制造技 术的不断发展,Modbus通信 协议将在工业领域的应用中扮 演更加重要的角色。
多协议融合与互联互通
未来,Modbus通信协议将与 其他工业通信协议进行融合, 实现多协议之间的互联互通, 提高工业通信的效率和可靠性 。
范例代码展示及注释说明
}
01
```
02
2024/3/27
03
以上代码展示了如何使用S7200 PLC实现与Modbus从站 的通信,包括初始化Modbus通信参数、读取从站数据和 向从站写入数据的逻辑处理。在实际应用中,需要根据具 体的硬件设备和通信需求进行相应的调整和优化。
25
04
调试与故障排除技巧分享
实例西门子S7-200SmartModbus通信介绍与实例编程
实例西门子S7-200SmartModbus通信介绍与实例编程01西门子S7-200 SMART作为modbus从站1.检查Micro/WIN SMART Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。
2.编程时使用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.端口:0=CPU中集成的 RS-485,1=可选信号板上的RS-485 或RS-232。
f.延时:附加字符间延时,缺省值为0g.最大I/Q位:参与通信的最大I/O点数,S7-200 SMART 的I/O 映像区为256/256(目前只能最多连接4个扩展模块,因此目前最多I/O点数为188/188)h.最大AI字数:参与通信的最大AI通道数,最多56个i.最大保持寄存器区:参与通信的V存储区字(VW)j.保持寄存器区起始地址:以&VBx指定(间接寻址方式)k.初始化完成标志:成功初始化后置1l.初始化错误代码m.Modbus执行:通信中时置1,无 Modbus 通信活动时为 0。
n.错误代码:0=无错误3.在CPU的V数据区中分配库指令数据区(Library Memory)Modbus Slave 指令库需要一个781个字节的全局V 存储区。
调用STEP 7 - Mciro/WIN SMART Instruction Library(指令库)需要分配库指令数据区(Library Memory)。
西门子PLCs7-1200modbus-tcp通信实例编程详细指导
西门⼦PLCs7-1200modbus-tcp通信实例编程详细指导西门⼦S7-1200 Modbus-TCP通信例⼦【】绝密【】NDA【X】公开⼀、组⽹概述本⽂以 ZKA-4488-ETH 为例介绍西门⼦PLC与深圳市综科智控科技开发有限公司的IO设备进⾏Modbus通讯的步骤设置。
ZKA-4488-ETH 是 8 路数字量输⼊(DI),8 路数字量输出(DO),4路模拟量输⼊(AI,0/4-20mA),4 路模拟量输出设备(AO,0/4-20mA),以太⽹通信。
以 ZKA-4488-ETH 为例,出⼚默认通讯参数如下:ZK模块 IP 为:192.168.0.105TCP 端⼝为:10001(注意:我们模块出⼚时默认端⼝为10001,客户也可以通过ZK模块的配置⽂件把ZK通讯端⼝改成modbus-tcp的默认端⼝502)⼯作模式为:服务器模式⼆、S7-200 Modbus TCP通信1 S7-200 Modbus T CP 通信简介Modbus 是公开通信协议,详细的协议和规范,请访问Modbus 组织的⽹站:/S7-1200 CPU 本体上集成了⼀个 PROFINET 通信⼝,⽀持以太⽹和基于TCP/IP和UDP 的通信标准。
这个PROFINET 物理接⼝是⽀持10/100Mb/s的 RJ45⼝,⽀持电缆交叉⾃适应,因此⼀个标准的或是交叉的以太⽹线都可以⽤于这个接⼝。
使⽤这个通信⼝可以实现 S7-1200 CPU 与编程设备的通信,与HMI触摸屏的通信,以及与其它 CPU 之间的通信,S7-1200 CPU 的PROFINET 通信⼝主要⽀持以下通信协议及服务Profinet IO (V2.0开始)S7 通信(V2.0开始⽀持客户端)TCPISO on TCPUDP(V2.0开始)Modbus TCPHMI通信Web通信(V2.0开始)。
硬件版本V4.1 ⽀持的协议和最⼤的连接资源:S7-1200的连接资源分配给每个类别的预留连接资源数为固定值;您⽆法更改这些值。
S7-200通信实例
S7-200通信及实例——工控网老菜鸟维修经验2008-11-15 14:30:52 阅读370 评论1 字号:大中小........dingqw1234网友在下面的帖子中希望得到多台S7-200之间通过网络读写(NETR和NETW)的通信的解决方法和实例。
本人应dingqw1234网友的要求,特发此帖。
在这个帖子里聊一下S7-200的通信,并特别对多台S7-200之间通过网络读写(NETR和NETW)的通信实现进行举例说明。
........dingqw1234网友的帖子:我想用两台CPU 226CN 通讯,一台的输入点全传到另一台里怎么做?/Forum/ForumTopic.aspx?Id=2008111022085900001........下面先简单了解一下S7-200支持的通信协议:........比较详细的介绍,请参阅《S7-200可编程控制器系统手册》第7章:通过网络进行通信。
........下面仅简单说明一下部分通信协议:PPI(Point to point interface)协议:........该协议是西门子内部协议,不公开。
点对点接口,是一个主/从协议。
主站向从站发送申请,从站进行响应,从站器件不发信息,不初始化信息,只是等待主站的要求并对要求作出响应。
但当主站发出申请或查询时,从站对其响应。
主站可以是其他CPU主机(如S7-300等)、编程器或TD200文本显示器。
网络中的所有S7-200都默认为从站。
S7-200系列中一些CPU如果在程序中允许PPI主站模式,则在RUN模式下可以作为主站,此时可以利用相关的通信指令来读写其他主机,同时它还可以作为从站来响应其他主站的申请或查询。
........主站靠一个PPI协议管理的共享连接来与从站通讯。
PPI并不限制与任意一个从站通讯的主站数量,但是在一个网络中,主站的个数不能超过32。
如果在用户程序中使能PPI主站模式,S7--200 CPU 在运行模式下可以作主站。
S7-200实现MODBUS通讯
S7-200实现MODBUS通讯在EVIEW触摸屏和S7-200 CPU之间建立一个简单的Modbus 主-从通讯。
在S7-200控制系统应用中,Modbus R TU从站指令库只支持CPU上的通讯0口(Port0)。
要实现Modbus R TU通讯,需要Step7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装Step7-Micro/WIN32 V3.2 Instruction Library(指令库)。
Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。
一、基本过程如下:(一)使用Step7-Micro/WIN V3.2以上版本。
(二)安装Micro/WIN32 V3.2 Instruction Library(指令库)软件包,Micro/WIN的指令树中如图1所示。
图1(三)编程使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。
1、MBUS_INIT指令(初始化从站)MBUS_INIT指令使能和初始化或禁止Modbus通讯,MBUS_INIT指令必须无错误的执行,才能够使用MBUS_SLAVE指令。
2、MBUS_SLAVE指令MBUS_SLAVE指令用于服务Modbus主站的请求,必须在每个循环周期都执行,以便检查和响应Modbus请求。
编程如图2所示,图2二、注意事项(一)调用Step7-Mciro/WIN32 V3.2 Instruction Library(指令库)需要分配库指令数据区(Library Memory)。
库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。
如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。
选重目录树中的程序块,选择右键菜单里的库存储区,设置如图3所示;(二)由子程序参数HoldStart和MaxHold指定的保持寄存器区,是在S7-200 CPU的V数据存储区中分配,此数据区不能和库指令数据区有任何重叠,否则在运行时会产生错误,不能正常通讯(其中及可能造成Error的值为10(从属功能未启用))。
西门子1200通讯实例
西门子1200通讯实例
在S7-1200启动的第一个扫描周期,将数值4传送到在“Modbus_Comm_Load.DB”MODE,将工作模式设置为半双工RS485两线模式
Modbus主站初始化
初始化完成位使能MOVE指令,对步地址"Master.Step"赋值1 第一步:"Master.Step"值=1时触发“Modbus_Master”指令读取Modbus RTU 从站地址2保持寄存器40001地址开始的两个字长的数据,将其存放于“DATA_PTR”指定的地址中
第一步完成位或错误位作为条件转到第二步,使能MOVE指令,对步地址"Master.Step"赋值2
第二步:"Master.Step"值=2时触发“Modbus_Master”指令,将存放于“DATA_PTR”指定的地址中的4个字数据写到Modbus RTU从站40003地址开始的保持寄存器
第二步完成位或错误位作为条件转到第三步,使能MOVE指令,对步地址"Master.Step"赋值3
第三步:"Master.Step"值=3时触发“Modbus_Master”指令,将存放于“DATA_PTR”指定的地址中的8位数据写到Modbus RTU 从站Q0.0-Q0.7
返回第一步:"Master.Step"值=3,且第三步完成位或错误位作为条件回到第一步,使能MOVE 指令,对步地址"Master.Step"赋值1。
西门子S7-200--MODBUS通信协议和支持MODBUS-RTU协议的电磁流量计、超声波流量计的通信实例
西门子S7_200 MODBUS通信协议和支持MODBUS RTU协议的电磁流量计、超声波流量计的通信实例S7_200系列PLC有一个通信口的也有两个通信口的,这两个口都支持MODBUS通信协议,不过要添加MODBUS库文件(SP6版本的step7 micro/win 软件自带有MODBUS库文件)。
下面根据具体的项目来说明MODBUS的使用:在项目中要采集进水流量的瞬时流量、日累计、月累计、年累计量,流量计本身有4~20mA信号输出和脉冲信号输出,这些输出信号都是瞬时量,只能转换为瞬时流量,而累积量就要通过编写程序来累加,而且信号的传输衰减和计算过程产生的误差就会造成和实际的流量相差很多,现在很多的流量计(包括其他的测量设备)都设计有通讯口,尤其是支持MODBUS协议,所以首选通信方式采集数据,这样可以直接读取我们想要的数据,只需做稍微的数据转换就可以的,同时也减小了工作量提高准确性(实际是按照流量收取费用的)。
实际的硬件连接:10套s7-200组成PPI网络(其中一个200站做主站),有一个从站要采集两个不同厂家的流量计的相关信息。
PPI网络层已经用去了一个端口0,还剩下一个端口1,那么就用这个端口并设置为自由口协议,在程序中调用MODBUS程序块并填写好必要的信息就可以了(其实调用MODBUS程序块时,程序块内就已经设置好端口为自由口协议了)。
图1.MODBUS库文件图2.控制指令图3.控制指令这里MBUS_CTRL_P1指令要一直调用,有一点要指明:图2中的程序是读取其中一台流量计的,图3是读取另一台流量计的,这两个流量计是不一样的。
这里最重要的是MBUS_MSG_P1指令中地址“Addr”的填写,其实这里要填写Modbus从站的寄存器地址(该地址内有我们需要的信息),那么这个地址要怎么填写呢,填写多少呢?这就要查看从站设备(这里是流量计)的“通信手册”了,因为每个厂家的设备都不一样,所以相同信息的寄存器地址也不一样。
学习s7-200之间的Modbus通讯
学习s7-200之间的Modbus通讯参摘微信读书 书名:西门⼦PLC⼯业通信完全精通教程作者:向晓汉苏⾼峰关于S7-200两个PLC互相通信⼀、使⽤Modbus协议库⼆、Modbus的地址Modbus地址通常是包含数据类型和偏移量的5个字符值。
第⼀个字符确定数据类型,后⾯四个字符选择数据类型内的正确数值。
(1)主站寻址Modbus主站指令可将地址映射到正确功能,然后发送⾄从站设备。
Modbus主站指令⽀持下列Modbus地址:00001到09999是离散输出(线圈);10001到19999是离散输⼊(触点);30001到39999是输⼊寄存器(通常是模拟量输⼊);40001到49999是保持寄存器。
所有Modbus地址都是基于1,即从地址1开始第⼀个数据值。
有效地址范围取决于从站设备。
不同的从站设备将⽀持不同的数据类型和地址范围。
(2)从站寻址Modbus主站设备将地址映射到正确功能。
Modbus从站指令⽀持以下地址:00001⾄00128是实际输出,对应于Q0.0-Q15.7;10001⾄10128是实际输⼊,对应于I0.0-I15.7;30001⾄30032是模拟输⼊寄存器,对应于AIW0⾄AIW62;40001⾄04XXXX是保持寄存器,对应于V区。
所有Modbus地址都是从1开始编号的。
⽰例:三、相关指令介绍(⼀)做主站使⽤Modbus master库(1)初始化主设备指令MBUS_CTRL⽤于S7-200端⼝0(或⽤于端⼝1的MBUS_CTRL_P1指令)可初始化、监视或禁⽤Modbus通信。
EN:使能端,有信号则该指令执⾏Mode:输⼊的值⽤于选择通信协议。
输⼊值为 1 时,将 CPU 端⼝分配给 Modbus 协议并启⽤该协议。
输⼊值为 0 时,将 CPU 端⼝分配给PPI 系统协议并禁⽤ Modbus 协议。
Baud:波特率Parity:设置为与 Modbus 从站设备的奇偶校验相匹配。
S7-200SMART MODBUS通信介绍与实例编程
S7-200SMART MODBUS通信介绍与实例编程西门子smart200PLC的详细结构图一. 西门子S7-200 SMART作为modbus从站1.检查Micro/WIN SMART Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT 和MBUS_SLAVE两个子程序。
西门子smart200的modbus从站库文件图1. 指令树中的库指令2.编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。
关于参数的详细说明,可在子程序的局部变量表中找到;西门子smart200的modbus从站详细分析图2.调用Modbus RTU通信指令库图中参数意义如下:a.模式选择:启动/停止Modbus,1=启动;0=停止b.从站地址:Modbus从站地址,取值1~247c.波特率:可选1200,2400,4800,9600,19200,38400,57600,115200d.奇偶校验:0=无校验;1=奇校验;2=偶校验e.端口:0=CPU中集成的 RS-485,1=可选信号板上的RS-485 或 RS-232。
f.延时:附加字符间延时,缺省值为0g.最大I/Q位:参与通信的最大I/O点数,S7-200 SMART 的I/O映像区为256/256(目前只能最多连接4个扩展模块,因此目前最多I/O点数为188/188)h.最大AI字数:参与通信的最大AI通道数,最多56个i.最大保持寄存器区:参与通信的V存储区字(VW)j.保持寄存器区起始地址:以&VBx指定(间接寻址方式)k.初始化完成标志:成功初始化后置1l.初始化错误代码m.Modbus执行:通信中时置1,无 Modbus 通信活动时为 0。
n.错误代码:0=无错误3.在CPU的V数据区中分配库指令数据区(Library Memory)Modbus Slave 指令库需要一个781个字节的全局 V 存储区。