【SCL】博图SCL语言学习 (指令篇 )

博图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.点动

按下为1,松开为0;梯形图是这样:由常开接一个线圈,就可以。【SCL】博图SCL语言学习 (指令篇 )_第1张图片

 那么使用scl编写的时候,将常开赋值给线圈就可以:

 效果在虚拟工厂里面可以看一下:

【SCL】博图SCL语言学习 (指令篇 )_第2张图片

 2.自锁(起保停)

使用逻辑运算符来完成起保停(启动,保持和停止),梯形图如图:

【SCL】博图SCL语言学习 (指令篇 )_第3张图片

 根据梯形图再来转换成scl来写:启动OR电动机 这里相当于启动按钮和电动机辅助常开;&一个NOT停止  相当于串联上一个常闭。

【SCL】博图SCL语言学习 (指令篇 )_第4张图片

运行效果: 

【SCL】博图SCL语言学习 (指令篇 )_第5张图片

 3.正反转

 正反转和起保停很相似,使用与、或、取反就好:

 效果:这里用绿灯和红灯来表示正转和反转。

【SCL】博图SCL语言学习 (指令篇 )_第6张图片

4.小结 

 这里我们使用取反、或、与来完成了点动自锁正反转;其中OR一个常开相当于梯形图里并联一个常开;AND/&一个常开相当于梯形图里串联一个常开;取反一个常开就变成了常闭。


二、常用程序控制指令

在第一部分我们使用了逻辑运算符,当然指令部分还需要学习,在scl模式下它的指令和lad大体相同,不过比梯形图多了一个程序控制指令,是比较常用的指令块之一。如图:这里有和C语言比较相似的if语句,case语句和for/while循环语句。下面我们一起了解并学习!

【SCL】博图SCL语言学习 (指令篇 )_第7张图片

1. if...then(条件执行) 

【SCL】博图SCL语言学习 (指令篇 )_第8张图片

 其中第一句:condition:有条件/状态的意思;then:有然后/那么的意思;第二句:statement section if的意思是语句部分如果;那么整体就是:如果条件怎么怎么,然后下面语句部分执行,最后END-IF结束。

知道大概意思之后,就可以简单使用了!例如:按下启动按钮,电动机启动;用if语句这样写:

【SCL】博图SCL语言学习 (指令篇 )_第9张图片 例题:用if语句来完成起保停

 【SCL】博图SCL语言学习 (指令篇 )_第10张图片

 效果和上面相同:

【SCL】博图SCL语言学习 (指令篇 )_第11张图片

2. if...then...else(条件分支)

【SCL】博图SCL语言学习 (指令篇 )_第12张图片

 if...else语句较与if语句多了一个判断,如果条件成立就进行1,否则就就进行2;这里我们用它来完成点动是没有问题的!如果启动为1,电动机就启动,否则就为0不启动。

【SCL】博图SCL语言学习 (指令篇 )_第13张图片

3. if...then...elseif...else(条件多分支)

【SCL】博图SCL语言学习 (指令篇 )_第14张图片

 这一个是条件多分支,如果第一个不满足就执行第二个,两个都不满足就执行最后一个;需要注意的是:1、2、3这三条指令都属于if语句,根据要求可以相互转化,另外可以嵌套使用;本条指令是条件多分支,根据具体的要求可以有相应数量的elseif,可以是2个3个都可以,最后以else结尾就可以。

4. case...of(多分支选择)

【SCL】博图SCL语言学习 (指令篇 )_第15张图片

这一个可以看做if...elseif的加强版,最上面是条件一般是整型,当条件为1执行第一种情况,条件为2执行第二种,也可以是一个范围像2..4,执行另一种情况,最后如果上面条件都不成立执行一种情况。

例题:使用case...of语句控制一个三色灯(红绿黄),按下启动,每间隔1s,依次点亮,再依次熄灭,循环往复,按下停止后全灭。 (这里会用到定时器和计数器,可以先学习定时器计数器,之后再回来看)

 这个简单来说,用接通延时定时器形成一个1s的脉冲,再用1s的脉冲来接通一个加计数,用当前值接通或断开三色灯。

【SCL】博图SCL语言学习 (指令篇 )_第16张图片

 具体效果如图:

 【SCL】博图SCL语言学习 (指令篇 )_第17张图片

5. for...to...do (在计数循环中执行)

【SCL】博图SCL语言学习 (指令篇 )_第18张图片

 for循环语句:在信息系统中的具体说明:重复执行程序循环。

【SCL】博图SCL语言学习 (指令篇 )_第19张图片

 具体使用可以先建一个变量,初始化赋值;然后确定一个范围,在这个范围内将数组2中的多个数值传到数组1中。

 仿真运行后,数组2中的123456,就传到数组1中了。【SCL】博图SCL语言学习 (指令篇 )_第20张图片

6. for...to...by..do(在按步宽计数循环中执行)

【SCL】博图SCL语言学习 (指令篇 )_第21张图片

这一个指令在上一个的基础上加了一个步宽功能,循环一次走几个的意思:下图是每次走两个。

【SCL】博图SCL语言学习 (指令篇 )_第22张图片 仿真图:

【SCL】博图SCL语言学习 (指令篇 )_第23张图片

7. while...do (满足条件时运行)

【SCL】博图SCL语言学习 (指令篇 )_第24张图片

【SCL】博图SCL语言学习 (指令篇 )_第25张图片

while循环语句可以用在模拟量中根据实时温度或变量来判断;可以重复执行程序循环,当条件不满足时,判断后就跳过执行下一步;当条件满足,则进行循环执行,每执行一次就判断一次,直至条件不满足。

简单举例:当i<100时,然后循环执行并判断条件;当i>100时,循环完成,将输出点赋值后跳出循环。 【SCL】博图SCL语言学习 (指令篇 )_第26张图片

8. exit (立即退出循环)

【SCL】博图SCL语言学习 (指令篇 )_第27张图片  

【SCL】博图SCL语言学习 (指令篇 )_第28张图片

 exit指令多在循环中使用,在循环执行中,碰到exit就跳出循环,执行下面指令。

9. (*  *) (插入一个注释段)

【SCL】博图SCL语言学习 (指令篇 )_第29张图片  

【SCL】博图SCL语言学习 (指令篇 )_第30张图片

 对()内的程序进行注释。

10.goto...(跳转指令)

【SCL】博图SCL语言学习 (指令篇 )_第31张图片 【SCL】博图SCL语言学习 (指令篇 )_第32张图片

当程序执行到goto所定义的标签,就跳转到标签指定点继续执行程序。 

【SCL】博图SCL语言学习 (指令篇 )_第33张图片

 11.小结

 这一部分简单介绍了常用指令,上面还有几个不常用的没有介绍到,像:不满足条件时运行指令,退出块指令等。


三、TON(定时器)和CTU(加计数)

1.TON

【SCL】博图SCL语言学习 (指令篇 )_第34张图片 这里类似一个代码块,括号中有IN,PT,Q,ET;我们可以和梯形图中的对比来看:IN是输入端或者叫触发端,PT是设定时间,Q点是输出点,ET是当前时间(两个都很类似)。

【SCL】博图SCL语言学习 (指令篇 )_第35张图片

那么使用是否也和梯形图形同呢,来看下:用中继来触发,计时3s,输出点是黄灯。

【SCL】博图SCL语言学习 (指令篇 )_第36张图片 

这里我们可以来举个常见的例子:星三角来使用一下TON接通延时!(星三角要求:按下启动按钮,主接触器和星型接触器得电,3s后星型断开,三角接触器得电,完成星三角降压启动,按下停止按钮,全部停止)。

如图:实现星三角主要用了if语句和定时器TON,按下启动让主接触器和星型接触器为1,再用主接触器和星接触器为TON的触发条件,计时3秒,时间到后Q点得电,将星型赋值为0,三角赋值为1,完成交换,如果按下停止按钮,将3个接触器赋值为0. 

【SCL】博图SCL语言学习 (指令篇 )_第37张图片

效果图:这里用指示灯代替3个接触器。

【SCL】博图SCL语言学习 (指令篇 )_第38张图片 

另外定时器中还有TP(生成脉冲),TOF(关断延时),和TON的使用方法大致相同:TP的触发可以是一个脉冲,然后就会接通Q点,时间到后关断;

【SCL】博图SCL语言学习 (指令篇 )_第39张图片 

下图是TOF关断延时,接通的时候不会计数,断开后开始计数。 

【SCL】博图SCL语言学习 (指令篇 )_第40张图片 这里可以举个小例子:在星三角降压启动完成后,亮绿色指示灯,代表启动完成,当按下停止按钮后,过2s灭掉。(这里再加入TOF就可以了)。

如图:当三角接触器得电时,绿色指示灯亮,按下停止后开始计时2s,然后灭掉。 

【SCL】博图SCL语言学习 (指令篇 )_第41张图片

 2.CTU

【SCL】博图SCL语言学习 (指令篇 )_第42张图片

这里我们还用梯形图中的来进行比较:对应括号中的,CU是计数器的输入端/触发端,R是计数器复位触发的地方,PV是设置次数,Q点是输出端,CV是当前次数。(它们两个相差不是太大)。

【SCL】博图SCL语言学习 (指令篇 )_第43张图片 

了解过之后可以使用一下:需要注意所用的数据类型,输入,复位,输出都是bool型,设置次数是整型。

【SCL】博图SCL语言学习 (指令篇 )_第44张图片 

 这里举一个例子来试验一下:每按一次按钮,都亮一个灯(一共3个),按下停止按钮,灯都灭。

 如图:这里用了一个上升沿,防止加计数多加,然后根据当前的数值,让灯亮。

【SCL】博图SCL语言学习 (指令篇 )_第45张图片

 效果图:

【SCL】博图SCL语言学习 (指令篇 )_第46张图片


 四、例题

1.使用if语句实现正反转。

2.使用计数器和case语句等 完成跑马灯(要求:按下启动按钮,依次点亮6个灯,间隔1s,6个灯全亮后再依次熄灭,然后1,3,5灯亮1s后灭,2,4,6灯亮,1s后灭,交替闪烁5次结束,按下停止按钮,灯全部熄灭)


 总结

以上就是本篇文章的全部内容啦!一是复习了上一篇的逻辑运算符,二是将SCl中的程序控制指令说了一下,算是简单了解(可以参考博图里的信息系统),最后说了一下在SCL中TON和CTU的使用还有几个例题,可以结合factoryio来进行练习。

你可能感兴趣的:(西门子1200,经验分享,其他,学习,windows)