FC对输出的错误处理

描述

对于 FC的使用,另一个的常见的错误是对输出的错误处理:导致这个错误的原因还是对FC认识的不清楚。

再次强调:相比较于 FB,FC是一个没有存储空间的逻辑块。

如果没有数据被写至 FC 的 OUT参数,FC将会输出一个随机值!对于 FB, 因为其可以使用背景数据块来存储 OUT参数的数值,即使某次调用没有对 OUT参数进行写操作,OUT参数依然可以输出上一次的旧值。

下面的程序将说明这一点:程序原本目的:

在 OB1中调两次 FC22,将 MW0,MW2作为输入参数,DB1.DBX0.0,DB1.DBX0.1分别作为输出参数赋给 FC22

FC22检测当输入大于 10时,置位输出为 1FC22检测当输入小于-10时,复位输出为 0 FC22的输出的动作死区为-10至 10

此程序乍看是没有错误的,但是,如果 OB1中调用了两次 FC22,而且 MW2位于死区(-10 至10)之间时,MW0的数值改变将不仅仅改变 DB1.DBX0.0的状态,同时会影响输出 DB1.DBX0.1的数值。

MFC编程

故障分析:在上面的例子,OB1中调用了两次 FC22,而且 MW2位于死区(-10至 10)之间时,其输出在FC22没有被赋值,DB1.DBX0.1正常情况下不应当改变数值。

本例中,MW0的数值改变将不仅仅改变DB1.DBX0.0的状态,同时会影响输出 DB1.DBX0.1的数值。如下图。

MFC编程

对于 FC的输出变量,必须要在每次执行 FC时赋给一个确定的值,否则输出有可能会输出一个随机值。下列用法都是错误的:

将输出变量用于上升/下降沿指令

将输出变量用于自保持逻辑

输出变量未在所在程序段中赋值

警告:不要因为在 FC编程中遇到没有对输出赋值,而程序执行正确,就忽略了对 FC输出编程的注意事项,否则将承担这个错误有可能带来的风险。

建议:

用 IN/OUT 变量代替 OUTPUT 变量

不论何时调用块,FC中的OUT参数都必须被赋值。



 


审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分