S7-200的MODBUS RTU主站协议库使用方法
S7-200Modbus协议使用详解
d. Parity 校验: 校验方式选择
0=无校验
1=奇较验
2=偶较验
e. Timeout 超时: 主站等待从站响应的时间,以毫秒为单位,典型的设置值为 1000 毫秒(1 秒),允许设置的范围为 1 - 32767。
2. 如果是写指令,要写出的数据放到这个数据区中
h. Done 完成位 读写功能完成位
i. Error 错误代码: 只有在 Done 位为1时,错误代码才有效
0 = 无错误
1 = 响应校验错误
2 = 未用
3 = 接收超时(从站无响应)
4 = 请求参数错误(slave address, Modbus address, count, RW)
VX.0----10001
VX.1----10002
VX.2----10003
VX.3----10004
VX.4----10005
VX.5----10006
VX.6----10007
VX.7----10008
. .
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 不支持。
S7-200使用Modbus协议
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从站设置
西门子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中的应用
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两个子程序。
S7-200-modbus
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=无错误。
西门子S7-200系列PLC使用Modbus库的方法及注意事项
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通讯协议在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 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 通讯一、准备工作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 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。
西门子S7-200系列PLC的MODBUS通信功能(一)
西门子S7-200系列PLC的MODBUS通信功能(一)这段时间经常有学员问有关于S7-200系列PLC的MODBUS通信的问题,所以今天就写一遍文章,来跟大家聊聊S7-200系列PLC的MODBUS的通信功能如何使用。
MODBUS通信协议概述:MODBUS协议是一个通用的协议,在很多智能设备上都支持这个通信协议,如变频器,智能温控仪表等都支持MODBUS通信协议。
MODBUS通信协议有具有串行链路上的MODBUS ASCAII通信和MODBUS RTU通信,也有基于TCP/IP上的 MODBUS TCP通信。
这里我们主要介绍基于串行链路上的MODBUS RTU的通信。
MODBUS RTU的信息帧格式:Start:起始码,表示的是一个信息帧的开头,MODBUS RTU通信,使用时间来作为信息帧的开头,主要是检测传输线上的空闲的时间,长度为3.5个字符时长,一个字符的长度跟数据位,停止位、起始位、奇偶校验位,波特率有关。
Address:地址码(一个字节),表示的是从站的站号,从站站号有从站设备给定或是设置,如变频器,可以在变频器参数中设置变频器的站号。
Function:功能码(一个字节),描述对从站的读写操作,是对从站读取数据,还是写入数据到从站,常见功能码如下图所示:Data:数据区(N个字节),数据区主要有两部分构成,一部分称为数据区的地址,一部分称为数据区的内容,如需要控制变频器的运行,则变频器的运行代码称为数据区内容,运行代码需要写入的地方称为数据区地址。
CRC:校验码(2字节),对从站号到数据区的数据进行CRC校验,可以参考前面一篇对于CRC校验程序设计的内容介绍。
End:结束码,与起始码一样,也是通过时间进行判断。
接下来,我们以西门子S7-200SMART系列的PLC与深圳的海普蒙特的变频器为例,来说明使用MODBUS的通信方式来控制变频器的运行,频率的修改,及读取一些参数的程序首先,我们需要熟悉变频器说明书上所描述的通信的内容,从说明书上显示支持的功能码为03,06,和16这三种功能码(注意0X10表示的是16进制数10):提供的信息帧格式为:例如:运行命令控制,地址位十六进制数的3200,往地址3200中写入不同的代码表示不同的控制命令,如下图所示根据以上内容,我们可以写出控制变频器运行的信息帧的格式,假设变频器的站号设置为1,则可以得出如下图所示的信息帧的格式其他的命令的信息帧格式,参考变频器说明书,以相同的方式可以写出。
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 编程
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 rtu通讯
MODBUS 协议库的使用
1. EN:指令使能位。 2. First:“首次”参数。“首次”参数应该在有新请求 要发送时才打开以进行一次扫描。 “ 首 次” 输入应 当通过一个边沿检测元素(例如上升沿)打开,这将导 致请求被传送一次。 3. Slave:“从站”参数。“从站”参数是 Modbus 从站 的地址。 允许的范围是 0 到 247。地址 0 是广播地址, 只能用于写请求。不存在对地址 0 的广播请求的应答。 并非所有的从站会支持广播地 址, S7-200 Modbus 从 其中离散输出(线 圈)和保持寄存器 站协议库不支持广播地址。 支持读取和写入 请求, 而离散输 4. RW:“读写”参数。“读写”参数指定是否要读取 或写入该消息。 “ 读写” 参数允许使用下 列两个值: 入(触点)和输入寄 存器仅 支持读取 0——读, 1——写。 请求。 “ 地址” 5. Addr:“地址”参数。“地址”参数是起始的Modbus 的具体值应与 地址。 允许使用下列取值范围:00001 至 09999 是离 Modbus 从站支持 散输出(线圈);10001 至 19999 是离散输入(触点);30001 的地址一致 至 39999 是输入寄存器;40001 至 49999 是保持寄存器
MODBUS 协议库的使用
利用指令库编程前首先应为其分配存储 区,否则软件编译时会报错。具体方法 如下: 1. 执行 Step7-Micro/Win 菜单命令“文 件” >“ 库存储区”,打开“库存储 区分配”对话框。 2. 在“库存储区分配”对话框中输入 库存储区( V 存储区) 的起始地址, 注意避免该地址和 程序中已经采用 或准备采用的其它地址重合。
MODBUS 协议库的使用
1. EN:指令使能位。 2. Mode:“模式”参数。“模式”输入数值选择 通讯协议。 输入值 1 将 CPU 端口分配给 Modbus 协议并启用该协议。 输入值 0 将 CPU 端口分配给 PPI 系统协议, 并禁用 Modbus 协议。 3. Baud:“波特率”参数。 MBUS_CTRL 指令支持 的波特率为 1200、 2400、 4800、 9600、 19200、 38400、 57600 或 115200bit/s。 4. Parity:“奇偶校验”参数。“奇偶校验”参数被 设为与 Modbus 从站奇偶校验相匹配。所有 设置 使用一个起始位和一个停止位。可接受的数值为: 0 无奇偶校验、 1 奇校验、 2 偶校验。 5. Timeout:“超时”参数。“超时”参数设为等待 来自从站应答的毫秒时间数。 “ 超时” 数值可 以设置的范围为 1 毫秒到 32767 毫秒。典型值是 1000 毫秒(1 秒)。 “ 超时” 参数应该设置的足 够大,以便从站有时间对所选的波率做出应答。
学习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 从站设备的奇偶校验相匹配。
西门子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。