谈谈如何提高电气人员plc编程思路(一)
PLC编程,无非有几种方式方法。
1、开关量编程
2、脉冲量编程
3、模拟数字量编程
4、功能指令
一、开关量编程
开关量编程就是利用常开常闭和out线圈输出来实现功能。这种编程方法解决简单的问题比较容易,但是解决复杂一点程序,程序逻辑本身复杂度会不断提高。为了降低程序逻辑复杂度,可以在程序中引入中间继电器M,或者通过时间继电器,结束一步触发一步,层层递进,解决问题。但是这样做也有不好的地方,对于一些随机性控制,比如电梯,实现每一步都需要很多条件,楼层越高,之间的联锁成倍数增长,这时,就应该引入模拟量去解决问题,通过数据比较,实现程序的控制。
二.脉冲量编程
开关状态有三种,按下、悬停、释放,PLC只接受上升沿和下降沿,也就是我们按钮的按下和释放。在我们解决液位的问题,我们就能利用这个上升和下降来检测液位的位置。或者我们想要实现一个按下不启动,松开时设备才启动的功能。脉冲编程通常与置位(s)和复位(r)指令配合使用。
三、模拟数据量编程
数据量编程是解决复杂问题最好的方法,程序逻辑清晰,程序不容易出错。比如电梯,我们可以把每层对应一个数字,我们可以通过所在楼层位置和所去位置进行比较,实现电梯是上升还是下降。我们还能够对位置进行记忆。
四、功能指令
要想解决问题快,必须熟悉plc特有的功能指令,每个品牌功能指令略有不同,但大同小异。比如要实现一个,根据操作人员按按钮的顺序启动电机,由于操作人员操作时的随机性,普通常开常闭难以实现该功能。最简单的方法就是用先进先出,通过出入栈实现程序控制。
另外,控制方法也有很多种。
比如我们通常说的顺序控制,也就是开环控制典型的一类。这种控制方法无法纠错,但程序逻辑清晰,也能解决很多常规问题。
随机控制,程序逻辑关系就比较复杂,需要不断记忆当前数据,把数据比较分析,再选择逻辑输出。像流量控制,就可以根据数据量的大小计算分析,调整电磁阀门开度,达到限流问题,当然,这是pid控制的类型。像电梯这种也是闭环控制。我们的变频空调控制系统,根据温度调整电机频率,等等很多案例。
今天先说这么多,下次用案例来慢慢说明,面对这些问题,我们就能如何快速入手解决问题。
工控 西门子 PLC SCL编程讲解 2
在SCL程序编写中,在逻辑控制或者数据处理分析中,有一类指令我们用得最多,就是程序控制指令,常见的入IF ,Case ,For 和While 等。下面我仔细的讲解,有疑问可以留言提出:
图1 程序控制指令
IF .. THEN 指令
IF 指令含有含有三个分支,分别是Then ,Else 和ElsIF。
图2 IF 语句
图3 浮点数比较条件
IF语句应该是SCL里面最常用的语句了,常用于条件判断。判断类型可以是BOOL类型,可以是浮点类型等等,基本上所有类型都可以判断,只要比较的两个变量类型是一样。
在图2中,AByte 是Byte 类型,因为1在0..255之间,所以1会自动转化为Byte类型。如果比较的是Abyte类型是256,会是什么样子呢?读者可以自己写的程序,试验一下,看看结果,会加深你对数据类型的理解。
上面程序中,首先比如AByte是否和1相等,如果相等则Outvalue的值为1,然后和2比较,如果和2相等,那么OuValue值为2,如果都满足条件OuValue 的输出值则为5。
上述的IF条件语句,也可以用CASE语句来进行表示。CASE的比较类型没有IF 范围广,只有整形 才能做为比较条件。
CASE指令
图4 IF语句的CASE表达方式
从CASE语句表述中,我们发现语句相对于IF表达式来说,更加清晰简单明了,所以如果需要用到整形条件作为判断,尽量用CASE来实现,会提高效率。
FOR 指令
FOR指令常用来对数组类型数据进行批量处理,在上一期讲解中已经举过一个例子,下面举个稍微复杂点的例子。
图5 FOR循环语句
在FOR程序,我们对数组的每一个索引值进行赋值,同时判断索引值的奇偶性来进行赋值操作。
图6 FOR循环语句2
在上面的程序里面,我们发现有一个关键字Continue .当FOR循环执行到该语句的时候,Continue下面的程序都不会执行。所以,当iCout小于15的时候,AArray[iCount]:=iCount赋值语句不会执行。
还有一个地方有点区别,就是FOR 语句后面,多了一个关键字 BY 。BY的含义是For 执行的间隔按照BY的设定来执行。如果后面设定为1,则0..99全部执行;如果设定为2,则执行顺序为0,2,4,6,8的顺序来执行。
上述的FOR循环语句,我们同样可以采用WHILE循环来实现。
WHILE 指令
图7 WHILE指令
WHILE循环的表达方式和FOR循环基本类型,但是我们注意一点,这里面对循环变量,手动进行进行递进。如果没有这一句,iCount的值一直为0,循环条件iCount<100将一直为True,WHILE循环会一直执行。所以切记一定执行该语句。
我们还注意到一个关键字EXIT ,当执行到该指令的时候,WHILE循环会停止执行,FOR指令也是一样。所以上面的程序,运行下来的情况是,数组的赋值只执行到AArray[81]结束。
GOTO指令
goto指令主要用来执行跳转过程,可以带来程序操作的便利性,一般不推荐使用。若操作不当,则会打乱整个程序的逻辑性。
在图7 中,如果iCount 大于90,那么,程序就会跳出WHILE 循环执行指定标签lable13地方程序#iCount=0,继续从头开始执行WHILE循环。当然这个操作是毫无意义的,这里只是举个例子而已。
结束语
这节主要讲解了,SCL里面常见控制程序的使用方法。下一节讲解一些基本指令的SCL表达方式,比如定时器,计数器,数学公式等,西门子 PLC 里面的SCL内容还是很多的,有疑问的可以在下面留言,有错误欢迎指出。
欢迎大家关注另外一个平台,gongz hao 为 plcteacher ,后面PLC方面的文章,都迁移到那里,方便阅读。
相关问答
怎么看待工业4.0、自动智能化和就业率之间的关系?
工业4.0是在互联网的影响下,工业或者说是制造业发展革新的新形式。德国人提出工业4.0(Industry4.0)的概念,美国也同样有工业互联网(IndustrialInternet)的...机.....
扫一扫微信交流