技术论坛

应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理

作者 主题
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
主题:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 2011-08-12 14:01:40
S7-200的串口modbus通信被广泛应用于S7-200与仪表、变频器、HMI及第三方PLC的数据交换。S7-200 modbus 串口通信指令本身使用简单,但由于应用范围广泛,所以在应用中会遇到各种问题,希望大家借此机会分享经验,共同提高。
下载中心参考文档:
27832511:如何用 S7-200 实现 modbus 通信?
A0544:S7-200与CU230P-2 HVAC之间的modbus RTU通讯
A0541:S7-200做主站S7-300 CP341做从站的modbus RTU通讯
A0413:如何通过modbus协议实现 S7-1200与S7-200通讯
A0384:S7-300 CP341作主S7-200作从的modbus通信
经过这些天的热烈探讨相信大家对于S7-200 modbus通信的特点和编程时的注意事项有了相当程度的了解,希望对大家在选型和工程应用中有所帮助,也希望大家继续分享在实际调试中遇到的问题及解决问题的过程。

以下为本次探讨的发帖整理,查看原始交流内容请点击此处
 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=3&a_id=888145&s_id=0&num=4

总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 1楼 2011-08-12 14:02:55
1、S7-200 modbus通信特点:
quote:以下是引用www123456在2011-07-19 13:39:13的发言:
modbus 是公开通信协议,其最简单的串行通信部分仅规定了在串行线路的基本数据传输格式,在 OSI 七层协议模型中只到 1,2 层。 modbus 具有两种串行传输模式,ASCII 和 RTU。它们定义了数据如何打包、解码的不同方式。支持 modbus 协议的设备一般都支持 RTU 格式。通信双方必须同时支持上述模式中的一种。 modbus 是一种单主站的主/从通信模式。modbus 网络上只能有一个主站存在,主站在 modbus 网络上没有地址,从站的地址范围为 0 - 247,其中 0 为广播地址,从站的实际地址范围为 1 - 247。 modbus 通信标准协议可以通过各种传输方式传播,如 RS232C、RS485、光纤、无线电等。 在 S7-200 CPU 通信口上实现的是 RS485 半双工通信,使用的是 S7-200 的自由口功能。
S7-200 通过以下方式支持 modbus 通信协议:S7-200 CPU 上的通信口 0(Port 0)通过指令库支持 modbus RTU 从站模式 。S7-200 CPU 上的通讯口 0 和 1 (Port 0 和 Port 1)通过指令库支持 modbus RTU 主站模式 。

 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 3楼 2011-08-12 14:17:36
quote:以下是引用闷蛋在2011-07-20 09:08:20的发言:
一、s7200 PLC modbus rtu通讯基础: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 不支持。
使用 modbus RTU 主站指令库,可以读写 modbus RTU 从站的数字量、模拟量 I/O 以及保持寄存器。
要使用 modbus RTU 主站指令库,须遵循下列步骤:
安装西门子标准指令库
按照要求编写用户程序调用 Modubs RTU 主站指令库
二、主站和从站功能块
1、主站控制功能块和数据读写功能块可以参见帮助文件,写的非常详细!
三、注意及常见问题
1、modbus通讯是一种轮询的方式,即一次只能读取一个站的数据。所以在触发读取数据的时候要用脉冲触发,而非长期为1去触发。
2、在读取多个从站的时候,要注意每个站的轮询,轮询程序没做好,将导致通讯超时得错误,从而无法读取数据。
3、参数设计的时候,奇偶校验,通讯速率得一致,站地址不能有冲突。
4、主站与从站的数据区必须一致。
5、详细故障可以通过程序块得故障代码查询。


 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 4楼 2011-08-12 14:19:01
quote:以下是引用www123456在2011-07-20 10:08:29的发言:
S7-200 PLC 比较300 plc实现modbus的优点:
虽然s7-200在实现modbus通讯时使用的是s7-200的自由口功能,借口采用rs485,或通过适配器转换成rs232接口类型不如cp341的丰富,但其实现modbus功能上无需组态和额外购买组件,所以实现起来既简单而且成本低廉,在比较低端的场合是不错的选择.
S7-300plc+cp341的优点:
1.由于cp341可以安装在etm200站上通过profibus方式与主站相通,此方案适合于较大型系统进行modbus通信设计和改造.
2.cp341的接口类型多,包含rs232,rs422/rs485.


 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 5楼 2011-08-12 14:20:04
quote:以下是引用www123456在2011-07-22 08:05:29的发言:
quote:以下是引用joejoejoe在2011-07-21 22:30:52的发言:
请教各位大侠:可以通过CP243-1走modbus TCP与其他设备通信吗?

modbus RTU为:
“RTU 地址 功能码 数据 差错校验”
modbus/TCP总结来说是在TCP/IP上传输modbus报文为:
“TCP包头 目的地址 协议id 长度 单元号 功能码 数据”
所以她兼有TCP/IP的流控特点,一是modbus/TCP相对于modbus RTU来说中去掉CRC校验,主要是TCP中已经有报文的安全传输校验机制,可以节省打包和解包的时间,另外在modbus/TCP的报头中有个字节包含传输的数据长度,保证了应用层数据的安全传输。
s7-200不支持modbus TCP传输协议,有一种s7-200 PPI转 modbus_TCP的以太网协议转换器可以试一下。

 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 6楼 2011-08-12 14:20:46
quote]以下是引用SHANGRILA在2011-07-26 15:36:14的发言:
quote:以下是引用joejoejoe在2011-07-21 22:30:52的发言:
请教各位大侠:可以通过CP243-1走modbus TCP与其他设备通信吗?不行,CP243-1不支持modbus-TCP协议,300/400CPU支持此协议。
可参考:
《如何建立 SIMATIC S7 的开放式 modbus/TCP 通讯,如何查找相关信息?》下载:
http://www2.ad.siemens.com.cn/download/Upload/AS/faq/22660304.pdf
见《基于S7-300,400 CPU集成PN 接口 modbus TCP通讯快速入门》下载:
http://www2.ad.siemens.com.cn/download/Upload/AS/application/A0401.zip
见《基于S7-300,400以太网通讯模块CP modbus TCP通讯快速入门》下载:
http://www2.ad.siemens.com.cn/download/Upload/AS/application/A0394.zip


 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 7楼 2011-08-12 14:21:20
quote:以下是引用西周在2011-08-02 22:21:05的发言:
quote:以下是引用kinkin在2011-07-26 07:17:14的发言:
quote:以下是引用www123456在2011-07-22 08:25:55的发言:
quote:以下是引用风吹叶落在2011-07-21 18:51:58的发言:
200的port 1 口为啥不能做从站, 如果我需要让200两个网络的从站,
就实现不了,感觉比较麻烦

实际也可以,自己编程实现能实现。

自己编程从理论上讲确实能实现,但是实在太麻烦了,不推荐这么做。
至于西门子为什么没有开发这个功能,估计是使用者太少了,所以可能还是想别的办法解决更好一些。

如果使用S7-200端口1做modbus从站,而且主站使用的modbus功能码和地址比较固定,则可先用串口调试软件获得modbus从站应答主站的相应报文的串口帧,再用自由口的XMT指令发给modbus主站以响应其请求。这样相对与自己编程实现完整的modbus从站功能要简单得多。

 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 8楼 2011-08-12 14:21:57
quote:以下是引用电气人生!在2011-07-27 15:18:53的发言:
modbus通信在对速度要求不高的场合下应用是十分广泛的,主要原因就是成本比较低。
我现在的项目就在用大批的S7-1200与变频器、仪表做modbus通信。包括读取一些实时事,同时写入一些设定值。
比如S7-1200带3个RS485模块,每个模块与16个变频器做通信,一套1200就可以与48个变频器通信,基本上是一条生产线了。设计完成后,速度还可以接受。
但是在S7-1200和变频器通信时总会不规律的出现80E2、80E3的status代码;和仪表通信时总会不规律的出现8380的status代码。具体原因也无法准确定位,和西门子技术支持沟通也说不太准确,暂归结为干扰的原因。只能在PLC编程做点文章,把这些不规律的error给过滤掉。

 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 9楼 2011-08-12 14:24:06
2.S7-200 modbus通信编程注意事项:

quote:以下是引用www123456在2011-07-21 17:45:53的发言:
1.地址选择:由于指令库占用一定地址空间,编程时要注意,可以使用建议地址,不会有冲突(注意:间接接寻址检测不到)。
2.STEP 7-Micro/WIN V4.0 以上版内部已经带有新的指令库,但在未安装西门子 Instruction Library 软件包的情况下,不能显示出来使用。
要使用西门子的标准指令库,必须先安装西门子的指令库软件包 Instruction Library。安装了 Instruction Library 之后,只要安装的 STEP 7-Micro/WIN 版本是最新的,就能获得相应版本的新指令库。安装 Micro/WIN 的升级包(Service Pack)也会更新指令库的版本。
需要下载:
Toolbox_V32-STEP 7-Micro WIN 32 Instruction Library
3.PLC间逻辑地应连接好。

 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 10楼 2011-08-12 14:24:45
quote:以下是引用gkmao在2011-07-21 09:06:40的发言:
modbus RTU库中调用modbus子程序后需要给其分配库存储区。即选择项目目录树下的“程序块”->“库”,点击鼠标右键,在弹出的菜单中选择“库存储区(M)...”,在弹出的对话框中分配库存储区地址,此地址不要与其他程序使用的存储区重叠。
强烈建议大家分享一下在实际项目中使用modbus RTU库时遇到的问题及如何解决的经历。

 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 11楼 2011-08-12 14:25:23
quote:以下是引用kinkin在2011-07-26 07:10:30的发言:
我用S7-200CN与施耐德伺服驱动器通讯时,读写驱动器参数都需要将参数号加“40001”而非资料上说的加“40000”,所以请各位如果有类似的通讯要做的时候,注意一下这个小细节。

 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 12楼 2011-08-12 14:26:55
quote:以下是引用kinkin在2011-07-26 07:13:54的发言:
quote:以下是引用爱上齐它味道在2011-07-25 09:39:46的发言:
我当初毕业设计做的就是利用modbus协议做的监控系统,不过用的是西门子plc,做的过程中发现西门子用modbus协议通讯不了,后来改为西门子自带PPI协议。

这个应该是可以的,你把S7-200CN设置为modbus从站,按编程手册要求调用从站的程序块,这样主站从200CN读写数据时,200CN就会自动响应的。无须其它的操作,比主站协议要简单多了。

 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 13楼 2011-08-12 14:27:25
quote:以下是引用www123456在2011-07-26 16:04:09的发言:
quote:以下是引用SHANGRILA在2011-07-26 15:51:01的发言:
曾做CPU224XP与台达VFD-E变频器的modbus RTU通讯,变频器和PLC端都选择了奇偶校验方式,都不能正常通讯,最后选择无校验,通讯成功;与丹弗斯变频器通讯也是如此。还有就是modbus RTU同时只能执行一个读或者写指令。每一个读写功能(即 MBUS_MSG)都用上一个 MBUS_MSG 指令的 Done 完成位来激活,以保证所有读写指令循环进行。

DONE:初始化完成,此位会自动置1。可以用该位启动 MBUS_MSG 读写操作。
一般本次MBUS_MSG的”done"放到下个MBUS_MSG的”Fist"前面,读写操作前再串入从站需要的轮循时间的条件(在采集频率允许条件下),效果更稳定可靠。

 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 14楼 2011-08-12 14:27:45
quote:以下是引用西周在2011-08-08 10:17:24的发言:
S7-200 modbus主站库支持地址0做广播,modbus从站库不支持广播数据的接收。

 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 15楼 2011-08-12 14:28:12
quote:以下是引用西周在2011-08-10 09:43:28的发言:
quote:以下是引用西门-艾伦在2011-08-08 17:00:05的发言:
请教各位:
modbus主站指令MBUS_MSG通信超时会重发吗?如果会是几次?

默认会在超时后再重发2次。这个设置可通过库对应的符号表中的"mmodbusRetries"请求重复的次数来修改。

 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 16楼 2011-08-12 14:29:05
quote:以下是引用下里巴人在2011-07-31 22:26:22的发言:
我原来用224XP做的modbus与杰曼称重仪表8802F通讯,只是读取仪表的数据,(详细的过程可以看我发过的帖子,含程序)到现在一直在项目中使用;近期又根据客服的需要,做了modbus与千野KP1000的通讯,读写都有使用,总的感觉还是很方便。

 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 17楼 2011-08-12 14:29:35
quote:以下是引用huahai825在2011-08-02 14:57:34的发言:
我用modbus完成了S7200与丹佛斯变频器F302的通讯,在S7200里使用modbus Master库文件就行啦

 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理


只看楼主 楼主 18楼 2011-08-12 14:30:08
quote:以下是引用奋斗不息在2011-08-02 21:28:15的发言:
我用modbus完成了S7200与威科达伺服的通讯,也是使用的库文件。详细的要整理一下,当时也是遇到了些问题,后来总算是顺畅了。

 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
应用探讨——S7-200 PLC Modbus通讯应用探讨—发帖整理
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。