恭喜,你发布的帖子
发布于 2021-11-10 21:46:13
14楼
个人觉得有这几个建议比较好:
1、AL002建议:定义从0到常数值的数组边界
数组边界从0开始,以一个符号常量作为数组的上边界结束。
? 对于块内部的数组,必须在块接口的本地数据中定义常量
? 对于全局数据块和PLC数据类型中的数组,用作上限的常数必须在PLC变量表中定义
? 常量以及用于访问数组元素的索引的数据类型,从性能方面的原因应使用DINT
示例:
BUFFER_UPPER_LIMIT DINT 10
diagnostics Array[0.. BUFFER_UPPER_LIMIT] of typeDiagnostics
说明: 数组索引以0开头有几个好处:(1)某些系统指令和数学运算是基于零开始工作的,例如模函数,通过这种方式,索引可以直接用于此类函数而无需进行任何调整。(2)WinCC(Comfort,Advanced,Professional and Unified)可以处理脚本中基于零的数组。
在数组边界不能以零为基础的情况下,则应将符号常量用于上限和下限。
2、DA008规则:输出参数只写一次
每个执行周期只写入一次输出变量和返回值。 这应在可能的情况下,在函数块的末端集中进行。
不允许读取自己的输出参数或返回值,必须使用临时或静态变量。
说明: 这样可以确保所有输出值的一致性。
DA008规则 这个规则不错.....如果用SCL写,可能一个变量,重复好多次,..达到条件给变量赋值1,或者0...如果像叙述事情的方式来,后期看程序相当麻烦,像是贴膏药.... 如果汇总到一个地方则清晰许多. 但是我又想到另一个疑惑,,,,返回值每个周期只一次..如果我变量是反馈错误的如何处理,假如电机过流(反馈16#7),以及联锁信号同时到来(16#8)..是先显示那一个呢?这个程序该如何解决呢?那位大神提供下思路.
请填写推广理由:
分享
只看
楼主