博图SCL语言常用指令的学习和使用以及相关例题。
目录
文章目录
前言
一、逻辑运算符的使用
1.点动
2.自锁(起保停)
3.正反转
4.小结
二、常用程序控制指令
1. if...then(条件执行)
2. if...then...else(条件分支)
3. if...then...elseif...else(条件多分支)
4. case...of(多分支选择)
5. for...to...do (在计数循环中执行)
6. for...to...by..do(在按步宽计数循环中执行)
7. while...do (满足条件时运行)
8. exit (立即退出循环)
9. (* *) (插入一个注释段)
10.goto...(跳转指令)
11.小结
三、TON(定时器)和CTU(加计数)
1.TON
2.CTU
四、例题
1.使用if语句实现正反转。
2.使用计数器和case语句等 完成跑马灯(要求:按下启动按钮,依次点亮6个灯,间隔1s,6个灯全亮后再依次熄灭,然后1,3,5灯亮1s后灭,2,4,6灯亮,1s后灭,交替闪烁5次结束,按下停止按钮,灯全部熄灭)
这里接着上一篇的内容继续向下写,上一篇简单介绍了SCL的优点、作用、表达式和运算符以及逻辑运算符;本篇继续学习:1.使用逻辑运算符来实现点动,自锁和正反转。2.了解常用的指令并使用。3.练习题。
(注:关于指令的使用和相关例题的试验可以使用博图软件的仿真,或连接实际PLC;这里主要使用仿真和factoryio进行连接试验)
在上一篇我们学习了逻辑运算符:取反(NOT)、或(OR)、与(AND/&)、异或(XOR),这里我们学习如何使用它们!
按下为1,松开为0;梯形图是这样:由常开接一个线圈,就可以。
那么使用scl编写的时候,将常开赋值给线圈就可以:
效果在虚拟工厂里面可以看一下:
使用逻辑运算符来完成起保停(启动,保持和停止),梯形图如图:
根据梯形图再来转换成scl来写:启动OR电动机 这里相当于启动按钮和电动机辅助常开;&一个NOT停止 相当于串联上一个常闭。
运行效果:
正反转和起保停很相似,使用与、或、取反就好:
效果:这里用绿灯和红灯来表示正转和反转。
这里我们使用取反、或、与来完成了点动自锁正反转;其中OR一个常开相当于梯形图里并联一个常开;AND/&一个常开相当于梯形图里串联一个常开;取反一个常开就变成了常闭。
在第一部分我们使用了逻辑运算符,当然指令部分还需要学习,在scl模式下它的指令和lad大体相同,不过比梯形图多了一个程序控制指令,是比较常用的指令块之一。如图:这里有和C语言比较相似的if语句,case语句和for/while循环语句。下面我们一起了解并学习!
其中第一句:condition:有条件/状态的意思;then:有然后/那么的意思;第二句:statement section if的意思是语句部分如果;那么整体就是:如果条件怎么怎么,然后下面语句部分执行,最后END-IF结束。
知道大概意思之后,就可以简单使用了!例如:按下启动按钮,电动机启动;用if语句这样写:
效果和上面相同:
if...else语句较与if语句多了一个判断,如果条件成立就进行1,否则就就进行2;这里我们用它来完成点动是没有问题的!如果启动为1,电动机就启动,否则就为0不启动。
这一个是条件多分支,如果第一个不满足就执行第二个,两个都不满足就执行最后一个;需要注意的是:1、2、3这三条指令都属于if语句,根据要求可以相互转化,另外可以嵌套使用;本条指令是条件多分支,根据具体的要求可以有相应数量的elseif,可以是2个3个都可以,最后以else结尾就可以。
这一个可以看做if...elseif的加强版,最上面是条件一般是整型,当条件为1执行第一种情况,条件为2执行第二种,也可以是一个范围像2..4,执行另一种情况,最后如果上面条件都不成立执行一种情况。
例题:使用case...of语句控制一个三色灯(红绿黄),按下启动,每间隔1s,依次点亮,再依次熄灭,循环往复,按下停止后全灭。 (这里会用到定时器和计数器,可以先学习定时器计数器,之后再回来看)
这个简单来说,用接通延时定时器形成一个1s的脉冲,再用1s的脉冲来接通一个加计数,用当前值接通或断开三色灯。
具体效果如图:
for循环语句:在信息系统中的具体说明:重复执行程序循环。
具体使用可以先建一个变量,初始化赋值;然后确定一个范围,在这个范围内将数组2中的多个数值传到数组1中。
这一个指令在上一个的基础上加了一个步宽功能,循环一次走几个的意思:下图是每次走两个。
while循环语句可以用在模拟量中根据实时温度或变量来判断;可以重复执行程序循环,当条件不满足时,判断后就跳过执行下一步;当条件满足,则进行循环执行,每执行一次就判断一次,直至条件不满足。
简单举例:当i<100时,然后循环执行并判断条件;当i>100时,循环完成,将输出点赋值后跳出循环。
exit指令多在循环中使用,在循环执行中,碰到exit就跳出循环,执行下面指令。
对()内的程序进行注释。
当程序执行到goto所定义的标签,就跳转到标签指定点继续执行程序。
这一部分简单介绍了常用指令,上面还有几个不常用的没有介绍到,像:不满足条件时运行指令,退出块指令等。
这里类似一个代码块,括号中有IN,PT,Q,ET;我们可以和梯形图中的对比来看:IN是输入端或者叫触发端,PT是设定时间,Q点是输出点,ET是当前时间(两个都很类似)。
那么使用是否也和梯形图形同呢,来看下:用中继来触发,计时3s,输出点是黄灯。
这里我们可以来举个常见的例子:星三角来使用一下TON接通延时!(星三角要求:按下启动按钮,主接触器和星型接触器得电,3s后星型断开,三角接触器得电,完成星三角降压启动,按下停止按钮,全部停止)。
如图:实现星三角主要用了if语句和定时器TON,按下启动让主接触器和星型接触器为1,再用主接触器和星接触器为TON的触发条件,计时3秒,时间到后Q点得电,将星型赋值为0,三角赋值为1,完成交换,如果按下停止按钮,将3个接触器赋值为0.
效果图:这里用指示灯代替3个接触器。
另外定时器中还有TP(生成脉冲),TOF(关断延时),和TON的使用方法大致相同:TP的触发可以是一个脉冲,然后就会接通Q点,时间到后关断;
下图是TOF关断延时,接通的时候不会计数,断开后开始计数。
这里可以举个小例子:在星三角降压启动完成后,亮绿色指示灯,代表启动完成,当按下停止按钮后,过2s灭掉。(这里再加入TOF就可以了)。
如图:当三角接触器得电时,绿色指示灯亮,按下停止后开始计时2s,然后灭掉。
这里我们还用梯形图中的来进行比较:对应括号中的,CU是计数器的输入端/触发端,R是计数器复位触发的地方,PV是设置次数,Q点是输出端,CV是当前次数。(它们两个相差不是太大)。
了解过之后可以使用一下:需要注意所用的数据类型,输入,复位,输出都是bool型,设置次数是整型。
这里举一个例子来试验一下:每按一次按钮,都亮一个灯(一共3个),按下停止按钮,灯都灭。
如图:这里用了一个上升沿,防止加计数多加,然后根据当前的数值,让灯亮。
效果图:
总结
以上就是本篇文章的全部内容啦!一是复习了上一篇的逻辑运算符,二是将SCl中的程序控制指令说了一下,算是简单了解(可以参考博图里的信息系统),最后说了一下在SCL中TON和CTU的使用还有几个例题,可以结合factoryio来进行练习。