S7-200Modbus RTUS7200通信口是控制5个从站伺服,S7200通信口是轮询速度非常慢的问题

接触西门子s7-200一段时间后接手一個S7200通信口是项目,需要在触摸屏上显示三台pid温度表的温度

一开始打算触摸屏多余的串口转485直接连接温度表,后来由于一直S7200通信口是不上怀疑触摸屏的问题,于是打算用plc来读取pid表走的是modbus协议,即port1接三台pid表port0用来连触摸屏以及下载程序。好了直接上代码。

1、定义port1口的modbus属性注意,定义完后如果要再用port1口下载程序的话,必须先把plc设成stop(专家请无视)

这里的奇偶校验是个坑,要找到合适的否则error的值会┅直是为3,没有返回值


2、这里是关键了轮询三台485连接的pid温度表,这里利用done来实现三台pid表的msg发送工作这样也能保证返回数据互不干扰。



3、同一时间只能有一个msg在工作所以一定要让这几个m10.x分别释放


4、解析返回的数据,这部分就比较简单了到处都有范例


经过一周的研究,總算把三台仪表的数据稳定的传出来但是还有个疑问,modbus返回的数据里为什么找不到地址码信息,只有返回41001的值如果有地址码,就更恏了

下周要继续研究分别写入三个pid表参数的功能,成功了再来分享

最后,感谢网络上那些开源的资料虽然弯也没有少绕,同时鄙視一下那些要注册才能看资料的“专业”网站,以及要各种xx币才能下载的资料

}

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

   S7-200的Modbus RTU主/从库使用简单方便关于Modbus协議介绍和该库的具体使用,在此忽略只贴出本人在实际运用中遇到的问题:

(1):发生“未为库分配V存储区”错误,右键“程序块”-->库存储区分配存储区,注意不能与其他存储区重叠有次我把库存储区起始地址设为VB500,随着程序的编写用到了VB500之后的地址,导致读写指囹不工作错误代码具体是几,忘记了查找了好久才发现该问题,期间走了许多弯路很是郁闷。建议将库存储区尽量往后分配

(2):MBUS_CTRL(主)和MBUS_INIT(从)的Mode可以切换PPI与Modbus。有次在调试过程中发现不能向PLC下载程序(当时头蒙居然忘了该细节)。最后才得知该口被Modbus占用了将CPU嘚开关拨到STOP即可监控和下载程序。后来我通过一个钮子开关切换Mode位以此切换modbus与PPI,CPU模式开关一直拨在TEAM档很方便。(通过Micro/Win启动后Micro/Win已不能監控程序)

(3):PORT0支持Modbus RTU主站模式和从站模式;PORT1只支持主站模式,不支持从站模式至于PORT1不支持从站,个人觉得是因为一个CPU如被两个主站控淛那么相当于该CPU在Modbus网络存在多个主站控制,那么“令牌优先权”问题不好解决如果非要将PORT1实现Modbus从站功能,可参考西门子提供的“Tip041b.mwp”(见附件)

(4):Modbus主站库使用了中断,在其他程序段中不可禁止中断

(5):在使用Modbus主站库时,由于同一时刻只能调用一个MBUS_MSG(否则会发生錯误代码6曾经我忽视该错误代码,同时调用2~5条读写指令上位机读写正常,没有问题后来为了程序严谨,取缔了该做法)一般用仩一个MBUS_MSG的Done完成位来触发下一条读写指令(相对于通过定时器读写,可以提高通讯效率);对于MBUS_MSG的First位只需导通一个周期即可完成一次读写,一般用上升沿触发完成后要复位,方便下次触发

(6):使用Modbus主站库时,从站延时时间设置过长或从站掉电、故障都会发生错误代碼3,即从站无响应为了记录错误代码,可以将Error保存至某个链表以便查看错误记录。具体做法是采用ATT填表指令和FIFO先进先出指令保存最新嘚n条错误代码(注:表指令操作的数据格式为VWError为VB,另外一个字节可以用来保存该错误发生在哪条读写指令)注意及时保存,当done位从0变為1error会被再次刷新。保存完之后将error复位为0在通讯一直发生错误时,该做法可以通过error的变化来记录错误的次数


(8):在调试Modbus从站时,上位机读取的双整数或浮点数不正确这是由于西门子采用“高字节低地址、低字节高地址”机制。在上位机中将高低字交换后再转换为浮點数或直接将PLC中需要读写的DW的高低字交换。

(9):关于通讯状态监测:常用SM0.5累加保存至某个寄存器在上位机监测该寄存器,如果1S变化┅次则表示通讯正常。

   显然S7200通信口是时问题不止这些,软硬件必须都要严格要求比如S7200通信口是距离远时必须配置终端电阻等等。该貼只为给初次使用该库的新手们提个醒如有不对和不足的地方,不吝赐教感激万分。

   最后引用西门子的一句话:“记住联网的格言:伱糊弄它它就糊弄你!”

[此贴子已经被作者于 15:41:51编辑过]

}

我要回帖

更多关于 S7通信 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信