S7_200实现Modbus通信范例绝对精华资料全
西门子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,具体参考程序:(本例程中除了变频器外,还有多个从站的轮询)。
2024版S7200实现Modbus通信范例绝对精华
通过课程中的调试方法和常见故障排除技巧的介绍,学员们的调试和 故障排除能力得到了提高。
未来发展趋势预测
工业物联网与智能制造的 融合发展
随着工业物联网和智能制造技 术的不断发展,Modbus通信 协议将在工业领域的应用中扮 演更加重要的角色。
多协议融合与互联互通
智能化与自动化程度的提 升
Modbus通信程序设计与实现
通过实例演示了如何在S7200 PLC上编写Modbus通信程序,包括主 站和从站程序的设计和实现。
调试与故障排除
介绍了Modbus通信的调试方法和常见故障排除技巧。
学员心得体会分享
加深了对Modbus通信协议的理解
通过本次课程,学员们对Modbus通信协议的工作原理和通信方式有 了更深入的理解。
数据格式
Modbus协议支持两种数据格式,即RTU(Remote Terminal Unit)格式和ASCII格式。RTU格式采用二 进制编码方式,具有更高的传输效率;而ASCII格式采用字符编码方式,易于人类阅读和调试。两种格式 在数据帧结构、校验方式等方面有所不同。
Modbus在工业自动化领域应用
技巧3
善用调试工具
实用调试技巧分享
实用调试技巧分享
技巧4:注意细节
在排查过程中注意细节问题,如通信参数的设置、设备 地址的匹配、数据类型的选择等,避免因为细节问题导 致排查失败。
05
优化S7200与Modbus从站通信性能方法 探讨
提高数据传输速率策略探讨
选用高速通信接口
采用高速串行通信接口,如RS-485或以太网接口, 以提高数据传输速率。
优化数据帧结构
减少数据帧中的冗余信息,提高有效数据的传输效率。
S7-200SMART Modbus TCP通信
S7-200SMART Modbus TCP 通信Modbus TCP 是通过工业以太网 TCP/IP 网络传输的 Modbus 通信。
S7-200 SMART 采用客户端-服务器方法,Modbus 客户端设备通过该方法发起与 Modbus 服务器设备的 TCP/IP 连接。
建立连接后,客户端向服务器发出请求,服务器将响应客户端的请求。
客户端可请求从服务器设备读取部分存储器,或将一定数量的数据写入服务器设备的存储器。
如果请求有效,则服务器将响应该请求;如果请求无效,则会回复错误消息。
S7-200 SMART 支持做 Modbus TCP 的客户端或者服务器,可以实现 PLC 之间通信,也可以实现与支持此通信协议的第三方设备通信。
通信伙伴数量比较多的时候,可以使用交换机,扩展以太网接口,如图1.通信功能图1.通信功能STEP7-Micro/WIN SMART 从V2.4 版本开始,软件中直接集成 Modbus TCP 库指令。
安装软件后,Modbus TCP 指令位于 STEP7-Micro/WIN SMART 项目树中“指令”文件夹的“库”文件夹中。
如图2.Modbus TCP库指令所示。
指令分为客户端和服务器两种,目前指令版本为 V1.0。
图2.Modbus TCP库指令Modbus TCP 客户端:Modbus 客户端指令MBUS_CLIENT使用 CPU 的以下资源:占用主动连接资源。
最多有8个主动连接资源连接多个服务器伙伴时,自动生成连接 ID。
Modbus TCP 客户端使用以下程序实体:1 个子程序2849 个字节的程序空间V 存储器的 638 字节模块,用于指令符号Modbus TCP 服务器:Modbus 服务器指令 MBUS_SERVER 使用 CPU 的以下资源占用被动连接资源。
最多有8个被动连接资源连接多个客户端伙伴时,自动生成连接 ID。
Modbus TCP 服务器使用下列程序实体:1 个子程序2969 个字节的程序空间V 存储器的 445 字节模块,用于指令符号指令库编程后,必须从 STEP 7-Micro/WIN SMART 的为使用的指令分配库存储区地址。
(完整word版)西门子s7-200与新华DCS的Modbus通讯
多套西门子S7—200 PLC与新华DCS的Modbus通讯以金川项目为例一、硬件组成:1)西门子S7-200PLC 2套2)两芯屏蔽线 2条3)网线(T568B标准) 1根4)NPORT(串口服务器) (以5230I为例) 1个5)工业交换机 1个6)新华DCS系统 1套二、硬件连接1)硬件接线:如图2:PLC与NPORT之间的电缆(双芯屏蔽电缆)接法:1、PLC处接串口0,红色线接3端,蓝色线接8端,标准的RS485接法;2、NPORT处接port1,红色线接R+/D+,蓝色线接R—/D—,PLC1接NPORT的PORT1口,PLC2接PORT2口。
所有绿色线代表网线,按T568B接法,如图1所示。
图1 T568B线序1#交换机PLC1PLC2新华DCS 工程师站PORT2PORT1图2 硬件连接图2)硬件测试测试网线:拔掉NPORT 到1#交换机的交换机端网线,用电脑对NPORT 的IP 进行设置(NPORT5230I 的初始IP 为:192.168.127。
254),将其IP 设置为与C 网在同一子网内(如222.222。
221。
88,具体方法见NPOT 的设置).三、 NPORT 配置在工程师站安装NPORT 5230I 驱动程序“NPort Administration Suite ”.安装完毕后在开始菜单中选择程序,然后再选择刚安装好的NPort Administration Suite NPort Administrator 。
打开后选择Search (自动查找在网络内的Nport ),或点Search IP 输入NPORT 的IP 进行搜索如果通讯正常,那么将显示如下界面配置Nport 5230I设置NPORT 的端口通信方式,本例为com4和com5口端口参数为:9600,偶校验,8位数据位,1位停止位,RTS/CTS,Enable,RS485 2wire.操作模式一定要设置为Real COM Mode,设置好时区,其他参数可以不用设置。
S7-200PLC之间进行Modbus通讯实验
1、硬件组态:S7-200PLC CPU 224XP、S7-200PLC CPU 226、维控触屏LEVI 777T、S7-200PLC之间通讯用RS485通讯电缆、S7-200PLC与维控触屏通讯用RS485通讯电缆、编程用USB/PPI电缆。
主从站设定:CPU 224XP主站,CPU 226为从站。
2、通讯端口及设定:主站CPU 224XP PORT0用于Modbus通讯、PORT1用于连接编程电缆。
从站CPU 226 PORT0用于Modbus通讯、PORT1用于连接维控触摸屏COM1(PPI 协议)。
各端子对应接线如下图。
3、实验内容:①主站读从站输入点信号、V存贮区变量;②主站控制从站输出点、写入从站整数变量及浮点数变量并在触摸屏(与从站相连)上显示;③从站读取主站发送数据并处理。
4、CPU226从站通讯初始化编程如下所示。
从站地址规定为6,端口PORT0通讯波特率9600,无校验、无延迟,允许存取所有的I、Q(MaxIQ=128)、和AI(MaxAI=32)数值,保持寄存器的存贮空间为VB3000开始的1000个字。
5、为从站程序块指定库存贮区,注意:程序中不可使用库存储区占用的地址。
6、在维控触屏中下载用于监控Modbus通讯结果的画面程序,如下图。
其中包括从站本机输入点I0.0~I0.7的状态、输出点Q0.0~Q0.7(受主上控制),以及从站Modbus通讯保持寄存器VB3000~VB3013内容、整数VW3000、浮点数VD3000和VD3008内容等。
7、准备好主站通讯程序。
为主站程序块指定库存贮区,注意:程序中不可使用库存储区占用的地址。
程序如下所示(上电初始化程序实际应用时要放在网络1),其中主站输入点I1.0用于触发数据传送,VB3000用于存贮读从站输入点数据,VB5000用于存贮要写入从站控制输出点的数据,VB6000用于存贮要写入从站V存贮区的数据,VB7000用于存贮由从站读取的V存贮区数据(用于验证写从站结果)。
西门子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与ACS510变频器MODBUS通信完整版(包含程序)
ABB变频器通讯
MODBUS通讯
1. ACS510变频器参数设置:
9802=1 MODBUS
5302=1 站号 5303=9.6kbit/s 波特率 5304=1 校验方式为8N2
5305=0 1001=10 由MODBUS控制变频器启停1003=为双向
1102=0 由MODBUS控制变频器给定速度(0-20000对应0-50Hz)
1103=8 2007= -50HZ
2.控制变频器启停
a.初始化,即向Modbus寄存器40001中写入1142(16进制数为0476)并延时100毫秒;b.启动电机,即向Modbus寄存器40001中写入1151(16进制数为047F)
c.反转电机,即向Modbus寄存器40002中写入一个负值-20000~0
d.停止电机,即向Modbus寄存器40001中写入1143(16进制数为0477)
c.故障复位,即向Modbus寄存器40001中写入1270(16进制数为04F6)
3.用Modbus修改给定频率的方法
主机向通讯给定1(Modbus寄存器40002)中写入设定的频率数值(范围=0~+20000(换算到0~1105给定1最大),或-20000~0(换算到1105给定1最大~0));
S7-200 程序
注意;启动电机之前请先给VD604赋值!。
s7200与v20变频器modbus通信详细教程
s7-200-与v20变频器-modbus 通信详细教程首先恢复出厂设置然后设置电机参数恢复出厂设置方法恢复之后就开始写入电机参数P0100[0] = 0P0304[0] = 400P0305[0] = 1.88P0307[0] = 0.75KWP0308[0] = 0.8P0310[0] = 50P0311[0] = 1395P1900[0] = 2此时出现一个感叹号目前变频器有报警信息然后按M键进入电机快速调试的下一步选择cn011出现P1080然后继续执行P1080[0] = 0.00P1082[0] = 50P1120[0] = 10sP1121[0] = 10S然后长按M键但是还是需要电机数据识别按下启动键后变频器开始数据识别等待一会后在显示菜单下长按m键绿灯开始闪烁在显示菜单下按m键进入参数列表键P0010[0]改成1接下来开始modbus设置P2014 设置为0 如设置100 会造成F72报错所以报F72错误设置P2014 的值为0即可这是连接方式红色连P+绿色连接N-然后L1 L2 L3接三相电输入UVW 接电机之后编写程序这是控制字确定后即可下载验证Done 完成位:读写功能完成位。
Error 错误代码:只有在Done 位为1时,错误代码才有效。
常用的控制字:047E :运行准备047F :正转启动0C7F :反转启动04FE :故障确认将这个值写入40100 vb10中即可VW10 控制字地址速度给定vw20读取状态vb30Vw32 实际值写入上坡时间vw50Modbus错误代码:Done 完成位:读写功能完成位Error 错误代码:只有在Done 位为1时,错误代码才有效代码描述0 无错误1 响应校验错误2 未用3 接收超时(从站无响应)4 请求参数错误(slave address, modbus address, count ,R/W)5 Modbus /自由口未使能6 Modbus 正在忙于其他请求7 响应错误(响应不是请求的操作)8 响应CRC校验和错误101 从站不支持请求的功能102 从站不支持数据地址103 从站不支持此种数据类型104 从站设备故障105 从站接收了信息,但是响应被延迟106 从站忙,拒绝了该信息107 从站拒绝了信息108 从站存储区奇偶错误然后写入启动准备控制字速度给定斜坡上升时间。
S7-200之间进行MODBUS 通讯
S7-200之间进行MODBUS 通讯一、准备工作1、硬件准备:两个CPU226,一根通讯电缆, 两头均为九针公插头,可以采用DP头(插头接线为3、8,其中3为正,8为负。
2、指令库安装,指令库包括主站指令库和从站指令库(库文件见附件)①从站指令库解压缩后,按照安装向导即可完成从站指令的安装②右击下图中的“库”,点击“添加/删除库”,按照向导将主站指令安装进去二者均安装完成后,库下面会显示如下二、编写主站程序1、主站指令包括两块:MBUS-CTRL和MBUS-MSG,下面先对这两个块的参数进行解释MBUS-CTRLMBUS-MSG,2、例子程序见附件,下面对例子程序的每一个网络进行讲解1)、第一个扫描周期复位各个标志位和done位2)、初始化完成后,置M0.1为1,开始读写功能3)、初始化完成后,M0.0会一直保持“on”状态Baud 波特率:设为9600,要与从站波特率对应4)、读从站实际输入值注:主站中Slave的值要与从站中的Addr的值一致First前面必须是脉冲,且其必须与EN端同步,故我们程序中的First 和EN的条件是一样的5)、上个网络中的M0.2得电后,复位M0.1和EN端的M0.5,形成循环扫描6)、第一个MSG的DONE端的M0.2得电后,启动下面网络的读写功能注:从站对应的V区地址为:2*(Addr-40001)+Holdstart.。
若这里的Addr=40100,而从7)、M0.3得电后,复位M0.2站中的Holdstart=&VB0,则从站中对应的地址为2*(40100-40001)+&VB0=VB198 8)、M0.3得电后,启动下面的MSG的读写功能9)、DONE端的M0.4得电后,复位EN端的M0.310)、M0.4得电后,下网络使能注:写从站实际Q值时,Count值=1或8n(n=1、2、3…….)当Count为1时,Addr可以为任何离散输出,8n时,Addr=8m+1(m=0、1、2…..)三、编写从站程序1、从站指令包括两块:MBUS-INIT和MBUS-SLA VE,下面先对这两个块的参数进行解释MBUS-INITMBUS-SLA VE2、从站例子程序见附件四、注意事项注1:程序中不可使用库存储区占用的地址注2:同一个线圈不可在上位和下位中同时使用,比如Q0.1在下位中使用了,上位中就不可对其进行写功能,反之亦然。
西门子200PLCmodbus通讯实例(带程序)
西门子200PLCmodbus通讯实例(带程序)
1、在实际应用中,现场不只有plc,还会有智能数显表,上位机通过2个设置多个串口分别读取PLC、智能仪表数据简单不过,但如何实现1个串口读取不同设备数据
2、首先配置好智能仪表从站通讯参数,拿9600 8 1 none 地址3举例
3、200PLC主站程序
第一步初始化,复位modbus库完成位,初始化完成后,启动读写指令m0.1置位
第二步,网络3,填写从站通讯参数
第3步M0.1置位读取从站数据,读取保持寄存器40001-40008 8个数据根据数据格式写入&VB1000,如40001 40002为32位浮点数,则保存在VB1000 VB1001 VB1002 VB1003中,依次类推,读取完成M2.1置位,复位读取从站保持寄存器M0.1 M2.3
读取输入寄存器,读取完成M2.2置位,复位M2,.1
M2.2置位,写数据开始,VB3000写入00001中,写完成,M2.3置位,开始读,M2.2复位。
来源:工控人家园、台达plc教程、工控产品有哪些、三菱plc安装、工控plc书籍、电工论坛、plc模拟量输入模块、工控论坛、()(微信/QQ:503660666) 欢迎分享本文,转载请保留出处!。
S7-200PLC一主8从Modbus例程说明
Modbus-RTU一主8从通讯例程说明基于西门子S7-200系列PLC的Modbus通讯,写了一个一主多从的通讯例程,现就此通讯例程加以详细说明,以供大家工程开发过程中使用。
一:指令说明S7-200PLC的Modbus通讯,西门子本身没有直接的相关指令,所以需要给STEP7里面添加西门子官方提供的Modbus库文件。
添加好库文件后会出现下图所示。
点开【库】就会出现左下图所示,分别打开与Modbus有关的文件夹就会出现右下图所示的可以直接调用的指令。
【Modbus Master Port0(v1.2)】通讯口0作为Modbus主站用到的指令。
【MBSU_CTRL】通讯口0的Modbus主站初始化指令。
【EN】初始化指令必须每个扫描周期都使能【Mode】通讯端口模式设置:1:Modbus 0:默认协议(PPI)【Baud】通讯波特率:我们设置为9600【Parity】校验位:0无校验;1奇校验;2偶校验【Timout】通讯超时时间:我们设置为2000ms【MBUS_MSG】通讯口0的Modbus主站读写指令。
【EN】指令使能【First】指令触发,必须是上升沿触发-|P|-注:这里使能和触发最好使同一个触点【Slave】读写的从站号【RW】读写选择:0读取;1写入【Addr】对应从站的寄存器的Modbus起始地址【Count】访问的寄存器的数量(由起始地址开始)【DataPir】数据指针:写入的数据地址/读回的数据地址【Done】指令完成标志位【Error】错误代码:只在Done为1的时候有效【Modbus Master Port1(v1.2)】通讯口1作为Modbus主站用到的指令。
【MBSU_CTRL_P1】通讯口1的Modbus主站初始化指令。
【MBUS_MSG_P1】通讯口1的Modbus主站读写指令。
【Modbus Slave Port0(v1.0)】通讯口0作为Modbus从站用到的指令。
西门子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指令实现通讯方法及例程MODBUS主站程序:MODBUS从站程序:在从站中的“MBUS_INIT”指令的最下面一个参数“HoldStart”项设置为“&VB1000”,是因为从站和主站通信的数据放在了以VB1000开始的存储区内,其实这个地址不是固定的,但是必须是要通信数据的首地址;当主站要访问从站的前两个字节数据时,在主站“MBUS_MSG”指令的“Addr”参数项数据是40001而不是41001,说明Addr对应从站Holdstart的相对地址而不是从站的绝对地址;还有就是当主站要访问从站的第50、51字节时,“Addr”参数项数据是40026而不是40050。
因为Addr的最小单元是字,从40001开始是第0个字,也就是40001对应PLC发送的数据中从站寄存器地址段数据是00 00而不是00 01,40002发送的从站寄存器地址是00 02,而不是00 01了,一次往后推,就可以得到40050对应发送的地址段数据是00 98,也就是对应从站中的VB1098和VB1099.其实S7-200 MODBUS指令很好用,也很简单,就在主站和从站各自加上个“头”就可以了,但是很多时候回出现问题就是因为没有很好的去把握主站和从站的数据怎么对应,以至于找不准我们要的数据反而怀疑是协议没有设置好,或通信有问题等。
建议:MODBUS不是并不是西门子200的专用协议,PPI才是。
所以如果只是200和200之间通信的话首选PPI,因为PPI的可靠性更强,编程更简单,只需主站编写读写指令(用向导时又省去了编程的麻烦直接调用向导子程序就行)从站不用编写任何的程序;PPI 的另一个优势是通信速率快最高是187.5Kbps,而MODBUS最快是115.2Kbps。
我曾做的项目时一主十从,主站没有其他任何程序就只有通信,从站也一样,但是主站控制某一从站输出时要有2~3秒的延时,有的更长,但PPI即使是整套程序编完也感觉不出延时。
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 存储区。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
说明:
使用下面的例程你可以在S7-200CPU之间设置一个简单的Modbus通讯。
这个例子是关于Modbus功能码6的(写从站保持寄存器),也可以作为其他所支持的功能码:1, 2, 3, 4, 5, 15 和16 的基本参数设置步骤。
要求:
要使用Modbus协议必须先在STEP 7 Micro/Win上安装指令库。
Modbus主站协议只支持STEP 7 Micro/Win V4.0 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)。
图. 01
2. 参数匹配
对于MODBUS通讯, 主站侧需要程序库 "MBUS_CTRL" 和 "MBUS_MSG", 从站侧需要
程序库 "MBUS_INIT" and "MBUS_SLAVE"。
在 Micro/WIN 中您需要为主站和从站新建一个项目,程序与参数设置见图.02。
必须要保证主站与从站的“Baud”和"Parity"的参数设置要一致,并且程序块"MBUS_MSG"中的"Slave"地址要与程序块"MBUS_INIT"中的"Addr"所设置的一致 (见图.
02)。
Micro/WIN“系统块”中设置的0通讯口的波特率与MODBUS协议无关("Mode" = "1")。
图. 02
下面的表格列出了程序块各个参数选项及其意义
主站
MBUS_CTRL
表 01
1) 参看STEP 7 Micro/WIN 帮助: "MODBUS主站执行MBUS_MSG时的错误代码MBUS_MSG" 。
MBUS_MSG
表 02
1)参看STEP 7 Micro/WIN 帮助: "MODBUS主站执行MBUS_MSG时的错误代码MBUS_MSG" 。
从站
MBUS_INIT
表 03
2) 最大的地址取决于所用CPU的类型及其最大值。
3)参看STEP 7 Micro/WIN 帮助: “MODBUS从站协议的错误代码”。
MBUS_SLAVE
表 04
3)参看STEP 7 Micro/WIN 帮助: “MODBUS从站协议的错误代码” 。
3. 库的存储地址
项目完成后必须要在Micro/WIN中定义库的存储地址,当定义完存储区后, 要保证
在任何情况下不能再被其它程序所使用 (主站侧: "DataPtr" + "Count" 从站侧: "HoldStart" + "MaxHold")。
图. 03
4. 保持寄存器值的传输
将程序下载到相应的CPU后,可以在状态表中给主站侧的V存储区赋值,然后监视从站的变化。
当主站的I0.0使能后,VW2中的容就被发送到从站并写入从站的VW2 。
保持寄存器值的传输见图. 04。
指针"DataPtr" 代表了V区被读的起始地址。
参数 "Count" 表明了地址"Addr" = "4xxxx" (保持寄存器)以字为单位被读的个数。
主站中被读取的V存储区被写入地址为"Addr" = "40002" ("RW" = "1")的保持寄存器中。
保持寄存器是以字为单位工作的,它与从站的V区地址对应。
指针 "HoldStart" 明确了与保持寄存器起始地址40001相对应的V存储区的初始地址。
可以这样计算从站的V区目标指针:
2 * (Addr - 40001) + HoldStart = 2 * (40002 - 40001) + &VB0 = &VB2
另外,要保证"MaxHold" 定义的数据区能够包含主站侧所要写入的数据区:
MaxHold >= Addr - 40001 + Count = 40002 - 40001 + 1 = 2
Fig. 04
关于STEP 7 Micro/WIN MOBDUS 库的更多信息可以参看 S7-200 系统手册 ( Entry ID 1109582) 和 STEP 7 Micro/WIN 帮助。
如何在 STEP 7 Micro/WIN 中找到 Modbus RTU 协议和 USS 协议操作库?
说明:
在 STEP 7 Micro/WIN 中,Modbus RTU 协议和 USS 协议操作库位于操作树的“库”文件夹中。
MODBUS 函数库要求 STEP 7 Micro/WIN 为 V3.2 或更高版本。
图1:添加函数库
这些库是附加函数库,并非组态软件 STEP 7 Micro/WIN 的组成部分。
您如果需要使用 Modbus RTU 协议,必须购买“SIMATIC STEP 7 Micro/WIN ADD ON: Function Library V1.1 (USS + MODBUS) for STEP 7 Micro/WIN 32”软件。
这个可选附加函数库的订货号是 6ES7830-2BC00-0YX0。
安装顺序:
先安装“STEP 7 Micro/WIN 32 Toolbox V1.0”(包括库),然后安装“STEP 7 Micro/WIN”。
注意:
这个函数库包含可以在 STEP 7 Micro/WIN V3.2 中使用的 Modbus RTU 协议库和USS 协议库。
如果您安装了 STEP 7 Micro/WIN V4.0 SP5 或者更高版本,那么操作库中就会包含下列函数:
Modbus RTU Master V1.2 对应端口 0 和端口 1
Modbus RTU Slave V1.0 对应端口 0
USS protocol V2.3 对应端口 0 和端口 1。