资深工程师分享:PLC程序设计思路,初学者福利
前几天有个学员咨询一个程序设计的问题,程序的控制要求如下:需要控制5台电机的运行,每台电机运行时需要记录运行时间,电机启动运行时,根据记录的运行时间,从小到大,每个2s依次启动电机的运行。
我想对于这个程序的控制要求来讲,他的难点在于如何对这些电机运行时间进行排列,排列好了后,如何根据排列的顺序去起动电机的运行,从这个控制要求中我们可以看出,这主要是分为两个部分来完成这个程序的设计的:
第一部分:用于对电机的运行时间进行从小到大顺序的排列;
第二部分:根据排列好的数据,如何判断需要起动那一台电机。
这里我们以西门子S7-200SMART系列PLC为例,先说说,如何编写一个数据排列的带参数的子程序。
西门子S7-200系列的PLC中不像三菱的FX系列PLC具有数据排列的指令,因此我们要实现这个数据的排列功能,必须自己去搭建一个这样的功能块,在搭建这个功能块的时候,会使用到间接寻址和循环指令,同时还需要应用到带参数的子程序。
假设有5个数据需要把他们的数据的大小按照顺序从小到大排列,那么我们可以先在这五个数中找到最大的数放在最后面。然后在剩下的四个数中找到最大的数放到倒数第二个的位置,接着在剩下的三个数中找到最大的值放到倒数第三的位置,依次下去,这样当全部比较完后,我们的数据就按照从小到大的顺序排列好了。那么很明显,我们需要用两个循环指令进行嵌套。外层的循环指令需要循环4次,而内层的循环指令的循环次数是会变化的,因为第一次从5个数据中找出最大值,循环4次,第二次的时候从4个数据中找出最大值,循环3次,依次下去,每次需要改变循环的次数。
如何找出最大值呢? 我们可以进行比较,首先用第二个数跟第一个数比较,如果第二个数比第一个数大,那么指针往下移动变成第二个数跟第三个数比较,如果第二个数比第三个数大,那么对第二个数和第三个数进行交换,依次下去,当比较完成后,最大的数就放到最后的地址里面去了。
程序设计:
(1)建立变量表
(2)根据变量表,编写数据排列子程序
第二部分的内容: 根据排列好的数据,如何判断需要起动那一台电机。
在启动电机时,我们需要把每一台电机运行的时间拿过来与排列好的数据进行比较,看看他是位于我们这个排列好的数据中的的什么位置。然后根据这个位置来判断启动的时候。
设计思路:
在这里面我们会用到两个功能,第一个功能时把我们电机运行的时间,按照编号顺序放到表格中,例如VW20到VW28分别表示电机1到电机5的运行时间,把它放到表格中,而后把我们排列好的数据,拿过来与表格中的数据进行比较(可以使用查表指令),看看最小的值时位于表格中的哪个位置,根据查表指令所查找的位置来启动那条电机,比如查找出来的值时3则表示的就是第三台电机的运行时间最少,可以启动这第三台电机,这里我们需要用到表格指令及间接寻址。
程序:
总结
本程序作为一个框架程序,主要应用到了以下几个内容,间接寻址的应用,循环指令的应用,带参数子程序的应用,查表指令的使用,希望读者看完后,对自己以后设计程序时思路会有所启发,若有考虑不周之处或更好的方法,望指出,谢谢。
本文为技成曾鑫老师原创作品,未经同意转载必究
↓↓↓下载可免费观看西门子系列课程
PLC编程学会顺序功能图,编程一点就通!
功能表图又称做状态转移图,它是描述控制系统的控制过程、功能和特性的一种图形,也是设计plc的顺序控制程序的有力工具。功能表图并不涉及所描述的控制功能的具体技术,它是—种通用的技术语言,可以用于进一步设计和不同专业的人员之间进行技术交流。
各个PLC厂家都开发了相应的功能表图,各国家也都制定了功能表图的国家标准。我国于1986年颁布了功能表图的国家标准(GB6988.6-86)。
如图1所示为功能表图的一般形式,它主要由步、有向连线、转换、转换条件和动作(命令)组成。
图1 功能表图的一般形式
PART1.步与动作
(1)步
在功能表图中用矩形框表示步,方框内是该步的编号。如图1所示各步的编号为n-1、n、n+1。编程时一般用PLC内部编程元件来代表各步,因此经常直接用代表该步的编程元件的元件号作为步的编号,如M300等,这样在根据功能表图设计梯形图时较为方便。
(2)初始步
与系统的初始状态相对应的步称为初始步。初始状态一般是系统等待启动命令的相对静止的状态。初始步用双线方框表示,每一个功能表图至少应该有一个初始步。
(3)动作
一个控制系统可以划分为被控系统和施控系统,例如在数控车床系统中,数控装置是施控系统,而车床是被控系统。对于被控系统,在某一步中要完成某些“动作”,对于施控系统,在某一步中则要向被控系统发出某些“命令”,将动作或命令简称为动作,并用矩形框中的文字或符号表示,该矩形框应与相应的步的符号相连。如果某一步有几个动作,可以用如图2所示的两种画法来表示,但是图中并不隐含这些动作之间的任何顺序。
图2 多个动作的表示
(4)活动步
当系统正处于某一步时,该步处于活动状态,称该步为“活动步”。步处于活动状态时,相应的动作被执行。若为保持型动作则该步不活动时继续执行该动作,若为非保持型动作则指该步不活动时,动作也停止执行。一般在功能表图中保持型的动作应该用文字或助记符标注,而非保持型动作不要标注。
PART2.有向连线、转换与转换条件
(1)有向连线
在功能表图中,随着时间的推移和转换条件的实现,将会发生步的活动状态的顺序进展,这种进展按有向连线规定的路线和方向进行。在画功能表图时,将代表各步的方框按它们成为活动步的先后次序顺序排列,并用有向连线将它们连接起来。活动状态的进展方向习惯上是从上到下或从左至右,在这两个方向有向连线上的箭头可以省略。如果不是上述的方向,应在有向连线上用箭头注明进展方向。
(2)转换
转换是用有向连线上与有向连线垂直的短划线来表示,转换将相邻两步分隔开。步的活动状态的进展是由转换的实现来完成的,并与控制过程的发展相对应。
(3)转换条件
转换条件是与转换相关的逻辑条件,转换条件可以用文字语言、布尔代数表达式或图形符号标注在表示转换的短线的旁边。转换条件X和x分别表示在逻辑信号X为“1”状态和“0”状态时转换实现。符号X↑和X↓分别表示当X从状态0到1和1到0状态时转换实现。使用最多的转换条件表示方法是布尔代数表达式。
PART3.功能表图的基本结构
(1)单序列
单序列由一系列相继激活的步组成,每一步的后面仅接有一个转换,每一个转换的后面只有一个步,如图3a所示。
图3 单序列与选择序列 a)单序列 b)选择序列开始 c)选择序列结束
(2)选择序列
选择序列的开始称为分支,如图3b所示,转换符号只能标在水平连线之下。如果步2是活动的,并且转换条件e=1,则发生由步5步6的进展;如果步5是活动的,并且f=1,则发生由步5步9的进展。在某一时刻一般只允许选择一个序列。
选择序列的结束称为合并,如图5-22c所示。如果步5是活动步,并且转换条件m=1,则发生由步5步12的进展;如果步8是活动步,并且n=1,则发生由步8步12的进展。
(3)并行序列
并行序列的开始称为分支,如图4a所示,当转换条件的实现导致几个序列同时激活时,这些序列称为并行序列。当步4是活动步,并且转换条件a=1、3、7、9这三步同时变为活动步,同时步4变为不活动步。为了强调转换的同步实现,水平连线用双线表示。步3、7、9被同时激活后,每个序列中活动步的进展将是独立的。在表示同步的水平双线之上,只允许有一个转换符号。
图4 并行序列 a)并行序列开始 b)并行序列结束
并行序列的结束称为合并,如图4b所示,在表示同步的水平双线之下,只允许有一个转换符号。当直接连在双线上的所有前级步都处于活动状态,并且转换条件b=1时,才会发生步3、6、9到步10的进展,即步3、6、9同时变为不活动步,而步10变为活动步。并行序列表示系统的几个同时工作的独立部分的工作情况。
(4)子步
如见图5所示,某一步可以包含一系列子步和转换,通常这些序列表示整个系统的一个完整的子功能。子步的使用使系统的设计者在总体设计时容易抓住系统的主要矛盾,用更加简洁的方式表示系统的整体功能和概貌,而不是一开始就陷入某些细节之中。设计者可以从最简单的对整个系统的全面描述开始,然后画出更详细的功能表图,子步中还可以包含更详细的子步,这使设计方法的逻辑性很强,可以减少设计中的错误,缩短总体设计和查错所需要的时间。
图5 子步
PART4.转换实现的基本规则
(1)转换实现的条件
在功能表图中,步的活动状态的进展是由转换的实现来完成的。转换实现必须同时满足两个条件:
1)该转换所有的前级步都是活动步;
2)相应的转换条件得到满足。
如果转换的前级步或后续步不止一个,转换的实现称为同步实现,如图6所示。
图6 转换的同步实现
(2)转换实现应完成的操作
转换的实现应完成两个操作:
1)使所有由有向连线与相应转换符号相连的后续步都变为活动步;
2)使所有由有向连线与相应转换符号相连的前级步都变为不活动步。
PART5.绘制功能表图应注意的问题
(1)两个步绝对不能直接相连,必须用一个转换将它们隔开。
(2)两个转换也不能直接相连,必须用一个步将它们隔开。
(3)功能表图中初始步是必不可少的,它一般对应于系统等待起动的初始状态,这一步可能没有什么动作执行,因此很容易遗漏这一步。如果没有该步,无法表示初始状态,系统也无法返回停止状态。
(4)只有当某一步所有的前级步都是活动步时,该步才有可能变成活动步。如果用无断电保持功能的编程元件代表各步,则PLC开始进入RUN方式时各步均处于“0”状态,因此必须要有初始化信号,将初始步预置为活动步,否则功能表图中永远不会出现活动步,系统将无法工作。
PART6.绘制功能表图举例
某组合机床液压滑台进给运动示意图如图7所示,其工作过程分成原位、快进、工进、快退四步,相应的转换条件为SB、SQ1、SQ2、SQ3。液压滑台系统各液压元件动作情况如表1所示。根据上述功能表图的绘制方法,液压滑台系统的功能表图如图7a所示。
表1 液压元件动作表
元件
工步
YV1
YV2
YV3
原位
―
―
―
快进
┼
―
―
工进
┼
―
┼
快退
―
┼
―
图7 液压滑台系统的功能表图
如果PLC已经确定,可直接用编程元件M300~M303(FX系列)来代表这四步,设输入/输出设备与PLC的I/O点对应关系如表2所示,则可直接画出如图7b所示的功能表图接线图,图中M8002为FX系列PLC的产生初始化脉冲的特殊辅助继电器。
表2 输入/输出设备与PLC I/O对应关系
PLC I/O
X0
X1
X2
X3
Y0
Y1
Y2
输入/输出设备
SB
SQ1
SQ2
SQ3
YV1
YV2
YV3
免责声明:本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系删除,谢谢!
相关问答
plc数据排序方法?
在PLC(可编程逻辑控制器)中进行数据排序主要有两种方法。第一种是使用数组或者数据表格进行排序。首先,将待排序的数据存储在一个数组或者数据表格中,然后使...
PLC300冒泡排序法程序怎么写?
冒泡排序每一趟排序把最大的放在最右边。比如:871256457887和12交换:128756457887和56交换:5687457887和45交换:458778...
plc中步序号是什么?
plc中步序号是若干条指令中按顺序排列的序号。当PLC投入运行时,它首先执行系统程序和CPU自检等工作。在没有中断或跳转控制的情况下,CPU从第一条指令开始,顺序...
plc数据排列指令实际应用?
常开触点I0.0常闭触点I0.1和传送指令MOV_B组成网络1,当MOV_B指令前的条件满足时,会将值1赋给QB0,也就是将Q0.0置1。这时你若按下常闭触点I0.1,虽然可以使MOV...
plc加扩展先后顺序怎么看?
没先后顺序。西门子PLCs7-200扩展模块排列没有先后顺序。一般将相同类型的扩展模块放置在一起,如:DI模块和DI模块放置在一起,DO模块和DO模块放置在一起。没...
三菱plc扩展模块怎么排序?
三菱PLC扩展模块的排序通常按照其功能和连接方式进行。首先是根据模块的输入和输出类型进行分类,如数字输入模块、数字输出模块、模拟输入模块和模拟输出模块...
plc线的颜色是怎么排列?
PLC线的颜色排列通常遵循以下标准:1.电源线:一般使用红色或棕色。2.地线:一般使用黑色或黄绿色。3.输入线:一般使用蓝色。4.输出线:一般使用黄色或...
西门子plc五个信号先后排序?
西门子的PLC五个信号的先后排序是根据它们在控制过程中的重要性和优先级来决定的。常见的排序方式为输入信号、输出信号、中断信号、计时器和计数器信号。其...
PLC冒泡算法怎么让排序的寄存器与输出点建立对应关系?
最简单的方式,建立临时变量,寄存器内的数据比较后先放入到临时变量里,每次循环结束,再使用MOV指令将排序好的数据放入到相应地址里。既然是冒泡排序,肯定不...
plc顺序图的优缺点?
一.顺序图的缺点1.没有特別明确的表达与对象之间的关系。2.在表示并发出控制流方面有很大的困难。二.顺序图的优点1.描述了交互过程中的时间顺序与排列。2...