S7-200实现MODBUS通讯问题

合集下载

S7-200-Modbus通信解析

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。

2024版S7200实现Modbus通信范例绝对精华

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或以太网接口, 以提高数据传输速率。
优化数据帧结构
减少数据帧中的冗余信息,提高有效数据的传输效率。

西门子S7200与变频器MODBUS通讯实例详解

西门子S7200与变频器MODBUS通讯实例详解

西门子S7200与变频器MODBUS通讯实例详解Modbus通讯协议简介Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。

ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。

其系统结构既包括硬件、亦包括软件。

它可应用于各种数据采集和过程监控。

ModBus网络只有一个主机,所有通信都由他发出。

网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。

采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。

1 MODBUS RTU协议在S7-200中的应用原理1.1 MODBUSRTU协议与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/WIN32V3.2以上版本的编程软件,而且须安装Step7-Micro/WIN32V3.2 Instruction Library(指令库)。

MODBUS RTU功能是通过指令库中预先编好的程序功能块实现的。

MODBUSRTU协议在S7-200中应用的基本过程(1) 首先检查S7-200控制系统中所用Micro/WIN软件版本,应当是Step7-Micro/WIN V3.2以上版本。

如何用 S7-200 实现 Modbus 通信

如何用 S7-200 实现 Modbus 通信

如何用 S7-200 实现 Modbus 通信?说明:用下面的例程你可以在 S7-200 CPU 之间建立一个简单的 Modbus 主-从通讯。

这个例子是关于 Modbus 功能码 6 的(写从站保持寄存器),也可以作为其他所支持的功能码的基本参数设置步骤:1, 2, 3, 4, 5, 15 和16 。

要求:要使用 Modbus 协议必须先获得并在 STEP 7 Micro/Win 中安装指令库 (条目17470979)。

Modbus 主站协议只被 STEP 7 Micro/Win V4.0 SP5 及其以上版本支持。

1. 硬件设置例程中的 Modbus 通讯是在两个 S7-200 CPU 的 0 号通讯口间进行的(最好每个 CPU 都有两个通讯口)。

在主站侧也可以用相应库文件 "MBUS_CTRL_P1" 和 "MBUS_MSG_P1"通过1号通讯口通信。

通讯口 1 用 Micro/WIN 与 PG 或 PC 建立连接,两个 CPU 的通讯口 0 通过 Profibus 缆进行连接(电缆的针脚连接为3,3,8,8 -> 见图 01)。

另外,需要确定逻辑地M相连。

图. 012. 参数匹配对于 MODBUS 通讯,主站侧需要程序库 "MBUS_CTRL" 和 "MBUS_MSG",从站侧需要程序库"MBUS_INIT" and "MBUS_SLAVE"。

在 Micro/WIN 中您需要为主站和从站新建一个项目,程序与参数设置见图.02。

必须要保证主站与从站的“Baud”和 “Parity” 的参数设置要一致,并且程序块 "MBUS_MSG" 中的"Slave" 地址要与程序块 "MBUS_INIT" 中的 "Addr" 所设置的一致 (见图. 02)。

S7-1200与S7-200怎样经过Modbus协议通讯

S7-1200与S7-200怎样经过Modbus协议通讯

S7-1200与S7-200怎样经过Modbus协议通讯这里主要介绍一下S7-1200作为主站和S7-200进行通讯。

硬件:S7-1200,CM1241,CPU224XP软件:TIA V14,MicroWinTIA V14中进行硬件组态,设置对应的通讯参数,如9600,8,N,1 进行S7-1200编程:TIA Portal中,"Instructions>Communication>Communication processor>MODBUS ( RTU )>= Version 3.0 "。

Modbus_Comm_Load用于设置通讯参数并用主站(或从站)的参数将连接参数化。

通讯参数BAUD (波特率)和PARITY (奇偶校验) 要与从站地址相匹配,此处为9600波特率,无校验。

在参数MB_DB传输Modbus_Master (or Modbus_Slave)背景数据的数据结构MB_DB,这样就可以定义通讯模块(通过PORT参数识别) 为MODBUS 主站(或从站)。

除此之外,必须改变 Modbus_Comm_Load的实例数据中的静态参数以便进行双工操作模式,通过初始值设定(0 = full duplex (RS232), 1 = full duplex (RS422)四线制模式,4 = half duplex (RS485) 两线制模式)。

Modbus_Master功能块来将Modbus_Comm_Load组态块选择为MODBUS 主站。

MB_ADDR :MODBUS-RTU从站地址为2.MODE:请求的类型:"0" = 读 "1" = 写,此处进行读操作。

DATA_ADDR:MODBUS起始地址( =偏移量 + 从站寄存器地址),读取从站起始地址为:40001,长度为DATA_LEN=5.DATA_LEN:MODBUS数据长度,这里为连续5个。

S7-200组态王通讯的问题MODBUS介绍

S7-200组态王通讯的问题MODBUS介绍

“MODBUS”常见问题解答1.我的设备支持modbus 设备设备,,能否直接与组态王软件连接能否直接与组态王软件连接??只要设备是标准的modbus 协议设备,即可使用组态王设备列表下的PLC-->莫迪康-->MODBUSRTU(或者ACSII 码)进行通信。

但具体的寄存器地址对照表必须从设备厂家索取。

2.我的支持modbus 协议的串口设备协议的串口设备,,能否与多个上位软件能否与多个上位软件((比如组态王软件和某品牌触摸屏牌触摸屏))同时通讯同时通讯??因为modbus 串口协议不支持多主站,所以不能多个软件同时与modbus 设备同时通信。

3.在组态王工程中建立多个modbusTCPIPserver 设备定义设备定义,,分别使用两台客户端对其访问访问,,只有站点高的那个server 通讯ok ,站点低的通讯失败站点低的通讯失败,,为什么为什么??这是因为在组态王软件中只支持建立一个modbusTCPIPserver ,当建立多个server时,组态王客户端则会自动与站点高的server 进行通讯,所以会导致站点低的通讯失败。

4.如何实现组态王数据通过串口或者以太网驱动方式传送到其他组态软件或者应用程序中序中??如果其他组态软件或者应用程序支持modbus 协议,则可以通过组态王提供的modRTUserver 或者modbusTCPserver 驱动来实现。

5.组态王与支持Modbus 协议的设备进行通讯时协议的设备进行通讯时,,组态王画面上显示的数据不正确常有哪些原因哪些原因??引起数据不正确的原因主要有如下几点:1)组态王中定义的寄存器地址跟实际设备不一致导致。

比如某些使用modbus 协议通讯的设备的数据地址是从0开始的,而组态王modbus 协议驱动寄存器地址是从1开始的,所以遇到此种情况时在组态王中定义变量时,寄存器地址要进行加1处理;2)数据词典中最大原始值和最大值定义不不当;比如最大原始值和最大值不一样会导致画面看到的数据和实际设备不一致;3)组态王读取FLOAT 和LONG 类型的数据时,没有使用提供的SwapF 和SwapL 寄存器来调整FLOAT 型和LONG 型数据的字节顺序;4)LONG 或FLOAT 型的双字的数据,没有按照间隔隔地址方式定义;因为modbus协议所对应的参数地址一般按照字为基本单位进行分地址排序的。

西门子S7-200--MODBUS通信协议和支持MODBUS-RTU协议的电磁流量计、超声波流量计的通信实例

西门子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与v20变频器modbus通信详细教程

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 通讯

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在下位中使用了,上位中就不可对其进行写功能,反之亦然。

西门子S7200与变频器MODBUS通讯实例详解

西门子S7200与变频器MODBUS通讯实例详解

西门子S7200与变频器MODBUS通讯实例详解西门子S7200PLC简介西门子S7-200PLC在实时模式下具有速度快,具有通讯功能和较高的生产力的特点。

一致的模块化设计促进了低性能定制产品的创造和可扩展性的解决方案。

来自西门子的S7- 200微型PLC可以被当作独立的微型PLC解决方案或与其他控制器相结合使用。

Modbus通讯协议简介Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。

ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。

其系统结构既包括硬件、亦包括软件。

它可应用于各种数据采集和过程监控。

ModBus网络只有一个主机,所有通信都由他发出。

网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。

采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。

1MODBUSRTU协议在S7-200中的应用原理1.1MODBUSRTU协议与S7-200相互关系简介S7-200CPU上的通讯口Port0可以支持MODBUSRTU协议,成为MODBUSRTU从站。

此功能是通过S7-200的自由口通讯模式实现,因此可以通过无线数据电台等慢速通讯设备传输。

想在S7-200CPU与其他支持MODBUSRTU的设备使用MODBUSRTU协议通讯,需要由有S7-200CPU做MODBUS主站。

S7-200CPU做主站必须由用户自己用自由口模式,按相关协议编程。

2从站指令的用法:S7-200控制系统应用中,MODBUSRTU从站指令库只支持CPU上的通讯0口(Port0)。

要实现MODBUSRTU通讯,需要Step7-Micro/WIN32V3.2以上版本的编程软件,而且须安装Step7-Micro/WIN32V3.2InstructionLibrary(指令库)。

西门子S7-200系列PLC的MODBUS通信功能(一)

西门子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通信协议和支持MODBUS-RTU协议的电磁流量计、超声波流量计的通信实例

西门子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指令实现通讯方法及例程

使用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即使是整套程序编完也感觉不出延时。

S7200Modbus通信培训教程

S7200Modbus通信培训教程

S7200Modbus通信培训教程一、概述本教程旨在帮助您了解西门子S7200系列PLC的Modbus通信功能,掌握其配置和使用方法。

通过本教程的学习,您将能够独立完成S7200PLC与Modbus设备之间的通信配置,实现数据交换和控制功能。

二、准备工作1.已安装西门子STEP7-Micro/WIN编程软件。

2.S7200PLC系统已正常运行,具备通信接口(如RS232、RS485等)。

3.Modbus设备已正常运行,具备通信接口(如RS232、RS485等)。

三、Modbus通信配置1.新建项目2.添加硬件在项目树下,右键“PLC”,选择“添加新设备”,在弹出的对话框中选择S7200系列PLC,设置相应的设备名称和型号,“OK”完成添加。

3.配置通信接口双击项目树中的PLC设备,进入设备配置界面。

在“硬件”选项卡中,找到通信接口(如RS232、RS485等),右键,选择“属性”。

4.设置通信参数(1)波特率:根据Modbus设备的波特率设置,如9600、19200等。

(2)数据位:通常设置为8位。

(3)停止位:通常设置为1位。

(4)校验位:根据Modbus设备的校验方式设置,如无校验、偶校验等。

(5)从站地质:设置S7200PLC的Modbus从站地质,范围为1-247。

5.保存并编译完成通信参数设置后,“确定”保存设置。

在项目树下,右键“PLC”,选择“编译”,确保配置无误。

四、Modbus通信编程1.新建程序块2.编写Modbus通信程序(1)定义Modbus从站地质、功能码、数据地质和寄存器数量。

(2)使用Modbus指令(如MBUS_CTRL、MBUS_MSG等)进行数据传输。

(3)根据通信结果,进行数据处理和控制逻辑编写。

3.程序完成程序编写后,工具栏上的“”按钮,将程序到S7200PLC。

五、调试与运行1.连接Modbus设备将S7200PLC与Modbus设备通过通信线连接,确保接线正确。

基于S7-200PLC通过语句表编程实现MODBUS通讯

基于S7-200PLC通过语句表编程实现MODBUS通讯

信息通信INFORMATION & COMMUNICATIONS2020年第04期(总第208期)2020(Sum. No 208)基于S7-200PLC 通过语句表编程实现MODBUS 通讯何祖平(平潭综合实验区水务投资有限公司,福建福州350400)摘要:通过西门子语句表编程和模块化编程方式,实现S7-200PLC 不用STEP7软件自带的MODBUS 库进行通信报文 的发送和接收。

在S7-200PLC 自由端口通信模式下,并以独立子程序(仅通过输入输出参数设置)编程方式实现以MOD-BUS RTU 通信协议来监控变频器。

该MODBUS 报文子程序仅占原来MODBUS 库40%的程序空间,且所占用的V 存储块可以根据实际的报文长度进行增减。

关键词:PLC ;语句表编程;变频器;MODBUS 通讯;自由端口通信中图分类号:TP273文献标识码:B 文章编号:1673-1131(2020)04-0065-03一些老旧工厂的生产线,特别是大型自来水厂的恒压供 水系统的改进,往往需要在原有的供水系统中增加几台变频 器来驱动水泵电机;同时为了集成自动化的需要,必须将新的设备整合到原来的系统内运行,所以新旧设备间的通信兼容 变得十分的重要。

利用MODBUS 这种标准开放,帧格式简单的通讯协议来控制变频器可以减少生产线中的PLC 模拟量模块的用量,从而节省设备的开支。

另外由于部分老旧生产线 配置的西门子PLC 固件版本低于V2.0, PLC 不能下载STEP7自带的MODBUS 库,且MODBUS 库需要占用更大的程序空间,所以需要设计人员自行编写MODBUS 通讯协议程序, 以节省更换硬件的开支,达到节本增效的目的。

1通信协议西门子S7-200系列的PLC 在自由端口模式下采用以RS-485为传输介质与变频器间进行通信,其通信速率为1200bit/s~115.2kbit/s,这样的主从设备间的一问一答的通信方 式完全符合MODBUS 通信协议;MODBUS 通信协议有两种 传输模式:ASCII 和RTUo 由于RTU 传输模式的速度要相对快一些,且西门子V20变频器仅采用MODBUS RTU 格式,故本次试验采用MODBUS RTU 通信协议。

多功能仪表与s7-200实现ModBus通讯的步骤

多功能仪表与s7-200实现ModBus通讯的步骤

1,接口定义S7-200 9针母头。

1.机壳接地屏蔽(与端子PE同)、2. 24V公共端、3. RS485信号B(TXD 或RXD-)、4. RTS(TTL)、5 .5V公共端、6. +5V,通过100OHM电阻、7. +24V、8.RS485信号A(TXD 或RXD+)、9. 10位协议选择(输入)、金属壳.机壳接地与电缆屏蔽层连通(与端子PE同)。

RS485物理层接线。

S7-200的端口0或者端口1的引脚3接仪表的A+,引脚8接仪表的B-。

2,说明S7-200 CPU上的通讯口在电气上是标准的RS-485半双工串行通讯口,此串行字符通讯格式:1位起始位;7/8位数据位;1位奇/偶/无校验;1位停止位。

通信波特率可以设置为1200、2400、4800、9600、19200、57600或112500,符合这些格式的串行通讯可以和s7-200进行自由口通讯,Modbus RTU指令库就是使用自由口编程实现的。

3,Modbus RUT主站库S7-200编程软件需要Micro/WIN V4.0 SP5及以上版本;CPU的版本必须为2.00或者2.01(即订货号为6ES721-----23-0BA);Modbus主站库支持Port0和Port1(从站库只支持Port0口),本例中用Port0;使用Modbus库时必须对库存储区进行分配,见下图设置,而且分配空间不能和程序中其它空间冲突否则编译调用会报错。

Modbus 主站库支持的功能码和地址对应关系:表2需要从站支持的功能4 s7-200 Modbus主站编程编程时,使用SM0.0调用MBUS_CTRL完成主站的参数初始化,详细见下表,参数的说明也可以从子程序的局部变量表中找到。

调用Modbus RTU主站读写子程序MBUS_MSG,发送一个Modbus请求。

从上图可见,s7-200作为Modbus RTU主站,波特率9.6Kb/s, 偶校验,连接从站的站地址是3,数据存储区为VB2000开始的区域。

西门子S7-200-SMART之Modbus-RTU-通信常见问题及错误代码含义

西门子S7-200-SMART之Modbus-RTU-通信常见问题及错误代码含义

常见问题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 主站,从站故障或者通信线路断开时,主站会尝试发送多次请求报文,从而导致通信时间过长。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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(从属功能未启用))。

注意Modbus 中的保持寄存器区按“字”寻址,即MaxHold规定的是VW而不是VB的个数。

四、补充
(一)Modbus从站协议执行错误代码
(二)Modbus从站所支持的地址对应如下。

相关文档
最新文档