SCL语言的运算符、语法、运算(一定要看完)
bigegpt 2024-12-26 11:49 10 浏览
一、SCL的运算符
SCL具有完整的运算符,它包含算术、比较、逻辑等。每个运算符都有相应的优先级。优先级是指在一个表达式中可能包含多个由不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算符时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。关注<智控教育官网>
运算符及函数一览表
二、SCL的程序注释
适当的注释可以增加代码的可读性,便于后续的功能维护或升级。SCL中的程序注释有两种,分别为符号"//"和"(*…*)",前一种用于行注释,也就是后面只可以有一行注释。后面一种用于段注释,"(* " 是一段注释的起始符,最后用"*)" 结尾。
"//"使用方法:
"(*…*)"使用方法:
三、程序控制指令介绍
程序是语法和数据的有机结合,这里介绍的流程控制即属于基本的语法。SCL是高级编程语言,工程师根据工艺需求将各种控制语句进行有机组合并对输入数据(包括各种现场信号、操作员命令等)的处理最终得出相应的控制命令至现场设备或相关的数据在HMI上显示构成了控制程序。(控制程序=数据+语句)
SCL编辑器支持流程控制语句的快速输入,我们只需将光标移动到编辑器中目标位置,然后双击收藏夹中的语句图标即可在编辑器中插入语句模板,我们只需要在模板的基础上编写修改即可,参见下图;
1.条件语句
所谓的条件语句就是根据已知条件判断该执行哪段语句,使程序有选择的执行。条件语句就是判断条件,它可以是一个变量,也可以是一段语句的运算结果。
如果判断条件是变量,那么它必须为BOOL型;如果判断条件是语句,那么它的运算结果也必须是BOOL型。
IF语句示例:
//条件变量必须是B00L型
IF Start THEN
Q:=TRUE;//如果Start为TRUE则执行该语句
END_IF;
在上面的语句中,判断条件就是变量Start的值。如果这个值是TRUE,那么变量Q被置为TRUE;如果这个值为FALSE则跳过该语句,Q将保持原来的值而不做任何改变。
IF语句示例:
//条件语句的结果必须是BOOL型
IF (M-Number)<>0 THEN
Q:=TRUE;//如果(M-Number)<>0的结果为TRUE则执行此语句
END_IF;
在上面的语句中,判断条件是语句(M-Number)<>0的运算结果。如果这个值为TRUE,那么变量Q被置为TRUE;如果这个值为FALSE则跳过该语句,Q将保持原来的值而不做任何改变。
IF…ELSE语句示例:
//条件语句的结果必须是BOOL型
IF (M-Number)<>0 THEN
Data:=100;//如果(M-Number)<>0的结果为TRUE则执行此语句
ELSE
Data:=200;//如果(M-Number)<>0的结果为FALSE则执行此语句
END_IF;
在上面的语句中,判断条件是语句(M-Number)<>0的运算结果是TRUE,那么将变量Data赋值为100;反之赋值为200;
2. 选择语句
一个变量或语句可能存在若干个值,如果需要根据不同的值选择执行不同的语句的话,那么就需要选择语句了。选择语句是使用关键字CASE在语句或变量(变量和语句结果只可以是整型)可能存在的若干个结果中选择执行相应的程序。它和IF语句相似,但IF语句对于多个可能性分支的选择编写较繁琐,而CASE可以很好的解决这个问题,它支持在多个可能存在的结果中选择。一般若小于3个条件分支建议使用IF语句,而若多于3个的条件分支则建议使用CASE语句。
CASE…OF语句示例:
CASE #Select Input OF //Select Input只可以是整型
1:
#NextLable:=‘a’;
2:
#NextLable:=‘b’;
3:
#NextLable:=‘c’;
ELSE
#NextLable:=‘d’;
END_CASE;
在上面的语句中,程序首先读取Select Input的值,然后根据这个值选择执行相应的语句。若这个值为1,则执行NextLable:='a',若这个值为2,则执行NextLable:='b',若这个值为3,则执行NextLable:='c',若此值不符合所有的选择条件则执行ELSE后面的语句NextLable:='d'。
四、SCL的案例程序
1.一键启停
在下面的语句中,当#IN等于1时,导通CU加计数计1,当#CV当前计数值等于1时,执行THEN后面的语句,将1赋值给OUT;当#IN再次等于1时,导通CU加计数计2,当#CV=当前计数值等于2时,加计数Q点输出复位加计数,并且执行ELSE后面的语句,将0赋值给OUT;依次循环逻辑。
#IEC_Counter_0_Instance(CU:=#IN,
R:=#Q,
PV:=2,
Q=>#Q,
CV=>#CV);//加计数计到2时自己复位自己;
IF #CV=1 THEN
#OUT := 1;//当加计数当前值等于1时将1赋值给OUT;
ELSE
#OUT := 0;//当当前值不等于1时将0赋值给OUT;
END_IF;
2.星三角控制:
在下面的语句中,当#Start等于1时,导通CU加计数计1,当#CV当前计数值等于1时,执行CASE1:后面的语句,将1赋值给#KM和#KMY,当#KMY等于1时导通TON定时器;当#Time_Q等于1时,导通CU加计数计2,当#CV当前计数值等于2时,执行CASE2:后面的语句,将1赋值给KM和KM△,将0赋值给KMY,按下停止按钮#stop,复位加计数#CV值,并且执行ELSE后面的语句,将0赋值给KM、KMY、KM△;
#IEC_Counter_0_Instance(
CU:=#Start OR #Time_Q,
R:=#Stop,
PV:=2,
CV=>#CV);
CASE #CV OF
1: // 当CV计数值等于1时启动星型;
#KM := 1;
#KMY := 1;
#IEC_Timer_0_Instance(IN:=#KMY,
PT:=#Time,
Q=>#Time_Q);
2: // 当CV计数值等于2时启动三角型
#KM:=1;
#KM△ := 1;
#KMY := 0;
ELSE // 当CV计数值不等于1或者2时复位输出
#KM := 0;
#KM△ :=0;
#KMY := 0;;
END_CASE;
3.指示灯功能块:
工业生产中,为显示设备的不同状态,通常采用信号灯的显示方式来区分。这里我们编写一个具有常量、慢速闪烁和快速闪烁功能的信号灯功能块(封装成一个FB),该功能块可以重复调用。
#Q := (#SF AND (NOT #FF) AND "Clock_1.25Hz")
OR
(#FF AND (NOT #SF) AND "Clock_2.5Hz")
OR
#NL;
该FB的各参数功能如下,当NL为TRUE时,灯常亮(Q=1),当SF为TRUE时,灯慢速闪烁(Q在0和1之间慢速间歇变化)当FF为TRUE时灯快速闪烁(Q在0和1之间快速间歇变化)。
下一篇小编会介绍SCL的转换指令和移动指令,关注(智控教育官网)哦!!!!
相关推荐
- 了解Linux目录,那你就了解了一半的Linux系统
-
大到公司或者社群再小到个人要利用Linux来开发产品的人实在是多如牛毛,每个人都用自己的标准来配置文件或者设置目录,那么未来的Linux则就是一团乱麻,也对管理造成许多麻烦。后来,就有所谓的FHS(F...
- Linux命令,这些操作要注意!(linux命令?)
-
刚玩Linux的人总觉得自己在演黑客电影,直到手滑输错命令把公司服务器删库,这才发现命令行根本不是随便乱用的,而是“生死簿”。今天直接上干货,告诉你哪些命令用好了封神!喜欢的一键三连,谢谢观众老爷!!...
- Linux 命令速查手册:这 30 个高频指令,拯救 90% 的运维小白!
-
在Linux系统的世界里,命令行是强大的武器。对于运维小白而言,掌握一些高频使用的Linux命令,能极大提升工作效率,轻松应对各种系统管理任务。今天,就为大家奉上精心整理的30个Linu...
- linux必学的60个命令(linux必学的20个命令)
-
以下是Linux必学的20个基础命令:1.cd:切换目录2.ls:列出文件和目录3.mkdir:创建目录4.rm:删除文件或目录5.cp:复制文件或目录6.mv:移动/重命名文件或目录7....
- 提高工作效率的--Linux常用命令,能够决解95%以上的问题
-
点击上方关注,第一时间接受干货转发,点赞,收藏,不如一次关注评论区第一条注意查看回复:Linux命令获取linux常用命令大全pdf+Linux命令行大全pdf为什么要学习Linux命令?1、因为Li...
- 15 个实用 Linux 命令(linux命令用法及举例)
-
Linux命令行是系统管理员、开发者和技术爱好者的强大工具。掌握实用命令不仅能提高效率,还能解锁Linux系统的无限潜力,本文将深入介绍15个实用Linux命令。ls-列出目录内容l...
- Linux 常用命令集合(linux常用命令全集)
-
系统信息arch显示机器的处理器架构(1)uname-m显示机器的处理器架构(2)uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部件-(SMBIOS/DM...
- Linux的常用命令就是记不住,怎么办?
-
1.帮助命令1.1help命令#语法格式:命令--help#作用:查看某个命令的帮助信息#示例:#ls--help查看ls命令的帮助信息#netst...
- Linux常用文件操作命令(linux常用文件操作命令有哪些)
-
ls命令在Linux维护工作中,经常使用ls这个命令,这是最基本的命令,来写几条常用的ls命令。先来查看一下使用的ls版本#ls--versionls(GNUcoreutils)8.4...
- Linux 常用命令(linux常用命令)
-
日志排查类操作命令查看日志cat/var/log/messages、tail-fxxx.log搜索关键词grep"error"xxx.log多条件过滤`grep-E...
- 简单粗暴收藏版:Linux常用命令大汇总
-
号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部下午好,我的网工朋友在Linux系统中,命令行界面(CLI)是管理员和开发人员最常用的工具之一。通过命令行,用户可...
- 「Linux」linux常用基本命令(linux常用基本命令和用法)
-
Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。总结送免费学习资料(包含视频、技术学习路线图谱、文档等)1、显示日期的指令:d...
- Linux的常用命令就是记不住,怎么办?于是推出了这套教程
-
1.帮助命令1.1help命令#语法格式:命令--help#作用:查看某个命令的帮助信息#示例:#ls--help查看ls命令的帮助信息#netst...
- Linux的30个常用命令汇总,运维大神必掌握技能!
-
以下是Linux系统中最常用的30个命令,精简版覆盖日常操作核心需求,适合快速掌握:一、文件/目录操作1.`ls`-列出目录内容`ls-l`(详细信息)|`ls-a`(显示隐藏文件)...
- Linux/Unix 系统中非常常用的命令
-
Linux/Unix系统中非常常用的命令,它们是进行文件操作、文本处理、权限管理等任务的基础。下面是对这些命令的简要说明:**文件操作类:*****`ls`(list):**列出目录内容,显...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- resize函数 (64)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- mybatis大于等于 (64)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- logstashinput (65)
- hadoop端口 (65)
- vue阻止冒泡 (67)
- oracle时间戳转换日期 (64)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)