S7 200 Modbus 协议使用详解.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
S7 200 Modbus 协议使用详解 点击数:930 发布时间:2009年11月3日 来源: 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?主站指令库? Modbus?RTU?主站功能编程 1.?调用?Modbus?RTU?主站初始化和控制子程序 使用?SM0.0?调用?MBUS_CTRL?完成主站的初始化,并启动其功能控制: 用?SM0.0?调用?Modbus?RTU?主站初始化与控制子程序 各参数意义如下: a.?EN?使能:?必须保证每一扫描周期都被使能(使用?SM0.0)? b.?Mode?模式:?为?1?时,使能?Modbus?协议功能;为?0?时恢复为系统?PPI?协议? c.?Baud?波特率:?支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200。? d.?Parity?校验:?校验方式选择? ??0=无校验? 1=奇较验? 2=偶较验???? e.?Timeout?超时:?主站等待从站响应的时间,以毫秒为单位,典型的设置值为?1000?毫秒(1?秒),允许设置的范围为?1?-?32767。? ???注意:?这个值必须设置足够大以保证从站有时间响应。? f.?Done?完成位:?初始化完成,此位会自动置1。可以用该位启动?MBUS_MSG?读写操作(见例程)? g.?Error??初始化错误代码(只有在?Done?位为1时有效):? ??0=?无错误? 1=?校验选择非法? 2=?波特率选择非法? 3=?模式选择非法? ? 2.?调用?Modbus?RTU?主站读写子程序MBUS_MSG,发送一个Modbus?请求; 调用Modbus?RTU?主站读写子程序 各参数意义如下: a.?EN?使能:?同一时刻只能有一个读写功能(即?MBUS_MSG)使能? ???注意:建议每一个读写功能(即?MBUS_MSG)都用上一个?MBUS_MSG?指令的?Done?完成位来激活,以保证所有读写指令循环进行(见例程)。?? b.?First?读写请求位:?每一个新的读写请求必须使用脉冲触发?? c.?Slave?从站地址:?可选择的范围???1?-?247? d.?RW?从站地址:?0?=?读,?1?=?写? ???注意:? 1.?开关量输出和保持寄存器支持读和写功能? 2.?开关量输入和模拟量输入只支持读功能? e.?Addr?读写从站的?选择读写的数据类型? ??数据地址:?00001?至?0xxxx?-?开关量输出? ??10001?至?1xxxx?-?开关量输入? 30001?至?3xxxx?-?模拟量输入? 40001?至?4xxxx?-?保持寄存器? f.?Count?数据个数?通讯的数据个数(位或字的个数)? ???注意:?Modbus主站可读/写的最大数据量为120个字(是指每一个?MBUS_MSG?指令)? g.?DataPtr?数据指针:?1.?如果是读指令,读回的数据放到这个数据区中? ??2.?如果是写指令,要写出的数据放到这个数据区中? h.?Done?完成位?读写功能完成位? i.?Error?错误代码:?只有在?Done?位为1时,错误代码才有效? ??0?=?无错误? 1?=?响应校验错误? 2?=?未用? 3?=?接收超时(从站无响应)? 4?=?请求参数错误(slave?address,?Modbus?address,?count,?RW)? 5?=?Modbus/自由口未使能?? 6?=?Modbus正在忙于其它请求? 7?=?响应错误(响应不是请求的操作)? 8?=?响应CRC校验和错误? -? 101?=?从站不支持请求的功能? 102?=?从站不支持数据地址? 103?=?从站不支持此种数据类型? 104?=?从站设备故障? 105?=?从站接受了信息,但是响应被延迟? 106?=?从站忙,拒绝了该信息? 107?=?

文档评论(0)

yurixiang1314 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档