conditional-statements - 在 ST 的一个条件中定义多个变量
问题描述
我目前正在 CODESYS 中编程/模拟一个小工厂。我有几个需要测试多次的输出(对应于引擎),所以我想创建一个包含这个测试的条件,所以我不需要编写整个条件。例如,我有条件验证是否
A=TRUE AND B=TRUE AND C=TRUE AND D=TRUE
我可以创建一个像“验证引擎”这样的条件来每次使用吗?
谢谢
解决方案
有很多方法可以做到这一点(如果我理解正确的话)。
例如,这里有两种方法:
1.创建一个具有条件结果的变量并使用该变量。您必须在开始时分配变量,然后您可以使用该变量而不是那个长代码。
VAR
EnginesOK : BOOL;
END_VAR
//Check engines
EnginesOK := (A = TRUE AND B = TRUE AND C = TRUE AND D = TRUE);
//.. Later ..
IF EnginesOK THEN
//Do something
END_IF
2.创建一个函数,例如F_VerifyEngines
包含检查并将状态返回为BOOL
。注意:在此示例中,A、B、C 和 D 需要是全局变量。您也可以将它们作为函数的参数传递。
FUNCTION F_VerifyEngines : BOOL
VAR_INPUT
//Add A,B,C,D here if needed
END_VAR
VAR
END_VAR
//Return the result
F_VerifyEngines := (A = TRUE AND B = TRUE AND C = TRUE AND D = TRUE);
然后您可以在代码中使用该函数:
IF F_VerifyEngines() THEN
//Do something
END_IF
第二种方式可能是您正在考虑的方式。
顺便说一句,没有必要写A = TRUE AND B = TRUE AND C = TRUE AND D = TRUE
,在我看来,当你使用时阅读会更清楚A AND B AND C AND D
。
推荐阅读
- java - JAVA - 将通用枚举作为构造函数的方法参数传递
- r - 使用负二项式模型时,如何在 R 中绘制交互作用?
- python - Django中文件的部分匹配搜索
- angularjs - Angular,页面刷新时数据丢失
- azure - 使用单个 Azure 应用服务托管多个应用程序/微服务有哪些限制/缺点?
- javascript - 如何在反应图表 2 圆环图中显示小值?
- sql - Oracle:如何通过将子查询删除到条件或加入同一张表来提高查询?
- c# - Xmlelement条件使用c#获取另一个元素的值
- hibernate - hibernate 5 如何与 My Sql Views 一起工作?
- ansible - ansible剧本的问题