欢迎您 登录 | 注册| 找回密码 | 帮助

日志

[原创]一步步学习SMART(六)

qjj740210  发布于:2014-08-15

(六)SMARTRS485通讯口__Modbus协议通讯的实现acba12【中国自动化网社区】61b215【http://sns.ca800.com】0a

5345ba【中国自动化网社区】c77374【http://sns.ca800.com】f888

    西门子在 STEP 7-Micro/WIN SMART 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。5345ba【中国自动化网社区】c77374【http://sns.ca800.com】f888

90【中国自动化网社区】712815【http://sns.ca800.com】7e7

90【中国自动化网社区】712815【http://sns.ca800.com】7e7

图 1. 西门子标准指令库(STEP 7-Micro/WIN SMART90【中国自动化网社区】712815【http://sns.ca800.com】7e7

使用 Modbus RTU 主站指令库,可以读写 Modbus RTU 从站的数字量、模拟量 I/O 以及保持寄存器。09eeea【中国自动化网社区】1fe8c3【http://sns.ca800.com】59794

以下仍然以2SR306ES7288-1SR30-0AA0,一台做主机(192.168.2.212),一台做从机(192.168.2.207为例说明实现过程09eeea【中国自动化网社区】1fe8c3【http://sns.ca800.com】59794

目的:从站I0.0/I0.1对应控制主站Q0.0/Q0.1;主I0.0/I0.1对应控制从站Q0.0/Q0.109eeea【中国自动化网社区】1fe8c3【http://sns.ca800.com】59794

主站编程如下:09eeea【中国自动化网社区】1fe8c3【http://sns.ca800.com】59794

1. 调用 Modbus RTU 主站初始化和控制子程序17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

2. 调用 Modbus RTU 主站读写子程序MBUS_MSG,发送Modbus 请求17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed


17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

数据逻辑处理:17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed


17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

3. 在 CPU 的 数据区中为库指令分配存储区(Library Memory,Modbus Master 指令库需要一个286个字节的全局 存储区。 调用STEP 7 - Mciro/WIN SMART Instruction Library(指令库)需要分配库指令数据区(Library Memory)。库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

步骤:右键“程序块”——点击“库存储器”,弹出的对话框中设置。“库存储器分配”对话框中可以点击一次“建议地址”为库指令分配存储区,也可以自己填写。但是一定要注意分配的286个字节的全局 存储区必须检查没有在程序其他地方使用到。17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

2#从站编程如下:17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

1. 使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

数据逻辑处理17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

2. CPUV数据区中分配库指令数据区(Library Memory17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

Modbus Slave 指令库需要一个781个字节的全局 存储区。 17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

调用STEP 7 - Mciro/WIN SMART Instruction Library(指令库)需要分配库指令数据区(Library Memory)。库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

操作步骤类似主站中分配库指令数据区步骤。17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

逻辑验证:17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

1. 从站I0.0/I0.1有信号,主站Q0.0/Q0.1输出;从站I0.0/I0.1无信号,主站Q0.0/Q0.1没有输出17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

2. 主站I0.0/I0.1有信号,从站Q0.0/Q0.1输出;主站I0.0/I0.1无信号,从站Q0.0/Q0.1没有输出17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

17f【中国自动化网社区】f7a2bb【http://sns.ca800.com】2cbed

回复 (3)    |   1550次阅读   |   分享   |   举报

下一篇:[原创]一步步学习SMART(五) >>

回复

关于我们   |    免责声明   |    隐私声明   |    社区准则   |    不良信息举报   |    联系我们

Copyright 2010-2016 中国自动化网 All Rights Reserved. 粤ICP备09051729