S7-200MODBUS通讯
- 格式:doc
- 大小:855.56 KB
- 文档页数:8
S7-200 PLC 具有体积小、结构紧凑的特点,适合安装在空间有限的场合。
紧凑型设计S7-200 PLC 提供了丰富的指令集,包括逻辑、算术、定时、计数等,可实现复杂的控制逻辑。
强大的指令集S7-200 PLC 采用高性能处理器,具有快速的处理速度和响应时间,能够满足实时控制需求。
高速处理性能S7-200 PLC 支持多种扩展模块,如数字量输入/输出模块、模拟量输入/输出模块等,可根据实际需求进行灵活配置。
丰富的扩展模块S7-200 PLC 基本特性标准通信协议MODBUS是一种工业领域常用的标准通信协议,广泛应用于各种自动化设备和控制系统之间的数据交换。
主从通信方式MODBUS通信协议采用主从通信方式,即一个主设备可以与多个从设备进行通信,实现对从设备的集中管理和控制。
简单的数据格式MODBUS通信协议采用简单的数据格式,包括地址码、功能码、数据区和校验码等,易于理解和实现。
可靠性高MODBUS通信协议具有传输可靠、抗干扰能力强等特点,适用于工业现场的恶劣环境。
MODBUS通信协议概述01020304S7-200 PLC 与MODBUS 通信协议的结合,可以实现对工业现场各种设备和系统的集中管理和控制,提高自动化水平。
工业自动化控制通过MODBUS 通信协议,可以实现对S7-200 PLC 的远程监控和维护,方便对设备进行实时状态监测和故障排除。
远程监控与维护S7-200 PLC 与MODBUS 通信协议的结合,可以实现对能源设备的智能管理和优化控制,提高能源利用效率。
能源管理与优化在楼宇自动化控制系统中,S7-200 PLC 与MODBUS 通信协议的结合可以实现对楼宇内各种设备和系统的集中管理和控制,提高楼宇的智能化水平。
楼宇自动化控制S7-200与MODBUS 结合应用场景CPU模块扩展模块电源模块通讯模块硬件配置要求及选型建议选择具有MODBUS通讯功能的CPU模块,如CPU224 XP或CPU226 CN等。
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(从属功能未启用))。
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 的为使用的指令分配库存储区地址。
其实,Modbus通讯很简单!——⼿把⼿教你主要内容:S7-200 PLC Modbus通讯概述S7-200 PLC Modbus通讯指令S7-200 PLC Modbus通讯常问问题(1)Modbus通讯S7-200的Modbus通讯:S7-200只⽀持Modbus RTU协议,不⽀持Modbus ASCII协议;Modbus是⼀种单主站的主/从通信模式。
⼀条Modbus⽹络上同时只能有⼀台主站,从站可以有若⼲个(如下图所⽰)。
从站的地址范围为1-247;⼀个Modbus通讯的传输字符应包括⼀个起始位,8个数据位,1个或0个校验位(奇偶校验或⽆校验可选择),以及⼀个停⽌位在S7-200 CPU通信⼝上实现的是RS485半双⼯通信,使⽤的是S7-200的⾃由⼝功能。
上图是⼀个典型的主站和从站的⽹络结构,对于Modbus主站⽽⾔可以对从站进⾏读或者写的操作,其中它所⽀持的功能码(FC,Function Code)包括主站左侧表格中所述功能,例如功能码为'01'时表⽰读取单个/多个线圈(DO)状态或功能码为'04'时表⽰读取单个/多个输⼊寄存器(AI)状态。
⽽对于从站,我们只需要把Modbus的标准地址和从站的地址对应关系建⽴好就可以了,S7-200的从站与Modbus标准的对应关系如从站右侧表格所⽰。
表中左侧是Modbus标准地址码,其中1-128对应于S7-200的Q0.0-Q15.7,10001-10128对应于S7-200的I0.0-I15.7,30001-30032对应于AIW0-AIW62,40001-4xxx对应的是S7-200的保持寄存器(V区),它的范围是T-T+2*(xxxx-1),T表⽰的是V区的起始地址,这⼀点由Modbus从站的指令所决定的。
Modbus的主站指令叫做MBUS_MSG,通过这条指令可以将Modbus的标准报⽂发给从站,例如在上图例⼦当中从站的第⼀个字节是03,表⽰的是从站的地址,FC功能码为03,表⽰的是读取单个/多个保存寄存器,Modbus标准地址是40001,长度是10。
1,根据查询到的资料,P1口只能做主站,P0口既可做主站,也可以做从站2,安装好的S7-200编程软件一般是不带库的,所以需要从网上下载MODBUS库,然后才能做Modbus通讯的子站,压缩包直接点安装后,库文件就安装到了编程软件里面了3,P1口不能做从站4,西门子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之间的数值。
S7-200实现Modbus通信范例(绝对精华)。
说明:使用下面的例程你可以在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的号通讯口间进行的(最好每个CPU都有两个通讯口)。
在主站侧也可以选择相应库文件"MBUS_CTRL_P1"和"MBUS_MSG_P1"通过1号通讯口通信。
通讯口1与Micro/WIN建立PG或PC连接,两个CPU的通讯口通过PPI电缆进行连接(电缆的针脚连接为2,3,7,8)。
图。
012.参数匹配对于MODBUS通讯,主站侧需要步伐库"MBUS_CTRL"和"MBUS_MSG",从站侧需要步伐库"MBUS_INIT" and "MBUS_SLAVE"。
在XXX中您需要为主站和从站新建一个项目,程序与参数设置见图.02.必须要保证主站与从站的“Baud”和"Parity"的参数设置要一致,并且程序块"MBUS_MSG"中的"Slave"地址要与程序块"MBUS_INIT"中的"Addr"所设置的一致(见图。
02)。
Micro/WIN“系统块”中设置的通讯口的波特率与MODBUS协议无关("Mode"="1")。
常见问题1.S7-200 SMART 是否支持Modbus ASCII 通信模式?STEP 7-Micro/WIN SMART 软件未提供Modbus ASCII 通信模式指令库。
S7-200 SMART CPU若用于Modbus ASCII 通信时,则需要用户使用自由口通信模式进行编程。
2. S7-200 SMART CPU 集成的RS485 端口(端口0 )以及SB CM01 信号板(端口1 )两个通信端口能否同时作为Modbus RTU 主站或者同时作为Modbus RTU从站?S7-200 SMART V2.2版本支持两个通信端口同时做MODBUS RTU主站,不支持同时做MODBUS RTU从站。
3. S7-200 SMART CPU作为Modbus RTU 主站如何访问Modbus 地址范围大于49999 的保持寄存器?通常Modbus 协议的保持寄存器范围在40001 到49999 之间,这个范围对于多数应用来说已经足够了,但有些Modbus 从站保持寄存器区的地址会超出该范围。
Modbus RTU 主站协议库支持保持寄存器地址范围为(40001 到49999)或者(400001 到465536)。
如果Modbus 从站地址范围为400001 –465536,只需在调用MBUS_MSG 子程序时给Addr 参数赋相应的值即可,如416768。
4.S7-200 SMART CPU作为Modbus RTU 主站,多次调用MBUS_MSG 指令时,为什么该指令会出现6# 错误代码?同一时间只能有一条MBUS_MSG 指令处于激活状态,如果激活多条MBUS_MSG 指令,将执行第一条MBUS_MSG 指令,所有后续MBUS_MSG 指令将中止执行并出现6# 错误代码。
多条MBUS_MSG 指令的执行需要采用轮询方式。
5.S7-200 SMART CPU作为Modbus RTU 主站,从站故障或者通信线路断开时,主站会尝试发送多次请求报文,从而导致通信时间过长。
S7-200之间进行MODBUS 通讯一、准备工作1、硬件准备:两个CPU226,一根通讯电缆, 两头均为九针公插头,可以采用DP头(插头接线为3、8,其中3为正,8为负。
2、指令库安装,指令库包括主站指令库和从站指令库(库文件见附件)①从站指令库解压缩后,按照安装向导即可完成从站指令的安装②右击下图中的“库”,点击“添加/删除库”,按照向导将主站指令安装进去二者均安装完成后,库下面会显示如下二、编写主站程序1、主站指令包括两块:MBUS-CTRL和MBUS-MSG,下面先对这两个块的参数进行解释MBUS-CTRLMBUS-MSG,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,而从站中的Holdstart=&VB0,则从站中对应的地址为2*(40100-40001)7)、M0.3得电后,复位M0.2+&VB0=VB1988)、M0.3得电后,启动下面的MSG的读写功能9)、DONE端的M0.4得电后,复位EN端的M0.310)、M0.4得电后,下网络使能注:写从站实际Q值时,Count值=1或8n(n=1、2、3…….)1时,Addr可以为任何离散输出,当Count为8n时,Addr=8m+1(m=0、1、2…..)三、编写从站程序1、从站指令包括两块:MBUS-INIT和MBUS-SLAVE,下面先对这两个块的参数进行解释MBUS-INITMBUS-SLAVE2、从站例子程序见附件四、注意事项注1:程序中不可使用库存储区占用的地址注2:同一个线圈不可在上位和下位中同时使用,比如Q0.1在下位中使用了,上位中就不可对其进行写功能,反之亦然。
西门⼦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,则可以得出如下图所⽰的信息帧的格式其他的命令的信息帧格式,参考变频器说明书,以相同的⽅式可以写出。
1,根据查询到的资料,P1口只能做主站,P0口既可做主站,也可以做从站
2,安装好的S7-200编程软件一般是不带库的,所以需要从网上下载MODBUS库,然后才能做Modbus通讯的子站,压缩包直接点安装后,库文件就安装到了编程软件里面了
3,P1口不能做从站
4,西门子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点。
MaxAI参数将供Modbus地址03xxx使用的字输入(AI)寄存器数目设为0至32之间的数值。
数值0禁止模拟输入的读数。
建议使用的MaxAI数值如下,这些数值可允许存取所有的S7-200模拟输入:
*0用于CPU 221
*16用于CPU 222
*32用于CPU 224、226和226XM
MaxHold参数设定供Modbus地址04xxx使用的V内存中的字保持寄存器数目。
例如,为了允许主设备存取2000个字节的V内存,将MaxHold设为1000个字的数值(保持寄存器)。
HoldStart参数是V内存中保持寄存器的起始地址。
该数值一般被设为VB0,因此HoldStart参数被设为&VB0(VB0地址)。
其他V内存地址可指定为保持寄存器的起始地址,以便在项目的其他地方使用VB0。
Modbus主设备可存取V内存MaxHold个字数,从HoldStart开始。
MBUS_INIT指令完成时,"完成"输出打开。
"错误"输出字节包含执行指令的结果。
请参阅Modbus从属协议执行错误代码中可能因执行指令而产生的错误条件。
MBUS_SLAVE指令被用于为Modbus主设备发出的请求服务,并且必须在每次扫描时执行,以便允许该指令检查和回答Modbus请求。
在每次扫描且EN输入开启时执行该指令。
MBUS_SLAVE指令无输入参数。
当MBUS_SLAVE指令对Modbus请求作出应答时,"完成"输出打开。
如果没有需要服务的请求时,"完成"输出关闭。
"错误"输出包含执行该指令的结果。
该输出只有在"完成"打开时才有效。
如果"完成"关闭,错误参数不会改变。
请参阅Modbus从属协议执行错误代码中可能因执行该指令而导致的错误条件。
错误代码说明
0 无错误
1 内存范围错误
2 非法波特率或校验
3 非法从属地址
4 非法Modbus参数值
5 保持寄存器与Modbus从属符号重叠
6 收到校验错误
7 收到CRC错误
8 非法功能请求/功能不受支持
9 请求中的非法内存地址
10 从属功能未启用
程序举例如下:
NETWORK 2
//首次扫描时初始化Modbus从属协议
//将从站地址设为6,将端口0设为9600波特,将校验设为无校验,
//不允许存取所有的I、Q和AI数值,允许存取20台保存寄存器(40个字节)//从VB1000开始(即VB1000- VB1039)。
程序书写后,需要对Modbus进行存取区的设定,如下:
在菜单栏下:文件》库存储区--库存储区分配
在库存储区分配中,设立分配地址,确定。
PLC启动运行后,如下:
SM的用法
4,modbus通讯对应的针脚为3,8,3脚为正,8脚为负
5,做主站时
Holdstart的格式是&VB1600(1000即划定好的区域起始地址),因为765开始的780个字节分给了程序做了背景块,这地方不能重复,否则通讯会报错10。