技术论坛

 应用探讨——S7-200 PLC Modbus通讯应用探讨

返回主题列表
作者 主题

总坛主
西门子官方工程师西门子官方工程师

经验值:23708
发帖数:3792
精华帖:8
楼主    2011-07-18 15:22:19
主题:应用探讨——S7-200 PLC Modbus通讯应用探讨
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通信
活动奖励:
此次集中交流将持续至8月10日,其中所有精华帖作者将获得加倍精华奖励积分;最终所有有效留帖的网友将获得加倍发帖积分。更多积分带给您更多奖品兑换的自由。
对于有突出发言贡献的网友,还可以在当前的可兑换奖品中免费挑选任一款奖品。
交流结束后也将专门整理重要内容,供广大网友分享参考。
预祝大家交流愉快,收获丰富!
www123456
至圣

经验值:12233
发帖数:2431
精华帖:86
2楼    2011-07-19 13:39:13
精华帖  主题:回复:应用探讨—S7-200 PLC Modbus通讯应用探讨
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 主站模式 。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
々稻草人々
侠客

经验值:843
发帖数:152
精华帖:9
3楼    2011-07-20 09:08:20
精华帖  主题:回复:应用探讨——S7-200 PLC Modbus通讯应用探讨
一、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、详细故障可以通过程序块得故障代码查询。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
生活就是不断寻找你想要的东西
www123456
至圣

经验值:12233
发帖数:2431
精华帖:86
4楼    2011-07-20 10:08:29
精华帖  主题:回复:应用探讨——S7-200 PLC Modbus通讯应用探讨
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.

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
gkmao
新手

经验值:32
发帖数:3
精华帖:1
6楼    2011-07-21 09:06:40
精华帖  主题:回复:应用探讨——S7-200 PLC Modbus通讯应用探讨
modbus RTU库中调用modbus子程序后需要给其分配库存储区。即选择项目目录树下的“程序块”->“库”,点击鼠标右键,在弹出的菜单中选择“库存储区(M)...”,在弹出的对话框中分配库存储区地址,此地址不要与其他程序使用的存储区重叠。

强烈建议大家分享一下在实际项目中使用modbus RTU库时遇到的问题及如何解决的经历。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
www123456
至圣

经验值:12233
发帖数:2431
精华帖:86
7楼    2011-07-21 17:45:53
精华帖  主题:回复:应用探讨——S7-200 PLC Modbus通讯应用探讨
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间逻辑地应连接好。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
www123456
至圣

经验值:12233
发帖数:2431
精华帖:86
10楼    2011-07-22 08:05:29
精华帖  主题:回复:应用探讨——S7-200 PLC Modbus通讯应用探讨
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的以太网协议转换器可以试一下。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
kinkin
至圣

经验值:12649
发帖数:5831
精华帖:44
16楼    2011-07-26 07:10:30
精华帖  主题:回复:应用探讨——S7-200 PLC Modbus通讯应用探讨
我用S7-200CN与施耐德伺服驱动器通讯时,读写驱动器参数都需要将参数号加“40001”而非资料上说的加“40000”,所以请各位如果有类似的通讯要做的时候,注意一下这个小细节。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
数字飞舞
SHANGRILA
侠圣

经验值:3365
发帖数:874
精华帖:4
19楼    2011-07-26 15:36:14
精华帖  主题:回复:应用探讨——S7-200 PLC Modbus通讯应用探讨
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

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
君子以自强不息
SHANGRILA
侠圣

经验值:3365
发帖数:874
精华帖:4
20楼    2011-07-26 15:51:01
精华帖  主题:回复:应用探讨——S7-200 PLC Modbus通讯应用探讨
曾做CPU224XP与台达VFD-E变频器的modbus RTU通讯,变频器和PLC端都选择了奇偶校验方式,都不能正常通讯,最后选择无校验,通讯成功;与丹弗斯变频器通讯也是如此。还有就是modbus RTU同时只能执行一个读或者写指令。每一个读写功能(即 MBUS_MSG)都用上一个 MBUS_MSG 指令的 Done 完成位来激活,以保证所有读写指令循环进行。
君子以自强不息
www123456
至圣

经验值:12233
发帖数:2431
精华帖:86
21楼    2011-07-26 16:04:09
精华帖  主题:回复:应用探讨——S7-200 PLC Modbus通讯应用探讨
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"前面,读写操作前再串入从站需要的轮循时间的条件(在采集频率允许条件下),效果更稳定可靠。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
sunny999
侠圣

经验值:3461
发帖数:1845
精华帖:6
23楼    2011-07-27 15:18:53
精华帖  主题:回复:应用探讨——S7-200 PLC Modbus通讯应用探讨
modbus通信在对速度要求不高的场合下应用是十分广泛的,主要原因就是成本比较低。
我用过S7-200与变频器、仪表做modbus通信。包括读取一些实时事,同时写入一些设定值。
比如CPU带3个RS485模块,每个模块与16个变频器做通信,一套PLC就可以与48个变频器通信,基本上是一条生产线了。设计完成后,速度还可以接受。

但是在PLC和变频器通信时总会不规律的出现80E2、80E3的status代码;和仪表通信时总会不规律的出现8380的status代码。具体原因也无法准确定位,和西门子技术支持沟通也说不太准确,暂归结为干扰的原因。只能在PLC编程做点文章,把这些不规律的error给过滤掉。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
Better and More !
西周
侠客

经验值:637
发帖数:64
精华帖:18
29楼    2011-08-02 22:21:05
精华帖  主题:回复:应用探讨——S7-200 PLC Modbus通讯应用探讨
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从站功能要简单得多。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
西周
侠客

经验值:637
发帖数:64
精华帖:18
31楼    2011-08-08 10:17:24
精华帖  主题:回复:应用探讨——S7-200 PLC Modbus通讯应用探讨
S7-200 modbus主站库支持地址0做广播,modbus从站库不支持广播数据的接收。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
西周
侠客

经验值:637
发帖数:64
精华帖:18
33楼    2011-08-10 09:43:28
精华帖  主题:回复:应用探讨——S7-200 PLC Modbus通讯应用探讨
quote:以下是引用西门-艾伦在2011-08-08 17:00:05的发言:
请教各位:
modbus主站指令MBUS_MSG通信超时会重发吗?如果会是几次?


默认会在超时后再重发2次。这个设置可通过库对应的符号表中的"mmodbusRetries"请求重复的次数来修改。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。