确保PLC程序安全,编程时记住这几条就够了

电子说

1.4w人已加入

描述

想让程序跑得稳、数据不被乱搞,就得遵守一些基本的编程规范。下面这六条规则,能帮你有效提升程序的安全性和稳定性,值得记下来。

规则一:验证实际值

程序一开始,就要检查输入的变量值是不是在合理范围内,特别是整数、word 这类数据。如果只允许某些特定值,那就用 CASE OF 搭配 ELSE 来处理那些不该进来的值,别让它们继续往下走。

比如,碰到不合法的输入,可以直接报错或退出,别让程序硬撑着往下跑。

规则二:初始化临时变量

所有临时变量在使用前必须赋值,别偷懒。没赋值的临时变量,很容易让程序出幺蛾子。

赋值的时候要注意类型匹配,比如 real 类型可以初始化为 0.0 或 1.0,int 类型可以初始化为 0。不过也要注意,有些工艺对象的初始值有特殊含义,不是随便设 0 就行。比如运动控制里的速度参数,就得根据实际情况来初始化。

编程

规则三:处理 ENO

ENO 能帮你发现转换错误、除零这些运算问题。如果想让整个块的 ENO 一直为 TRUE,可以在程序末尾直接给它赋值。如果想逐条指令检查,可以在块属性里开启自动置位 ENO 的功能。

举个例子,DINT_TO_INT 转换指令,如果输入超过 32767,虽然看起来执行了,但 ENO 是 false,结果是错的。这时候可以手动把输出设为 0,再在程序末尾加点逻辑,保证整个块的 ENO 状态是对的。

编程

规则四:数据访问要按需打开

HMI、OPC UA、Web API 这些数据访问功能,默认要关掉,只有确实需要的时候才打开。别一开始就让所有变量都能被外界读写,容易被人钻空子。

在博途里,可以取消“新元素默认可从 HMI/OPC UA 访问/写入”的选项。UDT 数据类型也建议关掉。只有那些真正需要被访问的变量,才放到专门的全局变量块里,按需开放访问权限。

规则五:评估错误代码

写程序的时候,像标准功能块一样,设置 error 和状态字这两个接口。自己定义好错误代码,分类清楚。

具体做法是:一开始先把临时变量清零,默认没错误。如果触发了某个故障,就给临时状态赋一个对应的错误值。最后把临时状态字的第 15 位赋值给 error 位(1 表示有错,0 表示正常),状态字就直接用临时状态的值。这样错误处理就标准化了,出了问题也好查。

规则六:用评估逻辑写错误OB

在 OB82、OB86 这些常用的错误组织块里,也要写点判断逻辑,分析故障原因,做针对性处理。可以先定义一些常量,比如硬件标识符、故障返回值,具体值可以参考设备手册。

然后在程序里判断是哪个硬件出了问题,是故障发生还是恢复。根据不同情况写处理逻辑,比如故障发生时触发报警,恢复时执行复位。这样硬件出问题时,程序能更快响应,减少对整个系统的影响。

审核编辑 黄宇

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

全部0条评论

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

×
20
完善资料,
赚取积分