S7-200通过modbus rtu读取带485接口的智能电表rs485 modbus协议数据,我西门子200PLC,怎么读取地址,图片有附说明书部分

[求助-西门子PLC200]S7-200做从站的MODBUS-RTU通讯问题
后使用快捷导航没有帐号?
只需一步,快速开始
一步搞定
&&&&SP赵云:抵制日货,从我做起! 20:49&&&&admin:大喇叭和回帖音乐、视频等功能使用方法请参考相关帖子。 18:39&&&&admin:即日起,开启大喇叭功能。欢迎使用大喇叭通知本站好友,只需花费3金币! 22:41
总共5313条微博动态微博: 2&小时前&: 5&小时前&: 6&小时前&: 昨天&18:00&: 前天&15:29&: 前天&09:24&: 前天&06:52&: 前天&06:07&: 前天&05:51&: 前天&05:30&: 前天&05:26&: 前天&04:41&: 前天&02:52&: 3&天前&: 3&天前&: 3&天前&: 3&天前&: 3&天前&: 3&天前&: 3&天前&: 3&天前&: 3&天前&: 3&天前&: 4&天前&: 4&天前&: 4&天前&: 4&天前&: 4&天前&: 4&天前&: 4&天前&站内全文搜索,由百度和追梦工控论坛合作提供
查看: 1739|回复: 2
分享好友UID605积分268帖子主题精华0金币191 枚追梦点0 视频0 部贡献0 点阅读权限50注册时间在线时间0 小时
里正, 积分 268, 距离下一级还需 132 积分
升级&&34%当前用户组为 里正当前积分为 268, 升到下一级还需要 132 点。该用户从未签到
上传分享工控资料得追梦点,
发帖回帖赚金币兑换下载积分。
马上注册,结交更多工控达人,分享经验,让你轻松玩转追梦工控论坛。已有帐号?&& &&或者&&&&&&&&
现在程序里已经写好INIT和SLAVE程序,地址为2,偶校验,&VB0起始地址,没有报错,采用的是DCS上位机,但串口调试通讯不上,不知道有没有别的要设置的?还有一个就是,如果通讯上了,我的aiw0的值是转换到了VD2068,DCS那边modbus地址对应的应该是多少啊?&/p&
& & & & 问题补充:
现在的情况是都通讯上了,具体是他们接线没锁紧,目前主要是如NSWDN所说的模拟量读取上,VD是双字而且还是浮点数,现在读上来的值不知如何理,希望各位高手指导,图片前面6个字就是三个模拟量。
图片说明: 1, 2,
让我们联手拒绝网络伸手党,
2人 等
过:
他们
本帖标题:本帖地址:
【追梦论坛】 - 免责声明
1、本帖所有言论和图片纯属发表者个人意见,与本站立场无关;
2、本主题由 : 【ohvfqcr】发表,本帖发表者【ohvfqcr】依享有相关权利;
3、其他单位或个人使用、转载或引用本帖时必须征得发表者【ohvfqcr】和【追梦工控论坛】的同意;
4、本帖作品部分转载自其它媒体并在本站发布,转载的目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责;
5、本帖如有侵犯到贵站或个人版权问题,请立即告知本站,本站将及时予与删除,并致以最深的歉意;
6、【追梦工控论坛】管理员和版主有权不事先通知发帖者而删除本文。
分享好友UID603积分270帖子主题精华0金币187 枚追梦点0 视频0 部贡献0 点阅读权限50注册时间在线时间0 小时
里正, 积分 270, 距离下一级还需 130 积分
升级&&35%当前用户组为 里正当前积分为 270, 升到下一级还需要 130 点。该用户从未签到
是4.对方DCS的modbus的地址可能要在前面的基础上加1或减1,因为有的定义地址从0开始,有的从1开始。还有你的数据是VD应该是浮点数占2个字,但modbus传送是1个字。要想把浮点数传过去估计沟通比较费事,不如直接传字过去再告诉其标定范围让其像运算模拟量一样得出浮点数还更好一点。还有通不上那modbus从站功能程序块会有出错信息的,到时看看可能会有帮助。
& && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && &&&& && && && && && && && && && && && && && && && && && &&&
分享好友UID611积分267帖子主题精华0金币177 枚追梦点0 视频0 部贡献0 点阅读权限50注册时间在线时间0 小时
里正, 积分 267, 距离下一级还需 133 积分
升级&&33.5%当前用户组为 里正当前积分为 267, 升到下一级还需要 133 点。该用户从未签到
1,“VD2068,DCS那边modbus地址对应的应该是多少”,自己定义。通讯双方约定好即可。
2,通讯不上与你的实验原理和方法有关。
& && && && && && && && && && && && && && && && && && &&&& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & && & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & && && && && && && && && && && && && && && && && && && && &
&&& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & && && & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & 1、但串口调试通讯不上,不知道有没有别的要设置的?
如果通讯线缆正常、设置及程序正确,与主站线缆连接完毕后,主站必须进行一次重启的操作,才能与从站连接通讯上。
2、地址对应的应该是多少啊?
可以自己与DCS那边进行约定。参考:
《S7-300 CP341做主站S7200做从站的Modbus RTU 通讯》下载:
http://www..cn/download/SearchResult.aspx?searchText=A0451
请认真回帖,多多分享资料和经验!纯数字、字母、表情、和主题无关等灌水回帖将被扣分处罚!
Powered by 追梦论坛 X2
&Created by每日登录:+1西币&+1积分
&下次自动登录
绑定第三方账号登录 & & &
扫描二维码登录支持中心移动端
获取动态密码
| 新手必读 |
You are here:
200读取Modbus RTU从站数据
热点活动:
200读取Modbus RTU从站数据 - 已解决问题
用西门子200读取从站温度,协议Modbus&RTU,接口485,格式,&9600,n,8,1,用200库文件MBUS_CTRL和MBUS_MSG读取,求程序段。我自己编出来总是出错误。
问题补充:我写的程序看看哪不对?
图片说明:
产品版区:
悬赏西币:5 | 解决时间: 20:22:25 | 提问者:& - 资深学长&nbsp&nbsp第3级
问题ID:138682
你这个MBUS_MSG指令报警3,说明是接收超时。其含义是当你timeout(2000)时间内没有接收到来自从站的响应。根据信息检查:与从站的硬件连接、与从站的通讯参数设置是否一致(包含从站地址是否设置为1),建议将M2.1用SM0.0替代,不建议用定时器作为读写请求的触发条件。
高级顾问&nbsp&nbsp第14级&
以下网友赞了您的问题:
填写您的评论...
提问者对于答案的评价:谢谢
建议优先检查线路程序块msg指令的en和first建议使用同一个地址,测试时可以先使用sm0.5测试可以使用modslave软件和plc通信测试
置评专家:西门子自动化产品支持& 10:22:30
更多相关问题
本版精华问答
等待您来回答
作者/最新回复
最后回复时间
有现成的程序直接用就行了,如果是多从站,用完成位来做轮训就可以了
- 资深学长&nbsp&nbsp第3级
& 21:01:22
1、参考:S7-200和12台modbus仪表的通讯实例程序:2、相关:、《MODBUS&RTU通讯协议在S7-200中的应用》连接:&、《S7-200基于MODBUS协议与智能仪表之间的通信实现方法》连接:&
- 大师&nbsp&nbsp第17级
& 21:57:50
处理好轮询。出错有代码可查。多从站轮循有精典例程:《Micro’n&Power&S7-200&LOGO!&SITOP&参考》V1.0版本&下载地址:&
- 顶级工程师&nbsp&nbsp第12级
& 22:10:37
来自手机Wap客户端
把T33触点换成M2.1即可修正错误按照你的思路也可以把M2.1触点换成T33
- 顶级工程师&nbsp&nbsp第12级
& 07:33:30
来自手机Wap客户端
上一页1下一页&
扫描打开手机版
20秒帮我们优化支持中心!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
欢迎您来到找答案
在“找答案”,已有超过7万个被解决的技术问题供您参考!
西门子技术专家亲自把关!常规的,简单的问题,在这里您都可以找到答案!
遇到了问题,就来“找答案”提问。
点击搜索框右侧的提问按钮,只需2步就能成功提交问题!分分钟就有无数大侠前来帮你。
在“找答案”每天都有大量的新问题。
别犹豫,只需要点击问题下方的“我要回答”就能参与。答题不光有积分相送,也会给您积攒大侠人气。
“找答案”定期开展各种有奖活动期待您的参与。
更有机会参加西门子高端用户峰会。领略西门子的博大精深!西门子s-200plc&与dcs通过&Mudbus RTU协议通讯
1、&Modbus&RTU协议与S7-200相互关系
S7-200&CPU上的通讯口Port0可以支持Modbus&RTU协议,成为Modbus&RTU从站。此功能是通过S7-200的自由口通讯模式实现,因此可以通过无线数据电台等慢速通讯设备传输。
如果想在S7-200&CPU与其他支持Modbus&RTU的设备使用Modbus&RTU协议通讯,需要由有S7-200&CPU做Modbus主站。S7-200&CPU做主站必须由用户自己用自由口模式,按相关协议编程。
在S7-200控制系统应用中,Modbus&RTU从站指令库只支持CPU上的通讯0口(Port0)。要实现Modbus&RTU通讯,需要Step7-Micro/WIN32&V3.2以上版本的编程软件,而且须安装Step7-Micro/WIN32&V3.2&Instruction&Library(指令库)。Modbus&RTU功能是通过指令库中预先编好的程序功能块实现的。
2、&Modbus&RTU协议在S7-200中应用的基本过程
(1)&首先检查S7-200控制系统中所用Micro/WIN的软件版本,应当是Step7-Micro/WIN&V3.2以上版本。
(2)&检查Micro/WIN的指令树中是否存在Modbus&RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。&<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://f./album/pic/item/eaf81a4c510fd9f9c28b585a242dd42a.jpg" WIDTH="346"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />&<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://e./album/pic/item/1e30e924b899a901a8acb0208f56c.jpg" WIDTH="340"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />
参数意义如下:&#9679;模式选择:启动/停止MODBUS,1=启动;0=停止;
&#9679;&从站地址:MODBUS从站地址,取值1~247;
&#9679;&波特率:可选,,1,57600;
&#9679;&奇偶校验:0=无校验;1=奇校验;2=偶校验;&
&#9679;&延时:附加字符间延时,缺省值为0;&
&#9679;最大I/Q位:参与通讯的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128;
&#9679;最大AI字数:参与通讯的最大AI通道数,可为16或32;
&#9679;最大保持寄存器区:参与通讯的V存储区字(VW);
&#9679;&保持寄存器区起始地址:以&VBx指定(间接寻址方式);
&#9679;&初始化完成标志:成功初始化后置1;&
&#9679;&错误代码:0=无错误。
3、&注意的问题  由子程序参数HoldStart&和MaxHold&指定的保持寄存器区,是在S7-200&CPU&的V&数据存储区中分配,此数据区不能和库指令数据区有任何重叠,否则在运行时会产生错误,不能正常通信。注意Modbus&中的保持寄存器区按“字”寻址,即MaxHold&规定的是VW&而不是VB&的个数。   &Modbus&保持寄存器区从&VB0&开始(HoldStart&=&VB0),并且保持寄存器为1000&个字(MaxHold=1000),因保持寄存器以字(两个字节)为单位,实际上这个通信缓冲区占用了VB0~VB1999&共2000&个字节。因此分配库指令保留数据区时至少要从VB2000&开始。当然保持区不一定要从VB0&开始。
注意:你选用的CPU&的V&存储区大小!CPU&型号不同V&数据存储区大小不同。应根据需要选择Modbus&保持寄存区域的大小。
包含&Modbus&RTU&从站指令库的项目编译、下载到CPU&中后,在编程计算机(PG/PC)上运行一些&Modbus&测试软件可以检验S7-200&的Modbus&RTU&通信是否正常,这对查找故障点很有用。测试软件通过计算机串口(RS-232)和PC/PPI&电缆连接CPU。如果必要,须将PC/PPI&电缆设置在自由口通信方式。
调用Step7-Mciro/WIN32&V3.2&Instruction&Library(指令库)需要分配库指令数据区(Library&Memory)。库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。4、在&Modbus&RTU&Master&协议和&PPI&协议之间切换:
Modbus&RTU&Master&协议指令库使通信口工作在自由口模式下,此时不能与&Micro/WIN&软件通信。要在切换回&PPI协议,可以:
·&将&MBUS_CTRL&指令的&Mode&输入端设置为逻辑“0”
·&将&CPU&的允许模式选择开关置为&STOP&位置5、Modbus&地址
通常&Modbus&地址由&5&位数字组成,包括起始的数据类型代号,以及后面的偏移地址。Modbus&Master&协议
准的&Modbus&地址映射为所谓&Modbus&功能号,读写从站的数据。Modbus&Master&协议库支持如下地址:
00001&-&09999:数字量输出(&线圈)
10001&-&19999:数字量输入(触点)
30001&-&39999:输入数据寄存器(通常为模拟量输入)
40001&-&49999:数据保持寄存器
Modbus&Master&协议库支持的功能
为了支持上述&Modbus&地址的读写,Modbus&Master&协议库需要从站支持下列功能:表&1.&需要从站支持的功能&<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://e./album/pic/item/4a36acaf2edda3cce4.jpg" WIDTH="362"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />Modbus&地址和&S7-200&存储区地址的映射S7-200&通过&Modbus&Master&和&Slave&协议库通信时,Modbus&地址和&S7-200&内存储区地址的映射关系都类似。
Modbus&保持寄存器地址映射举例:&
&<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://f./album/pic/item/d62aa3dbbb5c9eab840.jpg" WIDTH="580"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />&<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://h./album/pic/item/503dd6dad224f4ade43.jpg" WIDTH="486"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />
Modbus&RTU&从站地址与S7-200&的地址对应
Modbus&地址总是以0&之类的形式出现。S7-200&内部的数据存储区与Modbus&的0、1、3、4&共4&类地址
的对应关系如下:
表1.&Modbus&地址对应表&<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://e./album/pic/item/b3b7d0a20cf431adfff44b0a4a36acaf2edd98da.jpg" WIDTH="245"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />&
其中T&为S7-200&中的缓冲区起始地址,即&HoldStart。
如果已知S7-200&中的V&存储区地址,推算Modbus&地址的公式如下:
Modbus&地址&=&40000&+&(T/2+1)&;&T&为偶数Modbus&RTU&从站指令库支持的&Modbus&功能码
Modbus&RTU&从站指令库支持特定的&Modbus&功能。访问使用此指令库的主站必须遵循这个指令库的要求。&<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://e./album/pic/item/94cad1c8a786cac83d70cf3bc757f9.jpg" WIDTH="640"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />&<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://a./album/pic/item/a08b87dfdf7a163b1e30e924b899f3b2.jpg" WIDTH="640"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />&&常问问题
Modbus&从站的网络地址与&S7-200&的&CPU&网络地址有什么关系?
没有关系。支持网络通信的通信协议必须有其自己的网络寻址规定。&Modbus&从站的地址只是它在&Modbus&网络上的地址,而通常所说的&S7-200&CPU&地址是&CPU&在西门子的&PPI&网络上的站地址。S7-200&CPU&的大部分通信功能都通过&PPI&网络完成,例如编程、网络读写通信等。
如何理解&Modbus&地址与功能码的区别?
Modbus&地址与&Modbus&的功能码是两个层次的概念。
根据&Modbus&通信协议,Modbus&数据的地址使用&00xxx、10xxx、30xxx&和&40xxx&的形式,分别表示数字量输出、数字量输入、模拟量输入等数据地址。在使用&S7-200&的指令库时,Modbus&数据地址与&S7-200&的&I/O&和数据存储区地址间有特定的对应关系。有些设备表明它支持&Modbus&RTU&通信协议,但也详细提供了读写数据的详细通信帧格式,其中包括如何指定&Modbus&站的地址,需要读写数据类型、长度等等。数据帧有特定字节指出此指令读写的数据类型和地址,此字节的数据内容即所谓“功能码”,如功能&1&指定读取单个/多个数字量输出点的值。支持&Modbus&协议的设备或软件,使用时用户直接设置或看到的应当是&Modbus&数据地址。Modbus&地址所访问的数据,是通过各种“功能”读写而来。功能码是&Modbus&地址的底层。如果&Modbus&通信的一方提供的所谓&Modbus&协议只有功能码,则需要注意了解此功能号与&Modbus&地址间的对应关系&
为何有些&HMI&软件使用&Modbus&RTU&读取S7-200&中的实数会出现错误?
有些HMI&软件使用Modbus&RTU&通信协议时,处理存储在数据保持寄存器中的实数(浮点数)的方式与西门子的实数保存格式不同。西门子的PLC&遵循“高字节低地址、低字节高地址”的规律。Modbus&RTU&的保持寄存器总是以“字(双字节)”为单位,而一个实数需要4&个字节(双字)表示。HMI&软件在处理时可能会把保持寄存器的两个“字”互换位置,造成不能识别以西门子格式表示的实数。如果HMI&软件一方无法处理这种实数,则可在S7-200&CPU&中编程将存入数据缓冲区(保持寄存器区)的实数的高字和低字互换。
造粒机PLC200通讯配置表
<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://b./album/pic/item/8cb1cbc96f94dde4902.jpg" WIDTH="457"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />
&2、硬件组态:XP485卡
<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://d./album/pic/item/b2de9c82d158ccbf9fbdbc3eb1354184.jpg" WIDTH="640"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />
设置地址跳线,为4
<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://c./album/pic/item/024f78f0f736afc33b73bf56b219ebc4b7451281.jpg" WIDTH="174"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />
<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://g./album/pic/item/34a8b8ba38b2caad.jpg" WIDTH="609"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />
设置掉电保护,J3断路
<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://d./album/pic/item/728dabe33d4d1a8718367adab4e1b4.jpg" WIDTH="49"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />
3、组态实现
<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://h./album/pic/item/b812c8fcc3cec3fdf33af.jpg" WIDTH="640"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />
<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://g./album/pic/item/cbacb7809b.jpg" WIDTH="640"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />
<img STYLE="pADDinG-BoTToM: 0 MArGin: 0 pADDinG-LeFT: 0 pADDinG-riGHT: 0 MAx-WiDTH: 100%; HeiGHT: VerTiCAL-ALiGn: pADDinG-Top: 0px" src="/blog7style/images/common/sg_trans.gif" real_src ="http://b./album/pic/item/dcdd058ccbf6c814d85.jpg" WIDTH="640"
ALT="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯"
TITLE="西门子s-200plc&与dcs通过&Mudbus RTU协议通讯" />
已投稿到:S7-200使用Modbus协议【工控老鬼】
在使用Modbus协议时,计算机与S7-200之间通讯直接使用PPI通讯电缆即可。但如果通讯距离较远,或者需要将多个S7-200连接到一个通讯总线上时,我们可以通过如下方法配制通讯链路。
选配一个计算机通讯端口
由于S7-200通讯端口物理层使用的是RS-485通讯规范,因此我们需要在计算机端增加一个RS-485通讯端口,才能与计算机通讯建立通讯。如果计算机闲置的串口,我们可以选配一个RS-232转RS-484转换器即可;如果没有闲置的串口,我们通过在计算机中增加一个RS-485通讯卡也可以;现在很多计算机都有USB口,我们也可以在计算机上外接一个USB转RS-485转换器。
连接通讯电缆
S7-200的通讯端口是一个9孔(famel)D型插头,针脚分布如下所示:
地线 (RS-485 逻辑地)
24 V 地线 (RS-485 逻辑地)
信号B (RxD/TxD+)
RTS (TTL level)
地线 (RS-485 逻辑地)
信号A (RxD/TxD-)
S7-200通讯端口(端口0)与RS-485板卡或RS-485/RS-232转换器之间接线,如下图所示:
S7-200编程及设置
在缺省情况下S7-200的通讯端口是不支持Modbus协议的,要想实现Modbus通讯必需在PLC的主程序模块中调用Modbus通讯子程序。Modbus通讯子程序可以从“STEP
7-Micro/WIN Add-On: Instruction Library (STEP
7-Micro/WIN附件:指令库)”中获得。在安装了“STEP
7-Micro/WIN附件:指令库”后,在导航树“指令/库”下面我们可以找到“Modbus
Protocol”。在其下面包含了MBUS_INIT和MBUS_SLAVE两个子程序,MBUS_INIT用于对Modbus通讯进行初始化,MBUS_SLAVE用于在指定端口上提供Modbus从站通讯服务。下在介绍如何在主程序中调相关子程序及环境参数设置:
调用Modbus通讯初始化命令
首先为MBUS_INIT命令建立一个触发条件(只触发一次),如:SM0.1;从导航树“指令/库/ Modbus
Protocol”下面,将MBUS_INIT指令拖拽到主程序块中。再就是正确设置MBUS_INIT各项调用参数和执行结果输出地址,我们可以建立一下如下图所示初始化调用过程:
Mode:协议类型,1-Modbus协议;0-PPI协议。
Addr: PLC地址,1~247,。
通讯波特率,、、1、5。
Parity: 校验方式,0-无校验;1-奇数校验;2-偶数校验。
Delay:信息结束超时时间,0~32767,有线连接设置为0即可。
MaxIQ:0~128,映射在离散输入寄存器或离散输出寄存器中的I或Q数。建议为:128。
MaxAI:0~32;映射在模拟输入寄存器中AIW数;CPU
221为0,CPU 222为16,CPU 224、226和226XM为32。
MaxHold:V内存映射在保持寄存器中的寄存器数。
HoldStart:V内存的映射时的起始地址。
Done:初始化指完成时,输出为开状态;开关量(Bit)。
Error:初始化错误代码,请参阅Modbus从机协议执行错误代码;输出为字节。
调用Modbus从机通讯命令
初始化完成后,就可以调用Modbus从机通讯命令(MBUS_SLAVE)了。通常Modbus从机通讯命令在主程序块的每个执行周期都要初执行(始终保持通讯状态),因为可以用一个常开量作为命令的触发条件,如:SM0.0。从导航树“指令/库/
Modbus Protocol”下面,将MBUS_SLAVE指令拖拽到主程序块中。调用过程如下图所示:
当MBUS_SLAVE指令响应对Modbus请求时,"Done"为开状态。没通讯请求时"Done"为关状态。
Error:指令执行结果。只有"Done"为开状态时,此状态有效。请参阅Modbus从机协议执行错误代码;输出为字节。
库存储区分配
在完成前面两个指令调用后,还要为库指令使用的符号分配内存。当库指令被插入到主程序块中,在导航树“程序块”下会出现一个“库”节点。在“库”节点上点击鼠标右键,在弹出菜单中选择“库存储区”,进入“库存储区分配”对话框。
在地址框中输入分配内存的开始地址,或者通过点击“建议地址”按钮自动分配内存。注意,分配的内存不要与已使用的内存重叠。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 modbus rtu 的文章

 

随机推荐