S7-200的MODBUS RTU主站协议库使用方法
- 格式:pdf
- 大小:215.10 KB
- 文档页数:5
S7-200使用Modbus协议【工控老鬼】在使用Modbus协议时,计算机与S7-200之间通讯直接使用PPI通讯电缆即可。
但如果通讯距离较远,或者需要将多个S7-200连接到一个通讯总线上时,我们可以通过如下方法配制通讯链路。
选配一个计算机通讯端口由于S7-200通讯端口物理层使用的是RS-485通讯规范,因此我们需要在计算机端增加一个RS-485通讯端口,才能与计算机通讯建立通讯。
如果计算机闲置的串口,我们可以选配一个RS-232转RS-484转换器即可;如果没有闲置的串口,我们通过在计算机中增加一个RS-485通讯卡也可以;现在很多计算机都有USB口,我们也可以在计算机上外接一个USB转RS-485转换器。
连接通讯电缆S7-200的通讯端口是一个9孔(famel)D型插头,针脚分布如下所示:针脚信号1地线(RS-485 逻辑地)224 V 地线(RS-485 逻辑地)3信号B (RxD/TxD+)4RTS (TTL level)5地线(RS-485 逻辑地)6(空)724 V 电源8信号A (RxD/TxD-)9通讯选择S7-200通讯端口(端口0)与RS-485板卡或RS-485/RS-232转换器之间接线,如下图所示:S7-200编程及设置在缺省情况下S7-200的通讯端口是不支持Modbus协议的,要想实现Modbus通讯必需在PLC的主程序模块中调用Modbus通讯子程序。
Modbus通讯子程序可以从“STEP7-Micro/WIN Add-On: Instruction Library (STEP7-Micro/WIN附件:指令库)”中获得。
在安装了“STEP7-Micro/WIN附件:指令库”后,在导航树“指令/库”下面我们可以找到“ModbusProtocol”。
在其下面包含了MBUS_INIT和MBUS_SLAVE两个子程序,MBUS_INIT 用于对Modbus通讯进行初始化,MBUS_SLAVE用于在指定端口上提供Modbus从站通讯服务。
西门子S7-200 PLC Modbus从站设置2013-01-27 11:43:43| 分类:PLC|举报|字号订阅西门子S7200做Modbus从站需要使用MBUS_INIT、MBUS_SLAVE即可。
MBUS_INIT指令被用于启用和初始化或禁止Modbus通讯。
在使用MBUS_SLAVE 指令之前,必须正确执行MBUS_INIT指令。
指令完成后立即设定"完成"位,才能继续执行下一条指令。
在每次扫描且EN输入打开时执行该指令。
应当在每次通讯状态改变时执行MBUS_INIT指令。
因此,EN输入应当通过一个边缘检测元素用脉冲打开,或者仅在首次扫描时执行。
"模式"输入数值选择通讯协议:输入数值1将端口0指定给Modbus协议并启用协议;将输入数值0指定给PPI,并禁用Modbus协议。
"波特"参数将波特率设为1200、2400、4800、9600、19200、38400、57600或115200。
"地址"参数将地址设为1和247之间(包括1和247)的数值。
"校验"参数被设为与Modbus主设备校验相匹配。
可接受的数值为:*0-无校验*1-奇数校验*2-偶数校验"时延"参数通过将指定的毫秒数增加至标准Modbus信息超时的方法延长标准Modbus信息结束超时条件。
该参数的典型数值在有线网络上应为0。
如果您在使用带有纠错功能的调制解调器,将时延设为50至100毫秒的数值。
如果您在使用扩展频谱无线电,将时延设为10至100毫秒的数值。
"时延"数值可以是0至32767毫秒。
MaxIQ参数将供Modbus地址00xxxx和01xxxx使用的I和Q点数设为0至128之间的数值。
数值0禁止所有向输入和输出的读取。
建议使用的MaxIQ数值是128,该数值可在S7-200中存取所有的I和Q点。
MODBUS RTU通讯协议在S7-200中的应用1 引言工业控制已从单机控制走向集中监控、集散控制,如今已进入网络集约制造时代。
工业控制器连网也为网络管理提供了方便。
Modbus就是工业控制器的网络协议中的一种。
Modbus 协议是应用于电子控制器上的一种通讯约规。
通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。
它已经成为主流的工业标准之一。
他为符合Modbus协议的不同厂商生产的控制设备可以连成工业网络,进行集中监控。
2 Modbus RTU协议在S7-200中的应用原理2.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做主站必须由用户自己用自由口模式,按相关协议编程。
在S7-200控制系统应用中,Modbus RTU从站指令库只支持CPU上的通讯0口(Port0)。
要实现Modbus RTU通讯,需要Step7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装Step7-Micro/WIN32 V3.2 Instruction Library(指令库)。
Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。
2.2 Modbus RTU协议在S7-200中应用的基本过程(1) 首先检查S7-200控制系统中所用Micro/WIN的软件版本,应当是Step7-Micro/WIN V3.2以上版本。
(2) 检查Micro/WIN的指令树中是否存在Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLA VE两个子程序。
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从站指令库只支持CPU上的通讯0口(Port0)。
必须安装Step7-Micro/WIN32 V3.2 Instruction Library(指令库)。
Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。
Modbus RTU协议在S7-200中应用的基本过程(1) 检查Micro/WIN的指令树中是否存在Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。
如果没有,须安装Micro/WIN32 V3.2 Instruction Library(指令库)软件包,如图1所示。
图1 指令树中的库指令(2) 编程时使用SM0.1—调用子程序MBUS_INIT进行初始化,使用SM0.0—调用研究MBUS_SLAVE,并指定相应参数。
关于参数的详细说明,可在子程序的局部变量表中找到。
示例参见图2:图2 调用MODBUS通讯指令库图2中参数意义如下:●模式选择:启动/停止MODBUS,1=启动;0=停止; 注意当: Port0用作Modbus从站协议通讯时,它不能再用作任何其它目的,包括与STEP7--Micro/WIN通讯。
MBUS_INIT指令控制Port0的设定是Modbus从站协议还是PPI。
●从站地址:MODBUS从站地址,取值1~247;●波特率:可选1200,2400,4800,9600,19200,38400,57600;●奇偶校验:0=无校验;1=奇校验;2=偶校验;●延时:附加字符间延时,缺省值为0;●最大I/Q位:参与通讯的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128;●最大AI字数:参与通讯的最大AI通道数,可为16或32;●最大保持寄存器区:参与通讯的V存储区字(VW);●保持寄存器区起始地址:以&VBx指定(间接寻址方式);●初始化完成标志:成功初始化后置1;●初始化错误代码;● MODBUS执行:通讯中时置1;●错误代码:0=无错误。
1.使用Modbus库指令,一定要分配库内存;
2.分配的库内存范围一定不要和可读取的内存范围有重复的地方,否则初始化不成功。
帮助:MaxHold参数设定供Modbus地址04xxx使用的V内存中的字保持寄存器数目。
例如,为了允许主设备存取2000个字节的V内存,将MaxHold设为1000个字的数值(保持寄存器)。
HoldStart参数是V内存中保持寄存器的起始地址。
该数值一般被设为VB0,因此HoldStart参数被设为&VB0(VB0 地址)。
其他V内存地址可指定为保持寄存器的起始地址,以便在项目的其他地方使用VB0。
Modbus主设备可存取V 内存MaxHold个字数,从HoldStart开始。
如果HoldStart设为&VB0,MaxHold设为1000,即Modbus主设备可存取V 内存从VB0开始,可存取1000个字,2000个字节。
则库内存的开始地址一定要从2000以上开始,否则初始化不成功,返回错误代码为5,即“保持寄存器与Modbus从属符号重叠”。
艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有10年工业用品电子商务领域研究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感器、图尔克传感器、变频器、断路器、继电器、PLC、工控机、仪器仪表、气缸、五金工具、伺服电机、劳保用品等一系列自动化的工控产品。
如需进一步了解相关PLC产品的选型,报价,采购,参数,图片,批发等信息,请关注/。
ModbusRTU通讯协议在S7-200 PLC中的应用摘要:本文介绍了用modbusrtu测试软件modscan32与西门子s7-200 plc之间的通讯建立与测试。
关键词:s7-200 modbusrtu 主站从站西门子s7-200 plc具有低成本、可靠性高、技术成熟、能适应各种恶劣的环境等特点在成套设备中得到广泛的应用。
随着工业控制的飞速发展,控制已经从分散控制发展向集中控制型的集散控制系统需要通过s7-200检测现场设备的运行数据并进行控制,采用modbusrtu协议是一个不错的选择,不用另外增加任何设备,只需要在s7-200中进行编程设置即可。
接下来我们通过实例来介绍modbusrtu测试软件modscan32与西门子s7-200 plc之间的通讯建立与测试。
一、modbus rtu协议与s7-200相互关系简介目前支持modbus通信的dcs、plc系统和过程仪表大都采用基于串行接口的modbus rtu模式,西门子公司提供了针对西门子plc modbus rtu的协议库。
极大的简化了modbus rtu通信的开发,以便快速实现二者的相关应用。
通过modbus rtu从站指令库,使得s7-200可以作为modbus rtu中的从站,以实现与modbus主站设备的通信。
二、软硬件准备1.软件:modscan测试软件、step7-microwin v4.0sp06编程软件、s7-200modbus指令库文件。
2.硬件:pc机、西门子s7-200plc(cup224xp cn rel02.01)、ppi编程电缆、usb-to-serial电缆、rs232转rs485模块。
3.焊接rs485通讯电缆一根(date+ →db9 3引脚、date- →db9 8引脚)、rs485通讯电缆连接200plc的port0端口。
三、使用modbus 指令库需要注意事项1.使用modbus指令库,对step7 micro/win软件版本的要求。
西门子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 通讯一、准备工作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在下位中使用了,上位中就不可对其进行写功能,反之亦然。
基于Modbus_RTU通讯协议在西门子PLC S7—200的应用摘要Modbus_RTU协议是应用于工业控制器的一种通迅协议。
以西门子PLC S7-200为例,对在Modbus_RTU协议下PLC与上位机实现通信作了详细阐述。
关键词Modbus_RTU协议;PLC;通信0 引言随着科技的发展,工业控制的发展走向集中监控、集散控制。
工业控制器连网为工业管理提供了很大方便。
Modbus_RTU协议已成为主流的工业通讯标准之一。
通过此协议,可以完成上位机与PLC控制器之间的通信,实现更好的集中监控管理。
1 主站和从站通讯网络构成Modbus_RTU协议是主站和从站进行实时通讯的协议,本次以西门子S7-200 PLC控制器作为从站,主站为和利时DCS控制系统的操作员站,和利时DCS控制网络为Profibus DP协议,西门子S7-200为MODBUS协议485设备,中间用网桥进行Modbus_RTU协议和Profibus DP协议转换,网桥采用鼎时的PROIBUS@MODBUS总线桥,可以实现MODBUS协议设备接入PROFIBUS总线网络的异构网络需求,网线采用RS485通讯电缆。
通讯网络连线完成后,需要进行通讯网络参数的设定,S7-200 PLC控制器的Modbus RTU协议通讯参数可以利用从站指令库中MBUS_INIT和MBUS_SLA VE功能块设置,如下图。
主要参数设置:Mode设置为1,启动Modbus从站通信。
Address设置为3,确定MODBUS从站地址。
Baud根据实际距离(大约100米)设置为9600,确定波特率。
Parity设置为无校验。
MaxHold 设置为1000,确定V存储器中的字保持寄存器数目。
HoldStart设置为&VB0,确定保持寄存器区起始地址。
如果有多台PLC作为从站与DCS系统进行通讯,单个PLC的从站地址各不相同,MODBUS从站地址设置范围为1-32。