首页 > 其他分享 >PLC结构化文本(ST)——AND_THEN & OR_ELSE

PLC结构化文本(ST)——AND_THEN & OR_ELSE

时间:2024-09-11 13:46:08浏览次数:10  
标签:END Auto ELSE ST 运算符 PLC Run ptrMachine

PLC Structured Text Object Oriented Programming

PLC结构化文本(ST)——AND_THEN & OR_ELSE

特殊机制

运算符AND_THENOR_ELSE与我们常用的ANDOR功能相同却有点区别。

IF FALSE AND calculate() THEN
    Auto.Run();
END_IF

假如IF前一个条件一直为FALSE那么后一个条件calculate()仍然会继续执行,得出结果。当然Auto.Run()不会继续执行。

IF TRUE OR calculate() THEN
    Auto.Run();
END_IF

假如IF前一个条件一直为TRUE那么后一个条件calculate()仍然会继续执行,返回BOOL值得出结果。

上述这两种情况,对于IF条件语句使用运算符AND来说,只要有一个条件是FALSE整条判断语句结果就为FALSE,同样对于使用运算符OR来说,只要有一个条件为TRUE整条判断语句结果就为TRUE。后一个条件就没必要继续运行判断直接执行下一个语句即可。

把上面程序中的运算符ANDOR替换成AND_THENOR_ELSE

IF FALSE AND_THEN calculate() THEN
    Auto.Run();
END_IF

由于IF条件语句第一个条件是FALSE所以使用AND_THEN运算符后calculate()方法/函数/程序并不会进入执行,也就是说当检测到第一个条件为FALSE时条件判断提前返回结果FALSE

IF TRUE OR_ELSE calculate() THEN
    Auto.Run();
END_IF

同理,条件语句使用的是OR_ELSE运算符,结果提前返回TRUE,并且calculate()不参与执行。

如何使用

既然我们已经了解运算符AND_THEN & OR_ELSE的特殊机制。是否可以用来简化代码?提高计算机运行效率?

  • 简化代码
IF bCondition1 THEN // 条件1
    IF bCondition2 THEN // 条件2
        IF bCondition3 THEN // 条件3
            Auto.Run();
        END_IF
    END_IF
END_IF
  • 使用AND
IF bCondition1 AND bCondition2 AND bCondition3 THEN
    Auto.Run();
END_IF
  • 使用AND_THEN
IF bCondition1 AND_THEN bCondition2 AND_THEN bCondition3 THEN
    Auto.Run();
END_IF

多个IF条件嵌套使用,代码结构复杂,使用AND_THEN简化之后在同一行形成一个IF条件,代码清晰简洁。

IF ptrMachine <> 0 THEN // ptrMachine 是一个指针
    IF NOT ptrMachine^.IsAutoRun() THEN
        Auto.Run();
    END_IF
END_IF
  • 不能使用AND运算符简化
// 这是一个错误示例
IF ptrMachine <> 0 AND NOT ptrMachine^.IsAutoRun() THEN
    Auto.Run();
END_IF

无论这个表达式ptrMachine <> 0结果是什么,后面的表达式ptrMachine^.IsAutoRun()都会被执行,如果指针是空引用则会导致指针空引用异常

IF ptrMachine <> 0 AND_THEN NOT ptrMachine^.IsAutoRun() THEN
    Auto.Run();
END_IF

如果指针(ptrMachine)为空(null),IF的第一个条件ptrMachine <> 0不成立返回FALSE判断直接退出不执行ptrMachine^.IsAutoRun()表达式。如果指针不为空,两个判断条件均执行,并且不会出现空指针异常。

总结

合理使用ORANDOR_ELSEAND_THEN运算符,而且OROR_ELSE不是可以随意替换使用的,同理ANDAND_THEN也是如此。一切要以自身程序需求来判断使用合适的运算符。

标签:END,Auto,ELSE,ST,运算符,PLC,Run,ptrMachine
From: https://www.cnblogs.com/JSheng/p/18408109

相关文章

  • Systemd单元文件类型汇总
    以下是systemd支持的所有单元文件类型的汇总,包括它们的用途和功能:1..service用途:定义和管理系统服务。功能:配置服务的启动、停止、重启行为及其他参数。示例:[Unit]Description=MyService[Service]ExecStart=/usr/bin/myservice[Install]WantedBy=multi-user......
  • Study Plan For Algorithms - Part28
    1.跳跃游戏题目链接:https://leetcode.cn/problems/jump-game/给定一个非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。classSolution:defca......
  • Study Plan For Algorithms - Part29
    1.在排序数组中查找数字统计一个数字在排序数组中出现的次数。方法一:defsearch(nums,target):returnhelper(nums,target)-helper(nums,target-1)defhelper(nums,target):i=0j=len(nums)-1whilei<=j:m=(i+j)//......
  • Arcane Blast,官方中文,解压即玩,
    游戏截图 艾德里安曾经是一名强大的巫师,现在他发现自己被学生背叛,被困在暗影维利的世界里。现在,您必须引导艾德里安重新发现自己的力量,战胜成群结队的无情敌人,揭开秘密,掌握各种元素,努力返回家园。游戏玩法以20-40分钟的运行为基础,可以无休止地循环。每次运行都会带来......
  • CMP5321 Understanding Automation Concepts
    CourseworkAssignmentBriefAssessment-Undergraduate AcademicYear2024-25 ModuleTitle:ProgrammingforNetworkEngineersModuleCode:CMP5321AssessmentTitle:UnderstandingAutomationConceptsAssessmentIdentifier:Weighting:      100%......
  • “Resource Forest” 模型通过将用户帐户和资源分开到不同的AD森林中,增强了安全性、管
    在ActiveDirectory(AD)域环境中,“ResourceForest”模型是一种架构设计用于优化和管理大型、复杂的网络环境。这种模型主要用于处理企业中不同的组织单位和资源的需求,确保安全性、灵活性和管理的简便性。ResourceForestModel的定义和特点定义:ResourceForest 模型是在AD......
  • Restricted Access Forest 是一种特定的 Active Directory (AD) 架构,用于增强安全性和
    RestrictedAccessForest是一种特定的ActiveDirectory(AD)架构,用于增强安全性和控制对敏感资源的访问。这种模型将一个或多个森林用作专门的、受限的环境来管理特定的资源或服务。什么是RestrictedAccessForest定义:RestrictedAccessForest是一个AD林,用于存储和管......
  • fastapi HTTP异常处理
    HTTPException是FastAPI中用于处理HTTP错误的异常类。HTTPException 是一个非常有用的异常类,用于当HTTP请求处理过程中遇到错误时,能够优雅地返回HTTP错误响应给客户端。通过抛出 HTTPException,你可以控制返回给客户端的HTTP状态码和响应体,使得客户端能够根据这些信息作出相应的......
  • [STAThread]特性
    [STAThread]特性用于需要与COM组件交互的应用程序,尤其是依赖单线程模型(如WindowsForms应用程序)的组件。在STA模式下,线程拥有自己的消息循环,这对于处理用户界面和某些COM组件是必要的。[STAThread]staticvoidMain(string[]args){//应用程序的入口代码}定......
  • 基于单片机设计的水平仪(STC589C52+MPU6050)
    一、前言【1】项目背景水平仪是一种常见的测量工具,用于检测物体或设备的水平姿态。在许多应用中,如建筑、制造和航空等领域,保持设备的水平姿态是非常重要的。为了实现实时的水平检测和显示,基于单片机设计的水平仪是一个常见的解决方案。数字水平仪是一种用于测量物体相对于水平面的......