mm440电流读取

s7200通过uss协议读取mm440电流值,但需要每15MS读取一次(要求电流值是真实和实时的),在中断里调用读参数指令时done位反应有时为1.有时为0.如何处理?

最佳答案

建议用定时中断功能:
 定时中断
 S7-200有四个定时中断定时器,两个特殊寄存器(SMB34/SMB35)和两个定时器( T32/T96)中断。中断定时计时精确,可以用来执行模拟量定时采样等任务。

 中断服务程序看起来没有执行?

 可以在中断程序中加一个测试程序段,如使用SM0.0(常为“1”)将一个输出点置位(使用Set指令),观察是否进入中断服务程序。

 中断程序不执行,多数原因是初始化(连接中断事件和中断程序)的问题,或者没有“开中断”。

 应该使用SM0.1(或沿触发)执行一次初始化,然后开中断。

 与中断服务程序有关的计算任务,为何会偶尔得出不正确的结果?

 出现这种现象的原因多是在主(子)程序和中断程序之间传递数据的机制不当。

 中断程序可能在任何时刻执行,如果此时主程序(或子程序)正在对中断程序使用的数据进行操作,其中间结果可能带入中断程序,造成计算结果的变化;同样地,在中断程序中产生数据也对主(子)程序中的计算有类似影响。

 解决办法是保证可能产生中间结果的数据不直接参与计算:

 使用STL指令计算单个中断程序使用的数据 
 在梯形图(LAD)编程时,用MOV(传送)指令准备最后的数据(单个数据) 
 准备成批的数据时,先禁止中断,完成后再允许中断 
 简单的数据准备或者结果计算可直接放在中断程序中进行

提问者对于答案的评价:
谢谢

专家置评

需要参考“鼠老爹”的回答。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午12:41
下一篇 2021年7月5日 上午12:41

相关推荐

发表回复

登录后才能评论