登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
资源区
›
代码
›
PLC结构化文本(ST)——AND_THEN & OR_ELSE ...
PLC结构化文本(ST)——AND_THEN & OR_ELSE
[ 复制链接 ]
箝德孜
2025-6-5 15:40:55
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
PLC Structured Text Object Oriented Programming
PLC结构化文本(ST)——AND_THEN & OR_ELSE
特殊机制
运算符AND_THEN和OR_ELSE与我们常用的AND和OR功能相同却有点区别。
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。后一个条件就没必要继续运行判断直接执行下一个语句即可。
把上面程序中的运算符AND和OR替换成AND_THEN和OR_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()表达式。如果指针不为空,两个判断条件均执行,并且不会出现空指针异常。
总结
合理使用OR、AND、OR_ELSE、AND_THEN运算符,而且OR和OR_ELSE并
不是
可以随意替换使用的,同理AND和AND_THEN也是如此。一切要以自身程序需求来判断使用合适的运算符。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
PLC
结构化
文本
ST
AND
相关帖子
从零实现富文本编辑器#8-浏览器输入模式的非受控DOM行为
搞定三大PLC通讯:倍福与西门子、欧姆龙与西门子数据互通实战
26Java基础之特殊文本文件、日志技术
CRT弹窗接收用户文本输入
CF 2070F Friends and Pizza
[数据库/数据结构] LSM-Tree :结构化的日志合并树——NewSQL数据库的基石
结构化机器学习项目 第一周:机器学习策略(一)正交化调优和评估指标
结构化机器学习项目 第二周:误差分析与学习方法(三)
吴恩达深度学习课程三: 结构化机器学习项目 第一周
langchain4j 学习系列(7)-文本分类
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
从零实现富文本编辑器#8-浏览器输入模式的非受控DOM行为
2
306
挚魉
2025-10-20
安全
搞定三大PLC通讯:倍福与西门子、欧姆龙与西门子数据互通实战
2
167
曲愍糙
2025-10-24
业界
26Java基础之特殊文本文件、日志技术
4
860
准挝
2025-10-30
业界
CRT弹窗接收用户文本输入
4
489
林鱼
2025-11-07
安全
CF 2070F Friends and Pizza
1
929
锷稠
2025-11-11
业界
[数据库/数据结构] LSM-Tree :结构化的日志合并树——NewSQL数据库的基石
4
385
嗣伐
2025-11-19
业界
结构化机器学习项目 第一周:机器学习策略(一)正交化调优和评估指标
2
753
裸历
2025-11-29
业界
结构化机器学习项目 第二周:误差分析与学习方法(三)
1
236
古修蟑
2025-12-02
科技
吴恩达深度学习课程三: 结构化机器学习项目 第一周
1
719
亢安芙
2025-12-02
安全
langchain4j 学习系列(7)-文本分类
0
737
胥望雅
2025-12-09
回复
(1)
羔迪
2025-11-2 09:01:02
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
前排留名,哈哈哈
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
业界
签约作者
程序园优秀签约作者
发帖
箝德孜
2025-11-2 09:01:02
关注
0
粉丝关注
20
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
kk14977
6845357
3934307807
991123
4
xiangqian
638210
5
韶又彤
9998
6
宋子
9983
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
678
[dx12显示图片] ImGui Learn Data Day 3
611
一张图看懂AI Agent的6种模式—MAS
930
.NET 10 网络堆栈深度架构解析:HTTP/3、性
924
【有手就行】LoRA:用你自己的数据来微调大
908
sqlilab —— 32关卡
423
.NET周刊【11月第3期 2025-11-16】
913
软件逆向加密视频专用播放器是如何检测到用
361
爬虫专栏:破解网站检测selenium反爬——“
835
开源项目分享:Gitee热榜项目 2025年12月第
50
意识的自反性:知者与作者之惑
682
docker学习笔记
764
docker学习笔记
684
咱们聊聊Spring循环依赖那点事儿:从“死锁
157
Python学习3
832
NCHU-数字电路模拟程序-23207332
237
LaTeX学习笔记:学术文档排版
220
昆明黄金店推荐:如何甄选“价值平权”的黄
938
微信支付集成_JSAPI
882
【AI编程】5分钟用AI复刻有BOSS战的《坦克
627
紧跟材料趋势,深耕专业工艺:上海芮生建设