0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FC对输出的错误处理

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 作者:微笑应对 2022-11-09 16:51 次阅读

对于 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的数值。

7c4a9650-6008-11ed-8abf-dac502259ad0.png

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

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

7c73804c-6008-11ed-8abf-dac502259ad0.png

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

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

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

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

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

建议:

用 IN/OUT 变量代替 OUTPUT 变量

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




审核编辑:刘清

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

    关注

    0

    文章

    8

    浏览量

    6232

原文标题:FC 输出处理

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式编程错误处理机制设计

    本文主要总结嵌入式系统C语言编程中,主要的错误处理方式。文中涉及的代码运行环境如下。
    发表于 04-28 09:59 543次阅读
    嵌入式编程<b class='flag-5'>错误处理</b>机制设计

    嵌入式系统C语言编程中主要的错误处理方式

    本文主要总结嵌入式系统C语言编程中,主要的错误处理方式。
    发表于 07-24 16:40 544次阅读
    嵌入式系统C语言编程中主要的<b class='flag-5'>错误处理</b>方式

    Rust语言中错误处理的机制

    在Rust语言中,错误处理是一项非常重要的任务。由于Rust语言采用静态类型检查,在编译时就能发现很多潜在的错误,这使得程序员能够更加自信和高效地开发程序。然而,即使我们在编译时尽可能地考虑了所有
    的头像 发表于 09-19 14:54 778次阅读

    labviEW错误处理的问题

    为什么这个程序在启用自动错误处理和C:\data.txt不存在的情况下,没有显示错误对话框啊?
    发表于 04-01 10:03

    LabVIEW错误处理问题

    我想问一下,就是连接硬件采集波形时,需要滤掉直流波,但是采集到的波形时断断续续的,所以错误处理时会停止程序,我想问一下,运行时怎么忽略掉这个错误
    发表于 09-18 18:29

    急求,无错误的程序弹出简易错误处理框图,该怎么解决?

    我写的vi一直都没问题,今天我运行的时候突然就弹出了以下的“简易错误处理”框图。并且卡在这里不运行下去了,不知道怎么回事,还请各位前辈帮忙解答一下,万分感谢。还想请问一下图上最右边那个“简易错误处理”上头的绿色小箭头突然出现是怎么回事?
    发表于 10-04 16:18

    AF错误处理

    想问一下关于AF的错误处理,例如我进行串口通讯,打开串口错误,但是我不想停止AF,想继续尝试连接要怎么做?
    发表于 02-03 15:44

    LabVIEW中的错误处理

    如何合理使用 LabVIEW 中的自定义错误处理功能;对于可预见的错误,是否可以选择直 接忽略,或者前几次尝试忽略直到该特定错误出现很多次后才通知用户需要纠正该错误 了;是否可以对
    发表于 05-24 11:07 6次下载

    Spring Boot框架错误处理

    》 《strong》翻译《/strong》:雁惊寒《/p》 《/blockquote》《p》《em》摘要:本文通过实例介绍了使用Spring Boot在设计API的时候如何正确地对异常进行处理。以下是译文《/em》《/p》《p》API在提供错误消息的同时进行适当的
    发表于 09-28 15:31 0次下载

    嵌入式系统C语言编程中的错误处理资料总结

    本文主要总结嵌入式系统C语言编程中,主要的错误处理方式。文中涉及的代码运行环境如下:
    发表于 11-28 10:39 1754次阅读

    Rust代码启发之返回值异常错误处理

    这样的代码,错误处理代码和业务逻辑交织在一起,也容易忽略处理错误。以及把返回值只用于错误返回,有点浪费的感觉。因为很多时候把计算结果作为返回值,更符合思考的逻辑。
    的头像 发表于 09-22 09:24 1654次阅读
    Rust代码启发之返回值异常<b class='flag-5'>错误处理</b>

    西门子博途: 有关处理程序执行错误的示例

    本地错误处理可单独编程,也可与其它代码一起编程。为确保可识别程序中的所有错误,建议使用本地错误处理组合方案,如以下示例所示。
    的头像 发表于 07-12 17:43 2126次阅读
    西门子博途: 有关<b class='flag-5'>处理</b>程序执行<b class='flag-5'>错误</b>的示例

    RS232通信时怎么处理错误?RS232通信中的错误处理方法

    RS232通信时怎么处理错误?RS232通信中的错误处理方法  RS232通信是一种电气标准,它定义了计算机和串行通信设备之间的通信协议。尽管RS232通信很稳定,但仍然可能会出现错误
    的头像 发表于 10-17 16:33 1824次阅读

    西门子博图:错误处理机制概览

    可通过以下几种不同的错误处理机制进行参数跟踪或编程或访问错误
    的头像 发表于 11-25 11:35 1009次阅读
    西门子博图:<b class='flag-5'>错误处理</b>机制概览

    C语言中的错误处理机制解析

    C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。
    的头像 发表于 02-26 11:19 222次阅读