问一个关于s7-200 MODBUS程序的问题,望高手解答!

我按照网上的例子进行了modbus通信,虽然通信成功了,但是出现了以下几个问题。
1.当进行读取单一仪表通信的时候,如何保持循环通信(不要用计时器啊,SM0.5之类的计时办法……我希望的是一直保持通信)。
2.我按照官网的例子编了一个顺序读取三个仪表的程序,但是因为我这里只有一个仪表,所以通信就只能进行一次(即读取一次以后就不再读了,想再读取就只能关了再开),我想问一下都这样吗?是不是仪表中只要有一个不通就不能循环了?
3.最后一个问题,我觉得程序有问题啊,在进行配置主站的时候,一般都会设置超时时间为1秒,每一次读取以后都会进行复位,然后读取下一个。但是官网的例子是这样的(如图)我很好奇,通信结束后复位,哪原本的被置1的寄存器(例如例子中的M2.1)还为1吗?如果不为1了,也就是下一个通信的使能不能为1,进行不下去了,那么1s的超时限制还有用?就不能进行循环读取了?
一下子问了不少,知道会很麻烦,但是我是新手嘛,希望高手们见谅,为表诚心50分相送。
对了不要再给我网上的例子了,我看了够多了,最好能给我讲一下,谢谢了!!

图片说明:

问一个关于s7-200 MODBUS程序的问题,望高手解答!   

最佳答案

我按照网上的例子进行了modbus通信,虽然通信成功了,但是出现了以下几个问题。
1.当进行读取单一仪表通信的时候,如何保持循环通信(不要用计时器啊,SM0.5之类的计时办法……我希望的是一直保持通信)。
2.我按照官网的例子编了一个顺序读取三个仪表的程序,但是因为我这里只有一个仪表,所以通信就只能进行一次(即读取一次以后就不再读了,想再读取就只能关了再开),我想问一下都这样吗?是不是仪表中只要有一个不通就不能循环了?
3.最后一个问题,我觉得程序有问题啊,在进行配置主站的时候,一般都会设置超时时间为1秒,每一次读取以后都会进行复位,然后读取下一个。但是官网的例子是这样的(如图)我很好奇,通信结束后复位,哪原本的被置1的寄存器(例如例子中的M2.1)还为1吗?如果不为1了,也就是下一个通信的使能不能为1,进行不下去了,那么1s的超时限制还有用?就不能进行循环读取了?
一下子问了不少,知道会很麻烦,但是我是新手嘛,希望高手们见谅,为表诚心50分相送。
对了不要再给我网上的例子了,我看了够多了,最好能给我讲一下,谢谢了!! 


你好:
1:按照西门子官网的那个轮训程序直接编写就可以了,靠完成位进行触发,即可进行循环。参照下属文档中的例子程序,直接搜索modbus这个关键字就可以找到例子的
。micro power 0.95 
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0136

2:如果只有一块仪表其实也很简单,讲一个数据读取三次就可以解决,同时也是按照完成位触发下一个msg指令来完成的,思路一样

提问者对于答案的评价:
虽然问题还是没有解决但是你提出的,第二个循环方法,确实可用,谢谢

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc250709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月3日
下一篇 2018年12月3日

相关推荐