技术论坛

 西门子STEP7下CP340/CP341/CP440/CP441/CPU31xC-2PTP实现MODBUS RTU主站通信

返回主题列表
作者 主题
不欲勿施
奇侠

经验值:8884
发帖数:835
精华帖:16
楼主    2017-03-31 10:56:17
主题:西门子STEP7下CP340/CP341/CP440/CP441/CPU31xC-2PTP实现MODBUS RTU主站通信 精华帖 

一、   概述

本文描述的程序文件可以在西门子CP340/CP341/CP440/CP441通信模块无硬件授权(硬狗)下实现MODBUS RTU 主站通信。

本程序特点:

1.      通信模块无需硬件授权。

2.      实现MODBUS RTU 功能号1、2、3、4、5、6、15、16。

3.      支持单台CPU下多台通信模块,一台通信模块使用一套程序,互不干扰。

4.      可单条或多条 轮询指令 离线,即从站掉电,可手动让其离线,减少轮询时间。

5.      程序量再大也不必担心CPU扫描时间,因为未运行的指令会跳过。

6.      每条指令单独返回错误信息。

7.      不必担心程序块和数据块多,支持多重背景。

8.      程序组态直观,简单,方便,灵活。

二、   通信网络施工

关于通信网络施工,尽量选择西门子485紫皮电缆,你胡弄网络,网络就胡弄你,所以质量可靠的硬件是保证通信正常的前提。若通信线路过长,请使用RS485中继器,但请不要西门子RS485中继器,因为不支持MODBUS通信。具体接线方式请查阅相关资料。

三、   硬件组态

STEP7安装完成后,并不支持CP通信模块组态。需要安装驱动,驱动下载地址:

https://support.industry.siemens.com/cs/document/27013524/“cp340、cp341、cp440、cp441”下载-cd?dti=0&pnid=13806&lc=zh-CN

下载相应驱动安装即可。

现以CP340为例进行硬件组态说明

  1.      添加CP340到机架,如图:



2.     在CP340上右键选择对象属性


记下这里的地址,编程时需要用到,点击参数按钮,进行参数组态。

 


3.     参数组态


协议选择ASCII,点“Protocol”。


4.     报文设置


1,报文选择延时完成。2,选择数据接收时字符间距超过4ms就完成报文,如果通信速率是19200,可以延时2ms。3,速率,数据位,停止位,校验位设置与从站一致。


5.     串口接线方法,这里选择2线。



6.     保存并确定所有对话框,CP340硬件组态完成。其它通信模块的组态方式大同小异。

 

四、      程序说明及使用方法

  1.      您得到的程序如图:



这是由STEP7归档后文件,应使用STEP7恢复命令,恢复后会看到项目已经打开。


 


 

 

2.     程序工作原理


3.     程序块功能说明:

MBUS_POINTER_DB:用户数据块。可以是单个数据块,也可以是多个数据块。从站返回的数据保存在这个数据里,向从站写入的数据也在这个数据块里。

MBUS_BUFFER_DB:缓冲区数据块。一个缓冲区数据块对应一个串口。将要发送的数据在这里进行校验操作,接收回的数据同样在这里校验操作。

MBUS_MASTER_MSG:主站轮询指令功能块。可以单个块运行,也可以多个块轮流运行。根据输入参数决定把哪些用户数据放入缓冲区数据块,再将从站返回数据放回用户数据块。注意:同一时刻只允许一个主站轮询指令工作,否同返回06错误。

MBUS_MASTER_CTRL:主站通信控制功能块。一个通信控制功能块对应一个串口。主要功能为发送和接收与从站的通信的报文。


 4.     功能块参数说明

MBUS_MASTER_MSG





 

 

MBUS_MASTER_MSG


 


   



MBUS_BUFFER_DB

缓冲区数据块是一个350(不可小于350)个字节数据块,可以复制,可改符号,可改绝对地址

MBUS_POINTER_DB

用户数据块用户可自行定义,无要求。

五、      程序注意

例程内有PLC上电初始化脉冲(First_Scan_On),见OB1最下方程序及OB100。指令使用此脉冲初始化。指令内使用符号寻址,所以绝对地址可更改。

其它指令的符号地址和绝对地址都可更改。

当功能号为5时,用户数据块的字节地址的第0位有效。

当功能号为1,2,15时,用户数据块的字节地址的从第0位开始有效。

程序无法在仿真器内工作。

六、      程序高级应用

1.当有多台从站执行相同操作时,如读取相同数据寄存器。这时可将指令的完成位连接到读写请求位,将从站地址和用户数据块字节号做成变量,使用完成位改变这两个变量,就可以实现单指令轮询多主站。

2.当用通信控制设备启停等操作时,或多从站时快速刷新单个从站数据时,要求响应时间快一些,而有些程序没有这方面考虑。本程序在应对此方面可以将单一轮询指令的激活位置真,其它指令置假(用上升沿,仅一个扫描即可),这时不管其它指令在什么状态都会将串口使用权让出,优先让激活的指令运行。

七、      不足之处

这里共享出所有已经编好的例程,由于硬件有限,只有CP340经过通信验证,如果网友使用其它通信模块有问题,我们会根据问题完善程序。通信程序为全功能7天运行版,7天后可对PLC进行清除复位,程序继续可用。如项目需要无限时版,指令属性内有联系方式。

 附通信成功截图



博图平台程序正在进行中,敬请期待。

本帖程序如下:

S7MBTEST.z01.zip

S7MBTEST.zip

因为附件限制1M以内,所以两个文件下载后将S7MBTEST.z01.zip文件的文件名后边的.zip去掉

13478405725
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。