电工学习网

 找回密码
 立即注册
查看: 4823|回复: 1
打印 上一主题 下一主题

西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信

[复制链接]
跳转到指定楼层
楼主
发表于 2020-8-3 09:24:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
一、 概述
        本文描述的程序文件可以在西门子300 400通过CPU本体以太网口,或CP模块的网口以开放式通信方式实现MODBUS TCP 主站通信。
本程序特点:。
1.     实现MODBUS RTU 功能号1、2、3、4、5、6、15、16。
2.     支持单台CPU下多网口通信,一个连接使用一套程序,互不干扰。
3.     可单条或多条轮询指令 离线,即从站掉电,可手动让其离线,减少轮询时间。
4.     程序量再大也不必担心CPU扫描时间,因为未运行的指令会跳过。
5.     每条指令单独返回错误信息。
6.     不必担心程序块和数据块多,支持多重背景。
7.     程序组态直观,简单,方便,灵活。
二、硬件支持
        所有支持关于通信网络施工,尽量选择西门子以太网绿皮电缆及,你胡弄网络,网络就胡弄你,所以质量可靠的硬件是保证通信正常的前提。通信网络的布线要保证EMA电磁兼容性,远离强电及强磁场。
三、硬件组态
        现以CPU315-2 PN/DP为例进行硬件组态说明
1.     添加机架及CPU315-2 PN/DP到机架,双击PN-IO-1如图:
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
2.     常规属性页,点CPU以太网接口属性按钮。
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
3.     加入子网,没有的话新建。设置IP地址和子网掩码,如果需要路由则还需要设置网关。单击确定完成,保存并编译硬件组态。
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
四、   开放式以太网通信组态
1.     开放式以太网通信向导的安装
开放式以太网通信向导是STEP7安装光盘根目录的Optional ComponentsOC Wizardsetup.exe。正常安装就可以,此向导软件不需要授权。
2.   运行开放式以太网通信向导,块上右键,选OC Wizard
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
3.    这里点OK
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
3. 这里可以新建,改变,复制开放式通信连接,我们选择新建,点击Next。
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
5.    我们这里选择TCP native,点Next。
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
6.    我们是与第三方通信,所以我们选择B设备为不是S7-CPU。点击Next。
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
7.    1.Connection ID:连接ID可以任意,但不能重复,ID号记下来,在程序中会用到。2.Connection name:连接名称可以任意。3Active:主动,我们这里选择plc主动建立连接。4.Used interface:这里选择使用的接口,我们选择CPU315/317,5.这里填写从站IP地址。6.点击Next。
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
8.    这里我们要填写从站的TCP通信端口号,通常从站的端口号为502。点击Next。
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
9.    这里是建立开放式通信的连接指针数据块,可以任意。点击Next。
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
10.    这里是建立好连接的列表,点击Next。
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
11.    这里问你是否还配置其它的连接,点Finish。
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
12.    点“是”关闭向导。
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
13.    这是向导建立的通信连接用的数据块,具体说明见其说明文档。 西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
五、      程序说明及使用方法
1.     您得到的程序如图:
这是由STEP7归档后文件,应使用STEP7恢复命令,恢复后会看到项目已经打开。
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信

西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
2.     程序工作原理
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
3.     程序块功能说明:
MbusPointerDB:用户数据块。可以是单个数据块,也可以是多个数据块。从站返回的数据保存在这个数据里,向从站写入的数据也在这个数据块里。
MbusBufferDB:缓冲区数据块。一个缓冲区数据块对应一个通信连接。将要发送的数据在这里进行校验操作,接收回的数据同样在这里校验操作。
MBTcpMaserMsg:主站轮询指令功能块。可以单个块运行,也可以多个块轮流运行。根据输入参数决定把哪些用户数据放入缓冲区数据块,再将从站返回数据放回用户数据块。注意:同一时刻只允许一个主站轮询指令工作,否同返回06错误。
MBTcpMasterCtrl:主站通信控制功能块。一个通信控制功能块对应一个通信连接。主要功能为发送和接收与从站的通信的报文。
4.     功能块参数说明
MBTcpMasterCtrl
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信

MBTcpMasterCtrl





功能脚名称类型数据类型说明允许值,说明
OpenIEConActiveINPUTBOOL开放式通信连接是否激活真为启用,假为不启用
OpenIeIDINPUTWORD开放式通信连接标识符前面向导生成的ID号
SendTimeINPUTTIME发送前定时此值为指令的间隔时间
RcvTimeOutINPUTTIME接收信息时的超时时间,通常为1S值可以很大,但没有必要
MbusBufferDBINPUTBLOCK_DB缓冲区数据块如:DB3000
MbusBufferDbNOINPUTINT缓冲区数据块号如:3000,需与上面一致,但没有DB字母
OpenIEConConnectIN_OUTANY开放式通信连接指令的连接说明指针见例程
LicenseOUTPUTBOOL

OpenIEConDoneOUTPUTBOOL
建立连接时0: 作业尚未开始或仍在运行 1: 无错执行作业
OpenIEConBusyOUTPUTBOOL
建立连接时1:作业尚未完成0:作业完成
OpenIEConErrorOUTPUTBOOL
建立连接时1:处理作业期间出现错误。STATUS返回有关错误类型的详细信息
OpenIEConStatusOUTPUTWORD
建立连接时错误信息
OpenIEDisconDoneOUTPUTBOOL
断开连接时0: 作业尚未开始或仍在运行 1: 无错执行作业
OpenIEDisconBusyOUTPUTBOOL
断开连接时1:作业尚未完成0:作业完成
OpenIEDisconErrorOUTPUTBOOL
断开连接时1:处理作业期间出现错误。STATUS返回有关错误类型的详细信息
OpenIEDisconStatusOUTPUTWORD
断开连接时错误信息
WorkingSlaveOUTPUTINT正在与从站通信的从站地址可能值为1到247
DoneOUTPUTBOOL完成标志位通信连接后,一直为真

MBTcpMasterMsg
西门子S7-300 400 在STEP7环境下开放式以太网通信 实现MODBUS TCP主站通信
MBTcpMasterMsg
功能脚名称类型数据类型说明允许值,说明
InstructionActiveINPUTBOOL真为激活指令,假为不激活指令
NewRequestINPUTBOOL读写请求位每一个新的读写请求必须使用脉冲触发
SlaveINPUTINT从站地址1到247
ReadWriteINPUTINT0=读,1=写1. 开关量输出和保持寄存器支持读和写功能
2. 开关量输入和模拟量输入只支持读功能
AddrINPUTDINT读写从站的数据地址选择读写的数据类型
00001 至 0xxxx - 开关量输出
10001 至 1xxxx - 开关量输入
30001 至 3xxxx - 模拟量输入
40001 至 4xxxx - 保持寄存器
400001 至 465535 - 保持寄存器
CountINPUTINT数据个数通讯的数据个数(位或字的个数)
Modbus主站可读/写的最大数据量为120个字(是指每一个 MBUS_MASTER_MSG 指令)
MbusBufferDBINPUTBLOCK_DB缓冲区数据块如:DB3000
MbusPointerDBINPUTBLOCK_DB用户数据块如:DB2000
MbusPointerBYTEINPUTINT用户数据块字节地址1. 如果是读指令,读回的数据放到数据区这个字节开始的区域中
2. 如果是写指令,要写出的数据从这个字节开始的数据区取出
DoneOUTPUTBOOL完成位此位为脉冲信号,需要保持信号,用户自行加起保停程序,完成位为启动,读写请求位为停止即可。
ErrorOUTPUTINT通信错误0无错误
3接收超时
4输入参数错误
5 Modbus通信未激活
6忙,正在处理其它请求
7接收的数据CRC校验错误
8接收的数据长度与预长长度不符
9响应错误,响应不是请求的操作
10发送出错
11接收出错
14本指令未启用
101从站不支持请求的功能
102从站不支持数据地址
103从站不支持此种数据类型
104从站设备故障
105从站接收的信息,但响应被延迟
106从站忙,拒绝了该消息
107从站拒绝了消息
108从站存储器奇偶错误
MbusSendStatusOUTPUTWORD
见发送指令规范
MbusRevStatusOUTPUTWORD
发接收指令规范
MbusBufferDB
缓冲区数据块是一个400(不可小于400)个字节数据块,可以复制,可改符号,可改绝对地址。
MbusPointerDB
用户数据块用户可自行定义,无要求。
六、      程序注意
例程内有PLC上电初始化脉冲(FirstScanOn),见OB1最下方程序及OB100。指令使用此脉冲初始化。指令内使用符号寻址,所以绝对地址可更改。
其它指令的符号地址和绝对地址都可更改。
当功能号为5时,用户数据块的字节地址的第0位有效。
当功能号为1,2,15时,用户数据块的字节地址的从第0位开始有效。
程序无法在仿真器内工作。
七、      程序高级应用
1.    当有多台从站执行相同操作时,如读取相同数据寄存器。这时可将指令的完成位连接到读写请求位,将从站地址和用户数据块字节号做成变量,使用完成位改变这两个变量,就可以实现单指令轮询多主站。
2.    当用通信控制设备启停等操作时,或多从站时快速刷新单个从站数据时,要求响应时间快一些,而有些程序没有这方面考虑。本程序在应对此方面可以将单一轮询指令的激活位置真,其它指令置假(用上升沿,仅一个扫描即可),这时不管其它指令在什么状态都会将连接使用权让出,优先让激活的指令运行。
八、      不足之处
这里共享出所有已经编好的例程,由于硬件有限,只有在winAC和cpu315中经过通信验证,如果网友使用其它通信模块有问题,我们会根据问题完善程序。通信程序为全功能24天运行版,24天后可对PLC进行清除复位,程序继续可用。如项目需要无限时版,指令属性内有联系方式。
来源:西门子工业技术论坛

回复

使用道具 举报

沙发
发表于 2021-9-18 08:47:38 来自手机 | 只看该作者
从哪里下载程序

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-4-27 08:08

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表