bcb3.docx
- 文档编号:15128556
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:31
- 大小:988.73KB
bcb3.docx
《bcb3.docx》由会员分享,可在线阅读,更多相关《bcb3.docx(31页珍藏版)》请在冰点文库上搜索。
bcb3
第三章可编程控制器编程
第一节经验法编程
有一些简单的梯形图可以借鉴继电器控制的电路图来设计,即在一些典型电路的基础上,根据被控对象对控制系统的具体要求,进行修改和完善,得到符合控制要求的梯形图。
这种方法没有普遍的规律可以遵循,设计所用的时间、设计的质量与编程者的经验有很大的关系,所以有人把这种设计方法叫做经验设计方法。
它可以用于逻辑关系简单的梯形图设计。
例1送料小车自动控制系统的梯形图设计
送料小车工作示意图如图,送料小车在行程开关ST1处装料,15s后装料结束,开始右行,碰到行程开关ST2后停下来卸料,10s后左行,碰到行程开关ST1又停下来装料,这样不停地循环工作。
在右行或左行过程中,按一下停止按钮SB3,小车停止运行。
系统设置右行启动按钮SB2。
1)I/0
输入:
右行启动按钮SB100000
左行启动按钮SB200001
停止按钮SB300002
右端行程开关ST200003
左端行程开关ST100004
输出:
右行接触器00100
左行接触器00101
装料电磁阀00102
卸料电磁阀00103
2)设计梯形图
梯形图如图:
按一下右行启动按钮,小车右行,按一下左行启动按钮,小车左行,按一下停止按钮,小车停止。
这是典型的双向控制功能,故可以采用双向控制电路。
该系统还要求,右行至ST2处,停止右行,卸料,定时10秒;左行至ST1处,停止左行,装料,定时15秒。
因此可以用00003的常闭触点控制00100线圈断电,用00003的常开触点控制00103线圈得电,并控制定时器TIM000定时10秒;用00004的常闭触点控制00101线圈断电,用00004的常开触点控制00102线圈得电,并控制定时器TM001定时15秒。
卸料10秒后,自动左行,停止卸料;装料15秒后,自动右行,停止装料。
因此可以将TIM000、TIM001的常开触点分别与右行启动00000、左行启动00100的常开触点相并联,小车左行离开00003或右行离开00004,卸料或装料动作将自动停止。
例2通风机监视
有三个通风机,设计一个监视系统,监视通风机的运转。
要求如下:
如果两个或两个以上在运转,信号灯就持续发亮;如果只有一个通风机在运转,信号灯就以0.5HZ的频率闪烁;如果三个通风机都不运转,信号灯就以2HZ的频率闪烁。
用一个开关来控制系统的工作,开关闭合时系统工作,开关断开时,系统不工作,信号灯熄灭。
1)I/O分配
输入:
风机状态1~300000~00002
控制开关00003
输出信号灯00100
2)设计梯形图
如题意所述,通风机运转有三种情况,对应信号灯三种指示状态,用三个辅助继电器20000~20002表示这三种状态,再由这三个继电器控制指示灯00100。
20000、20001、20002的控制电路设计:
20000~20002和00000~00002的关系可用真值表列出,如表所示,写出20000~20002的逻辑表达式,并用逻辑代数的公式化简如下:
输入
输出
00000
00001
00002
20000
20001
20002
0
0
0
0
0
1
0
0
1
0
1
0
0
1
0
0
1
0
0
1
1
1
0
0
1
0
0
0
1
0
1
0
1
1
0
0
1
1
0
1
0
0
1
1
1
1
0
0
从逻辑关系上20001可由20000、20002来表示:
由逻辑表达式可以画出梯形图,如图00003的常开触点作为工作控制信号。
TIM000、TIM001构成自复位定时器,分别产生0.5HZ、2HZ的时钟信号。
在逻辑关系复杂时,用逻辑代数设计梯形图,首先要分析控制要求,用真值表来表达输入和输出的逻辑关系,然后用卡诺图或逻辑代数的公式进行化简,最后转换成梯形图。
这种设计方法使设计思路更加清晰,考虑问题更加全面。
3)梯形图如下:
第二节顺序法编程
很多工业过程是顺序进行的,设计顺序控制系统的梯形图有一套固定的方法和步骤可以遵循。
这种系统化的设计方法与前面介绍的经验设计方法相比有很多优点:
它简单易学,设计周期短;规律性很强,克服了经验法的试探性和随意性;设计出来的程序结构清晰、可读性好。
顺序控制设计方法作为梯形图设计的主要方法,已广泛应用于PC控制系统的设计中,成为解决实际问题的一种有效方法。
1.顺序控制的特点
下面以送料小车自动控制系统为例来看顺序控制的特点。
送料小车自动控制系统的工作过程如图所示:
系统启动后首先进行装料,15秒后,装料停止;小车右行,右行途中碰到行程开关ST2时,右行停止;进行卸料,10秒后,卸料停止;小车左行,左行途中碰到行程开关ST1时,左行停止;进行装料,…,如此循环一直进行下去。
这种工作过程有如下特点:
系统的工作过程可以分为若干步(如第一步装料,第二步右行,第三步卸料,第四步左行等),当满足某个条件时(如时间15秒、碰到行程开关等),系统从当前步转入下一步,同时上一步的动作结束。
上述过程就是一种步进工作过程,可以用功能表图来描述。
例如小车送料控制系统的功能表如图,该功能表图非常直观、清晰地描述了小车的工作过程。
在顺序控制设计法中,功能表图是很重要的工具,下面予以详细介绍。
2.功能表图及其对应的梯形图
功能表图又叫状态转移图、状态图或流程图,是描述控制系统的控制过程、功能和特点的一种图形,利用它可以很方便地设计出顺序控制的梯形图。
如功能表图所示,功能表图由步、转换条件、有向连线、动作来组成。
步用矩形框表示,框内的数字表示步的编号。
动作用矩形框表示,框内的文字表示动作的内容,该矩形框应与相应步的矩形框相连。
步与步之间用有向连线连接,箭头表示转换的方向(一般转换方向为自上而下,在不致引起混淆的情况下,可省略箭头)。
步与步之间用转换条件隔开,转换条件用与有向连线垂直的短划线表示,并在短划线旁边用文字、表达式或符号说明。
当转换条件满足时,上一步的活动结束,下一步的活动开始。
当系统正处在某一步所在的阶段,进行相应的动作时,叫做该步处于活动状态,该步称为活动步。
功能表图中与初始状态相应的步称为初始步。
初始步用双线框表示。
每个功能表图至少应该有一个初始步。
功能表图有以下几种结构:
单序列结构、选择序列结构、并列序列结构。
如下图所示:
功能表
中的步可用典型的启保停电路控制。
如图所示:
如果步Si的前级步Si-1是活动的(Si-1=1)并且它们之间的转换条件Ci成立(Ci=1),步Si应变为活动的。
所以步Si的启动电路由Si-1和Ci的常开触点串联而成。
Ci一般是短信号,所以用Si的常开触点实现自锁。
当后续步Si+1变为活动步时,Si应断开。
所以将Si+1的常闭触点与Si的线圈串联。
顺序控制程序设计的关键在于绘制功能表图,即将系统的工作过程分为若干阶段或步并确定各相邻步的转换条件。
在各步内,系统各输出量的通/断状态发生变化,系统就从原来的步进入下一步。
转换条件使系统从当前步进入下一步。
常见的转换条件有限位开关的通/断,定时器、计数器常开触点的接通等。
转换条件也可能是若干个信号的与、或逻辑组合。
下面通过以下例子加以介绍。
例1下图为一动力头进给运动的示意图。
初始状态时,动力头停在ST3处,按一下启动按钮后,动力头快进;碰到行程开关ST1时,改为工进;碰到行程开关ST2时,改为快退;碰到行程开关ST3时,停止。
1)I/O分配
三个行程开关分别接PC的00001、00002、00003,启动按钮接PC的000000,控制运动的三个电磁阀分别接00100、00101、00102,如下表所示。
快进时00100、00101接通,工进时00101接通,快退时00102接通。
输入
输出
启动按钮
00000
正转电磁阀1
00100
STI
00001
正转电磁阀2
00101
ST2
00002
反转电磁阀
00102
ST3
00003
2)画出功能图表图
可以看出,整个工作过程分为四步,功能表图如图(a)所示。
其中,初始步是等待步,没有动作,等待按启动按钮;初始步到2步的转换条件应该是ST3被压下,并且启动按钮被按下,以避免不在初始位置启动。
功能表图可进一步改画为图(b)。
初始步的转换条件是25315,25315在PC运行的第一个扫描周期为ON,用其作为系统运行启动信号。
3)设计梯形图
梯形图如图所示:
00100仅在快进时接通,故可以将00100的线圈和20001的线圈并联。
同理,00102的线圈应和20003的线圈并联。
而00101在快进和工进时都接通,如果直接将00101线圈并联在200001、20002的线圈上,则会出现双线圈现象。
为避免这种情况,用20001、20002的常开触点并联来控制00101的线圈。
第三节时序图法编程
时序图,它的信号随时间变化的图形。
以这种图形为基础,进行PLC程序设计,称时序图法。
这种方法适用于定时或计数的程序,系统复杂时,可将它的动作分解,其局部也可使用这种方法。
这个方法的设计步骤为:
(1)画出输入,输出信号的波形图,建立起准确的时间对应关系。
(2)确定定时关系,设计定时逻辑程序。
找出临界点,即输出信号应出现变化的点,并以这些点为界限,把时段划分为若干时间区间。
进而,依各时间区间形成条件,建立对应的逻辑程序,若形成条件有“相混”的情况,可用计数器或定时器区分。
(3)确定时间区间与动作的对应关系,建立动作程序。
这可按输出要求进行的设计,一般为组合逻辑的问题,是不难进行的。
以下举的例子,说明如何用本法进行设计:
例:
设计喷泉电路
要求设计一个控制喷泉工作的电路。
喷泉有A、B、C三组喷头,见下图。
工作过程应按上图所示,即:
起动后,A组先喷5秒,后B、C同时喷,5秒后B停,再5秒C停,而A、B又喷,再2秒,C也喷。
持续5秒后全部停喷。
再3秒A又重复前述过程。
首先,分配输入,输出接点。
用00002接起动按钮,00003接停止按钮;而A、B、C分别用00101、00102、00103控制。
它是定时控制程序,较适合用本法设计。
1画出波形图见图。
从图知,它有7个临界点,组成6个时间区间。
②这6个时间区别可用6个定时器(TIM000~TIM005)予以区分。
这6个定时器的工作波形见图。
与这个定时对应的梯形图逻辑见下图。
这里,00002为起动信号,它ON后可使01000ON并保持。
01000ON则起动TIM000。
经5秒延时,其常开接点ON,继而起动TIM001。
TIM001工作,又经5秒延时,其常开接点ON,继而起动TIM002。
TIM002工作,又经5秒延时,其常开接点ON,继而起动TIM003。
以此类推,直到TIM005工作,经3秒延时,其常闭接点TIM005OFF.这常闭接点OFF有两个效果:
一是若未按下00003(未使其停止工作),则它只使TIM000暂停工作,而TIM000停止工作,特使TIM001暂停工作……。
直到TIM005自身也停止工作。
这时,其常闭又恢复为ON状态。
TIM000又工作。
它工作后,要延时5秒才会使其常开接点ON。
……以后的工作,又将重复曾经有过的时序……此即按要求,循环将不停地重复进行着。
二是若已按下00003(要结束循环),则TIM005的常闭点将01000OFF。
这可保证结束循环工作,但只能在循环结束时才会发生。
③确定动作关系从图所示波形图知,其6个时间区间的逻辑条件可由定时器的工作状态划分。
其依次关系为:
1~2区间的条件为:
1000.NOT(TIM000)
2~3区间的条件为:
TIM000.NOT(TIM001)
3~4区间的条件为:
TIM001.NOT(TIM002)
4~5区间的条件为:
TIM002.NOT(TIM003)
5~6区间的条件为:
TIM003.NOT(TIM004)
6~7区间的条件为:
TIM004
这6个区间的输出状态按设计要求,可相应使A、B或C产生输出。
其组合后的梯形图如下:
第四节技巧法编程
前三节介绍的方法都是基于PLC的基本逻辑指令,沿用继电器电路的设计方法。
尽管用它编程也可达到要求,并在一定程度上使程序优化。
但是,它未能利用PLC所提供的一些功能很强的指令,所以,未能使程序编得更为简练、省时,更加可读、可改。
本节介绍的技巧编程,是基于功能指令的编程,要讨论如何用功能指令去处理继电器电路的逻辑问题,以提高程序的效率。
一、集成化编程
这集成化编程指的是使用功能指令编程。
特别是利用字处理指令,达到一个指令可起到多条逻辑指令的作用。
1.起、保、停逻辑
起保停逻辑即起动、保持及停车电路,是最常用的继电器电路;也是PLC程序中最常见的一个组成部分。
传统的起保停逻辑都是针对一个位进行操作。
如果要对多个位操作,就要重复使用类似的指令。
其实,完全可以使用字操作指令实现多位操作,使程序得以简化。
两个按钮操作的起保停逻辑的电路是,起动按钮与输出接点并联,然后再与停车按钮取反后串联,以此作为输出线圈的输入条件。
字操作时,也是按此思路处理,可以实现一个字(16位)的起保停逻辑。
下图所示的为字操作起保停逻辑。
通道000为起动按钮,通道005为停车按钮,通道001为输出线圈。
101为中间继电器通道,以用作过渡。
从图知,000通道任一位ON,必可使001通道的相应位ON,并将予以保持。
而005通道的任一位ON,则必使001通道的相应位OFF。
而且,这里也是停止优先。
即起、停按钮同时按时,为停止。
上图用了4条指令,即可使16路实现起保停控制。
而用基本逻辑指令,每条起保停就需4条指令,16路起保停需16×4=64条。
4条代替常规的64条,程序的效率当然高多了。
2.测试逻辑
一些自动控制系统在工作前,往往要不定时地对一些部件或指示部分作些测试。
测灯逻辑就是一例。
指示灯本来用以显示相应的信息的,若灯坏了,就不能正确显示。
为此,要用测灯逻辑对灯是否正常作测试。
用以下梯形图作为测灯逻辑。
它也是字操作。
000通道为测试输入。
可通过按下接于000通道的对应位的按钮,视相应灯是否亮,看灯是否正常。
这里,用了两条指令,即可进行16个灯的测试。
程序的效率也是很高的。
二、模块化编程
1.模块化概念
程序模块化的优点是:
①程序较清晰,可读性强;②程序便于更改,也便于扩充或删除,可改性好;③程序可标准化,特别是一些功能程序,如实现PID算法的程序,可编成标准的。
④程序设计与调试可分块进行,把难点分散,便于成功。
块小、变量少,也便于用种种逻辑设计的方法设计程序。
⑤程序模块化还可实现多人参与编程,提高编程的速度。
⑥在存在重复调用一种模块的情况下,可不必重复编写要调用的模块的程序,可减少程序量。
⑦在存在不需经常对其扫描的程序块时,还可节省扫描周期,提高PLC的响应速度。
所以,尽可能实现PLC程序模块化是值得提倡的。
PLC的程序怎么分块,分成多少模块要依实际情况确定
2.模块化方法
对像OMRON公司这样的PLC,使程序实现模块化,最基本的方法是使用子程序。
这点与用汇编程序给计算机使用子程序以实现程序模块化完全相同。
子程序的调用用条件语句加SBS操作码,同时,在SBS操作码后指出要调用的子程序标号。
当条件满足,则调用该标号的子程序。
以下为实现模块化的程序结构图。
3.模块程序设计
模块程序可分成两种:
一为仅一次调用的,称为专用块,它仅起到划分模块的作用;另一为要多次调用的,称之为标准块。
两种模块的编程是不同的。
第一种模块编程较简单,可直接对指定地址进行编程,无须转换。
其编程如同正常的编程,该怎么编就怎么编。
第二种模块编程要复杂一些。
因为要多次被调用,故首先要弄清每次是“谁”调用的,要对这个“谁”进行识别。
识别之后,要依“谁”的特点,把与这个“谁”相关的逻辑或模拟量的值读入。
再进行有关逻辑处理或数据处理。
最后再把结果赋值给予这个“谁”相关的变量(内部器件)。
这里举一个第二种模块程序设计的例子,对此再进一步予以说明。
设计要求,如果有10个可逆计数器,在0~4095之间进行正计数。
要求把所计内容换成三位16进制数。
其第四位,即最高一位,为与这计数器编号对应的16进制数。
如CNT000,则最高位为0。
再CNT009,则最高位为9等等。
每隔一定时间,把这变换后的数分别依次存于从DM0000开始的数据区中。
每个计数器存储长度为50。
如CNT000,存于DM0000~DM0049之中。
再如CNT001,存于DM0050~DM0099之中。
等等,依此类推。
这个程序怎么设计,可以不用子程序,每个计数器一套程序,共10套。
下图为其中的一套计数器程序。
计数器程序
图中,①为计数指令。
每送入一个脉冲,计数器CNTOOO增1。
到4095后,再增1复位到零。
这些都是CNTR指令的功能。
②为把CNT000的BCD码转换成16进制码,用的BIN指令即可起这个作用。
由于CNT000最大计数为4095,这时的16进制值为FFF,仅三位。
故这里的结果通道DM,有效位三位就可以了。
译码后的结果存于以DM0999内容为地址DM字中。
③把CNTR000的标志(0)存入DM0999内容为地址的DM单元中。
④修改指针,为下一次存储设定新的地址。
⑤对指针作控制,保证存数范围控制在DM0000主DM0049之间。
10套功能相同的程序,完全可编一个通用的子程序,为10套分别作调用。
这么处理,大可简化编程,提高程序效率。
下图为计数器程序的通用子程序。
首先要识别“谁”调的。
从图知,这“谁”的标识记于100通道中。
该例为CNTR009调它,故100通道的内容为#0009。
接着为读入与#0009有关的数据。
本例为要处理的CNTR009的现值及存数的指针值。
本例假设这指针值分别存于DM0950~DM0965之中。
对CNTR009,其指针值存于DM0959中。
读入这个数用COLL指令。
这里①把CNTR000地址加偏移值为(100的内容为9),即CNTR009的内容读入到101通道中。
②把DM0950地址加偏移值9,即DM0959的内容读入到DM0999中。
对指针赋予对应于CNTR009的值。
这样,就可存数及有标志了。
③④对指针的上下限值作计算,以便于修改指针后,使其值控制在给定的范围内。
这里,上限存于DM0992中,下限存于DM0990中。
⑤把BCD译成16进制码,并存于DM0999为地址的DM区中。
但这只选存低三位数。
因为这里用的是数位传送指令,把100的最低位送给DM0999为地址的DM的最高位。
至此,已完成了所要求的程序工作,但子程序还不能结束,还要修改指针并保存指针,以便为新的操作作准备。
⑦为修改指针,使指针加1,以便于下一次存的DM单元地址,比本次的增1,达到依次存数的目的。
⑧为对指针作控制,若指针超过上限,则要赋下限值。
⑨用DIST指令,把DM0999的现值存入DM0050加偏移地址9,即DM0959中,为下一次调用保留初值。
这个通用程序可供10个计数器调用,调前只要先对100赋值,对CNTR000~CNTR009分别赋以#0000~#0009,然后再调这个子程序。
其实,OMRON公司的新机型即CQM1机及以后推出的PLC,有宏调用指令。
它也调用子程序,但可带参数的调用,解决了这里讲的“谁”调用,及对“谁”作识别的问题。
但它只能用于与或非逻辑的处理。
复杂一些的子程序,还得用以上介绍的方法。
三、柔性化编程
柔性,英文为flexible,是灵活的意思。
这里讲的柔性化设计是要使程序可适应不同的情况,并便于修改。
柔性有三个方面:
程序柔性,参数设定柔性及动作柔性。
1.程序设计柔性
有两个办法:
一是全局的,二是局部的。
全局的可更换程序,以便PLC适应于不同的工作条件。
对微型机,如OMRON的SP10、16、20机,它有程序存储卡,可存26个程序。
可按要求把这26个中的一个装入PLC,使PLC能灵活地做相应的工作。
再如有的PLC,其程序可固化到PROM中,可多编几套,各有各的用途,也可达到柔性的目的。
再如中型、大型机,如CS1,C2000H,CV机等,有读入程序的指令,执行它可把存储卡中的某段程序读入到PLC,并存储于此指令之后的程序存储区中,之后即执行此新的程序。
这种靠程序调换达到柔性,是指在一个程序中体现柔性,不是靠多套程序调换。
2.参数设定柔性化
PLC程序多少总有一些参数要设定,如定时器的定时值,或比较指令的比较值,等等。
这些参数可直接送入常数,用这个常数作设定数,这么做当然是可以的,多数程序也是这么做的。
但这样做时,若要改变参数的设定值,就得改变程序,不大灵活。
其实,如果出现参数需改变的情况,可指定内部器件的相应通道存这些设定值。
改变该通道的内容,也就可改变设定值。
而改变通道内容可不必动程序,用终端设备或编程器当PLC在线工作时都可以改,要灵活与方便得多。
如下图参数柔性化设定一所示:
定时器001,其设定值就存于HR00通道中。
从图知HR00通道内容为零(未对其指定一个值),当PLC起动,进入运行状态时,由于25315会ON一个周期,可把缺省值#0050送入HR00中。
这时,TIM001的设定值即为#0050。
若要改变这个值,可通过编程器或终端设备实现,如将其改为#0060,由于HR有掉电保持功能,PLC停止工作此值可保留。
当程序再起动时,由于HR00的值为#0060,不等于0,25506为OFF,将不执行传送指令。
故这个改后#0060会一直保留。
显然,若再改成别的值,情况也是完全相同的。
设定值也可由输入通道直接确定。
这时输入通道接拨码开关,开关的指示值,即可作为设定值。
如上例,不用HR00,而用000通道,并把000通道的16位与拨码开关(一个开关4位,共接4个开关)的对应点相接。
那么,TIM001的设定值即可由这个拨码开关设定。
这么处理之后,可使定时控制很灵活。
但要使用不少输入点,将增加了硬件开销。
为减少硬件开销,也可通过编码传送,实现一字多用,或一数(digit)多用。
下图参数柔性化设定二所示:
用010通道的00~03位作为编码位,000通道仍接拨码开关,用于产生设定值。
010通道的00~02位,用以选择地址。
三位二进制数可选8个地址。
010通道的03位作传送使能位,它ON,可实现设定值传送。
本例是,当使能位ON时,把000通道的内容(由拨码开关设定)送由010通道00~02指定的地址通道。
本例的地址分别为HR00~HR07。
本例共用了20个输入点,可使8个参数由外部拨码开关确定,是较合算的。
有的PLC,如OMRON的CPMA1机,设有模拟量输入电位器。
电位器旋钮处于不同位置时,可使某特殊继电器(标志字)的通道具有不同的值。
CPM1A机可在0~200(BCD)之间作变化,其有两个电位器,
利用好它,也可使参数的设定实现柔性化,还不占用输入点。
3.动作柔性
这种柔性在于动作与程序的对应关系可以改变,便于工艺过程常要改变的控制对象的使用。
如下图的动作柔性示意图所示,其输入00000~00007对应与1~8共八个波段开关的输出点相联。
波段开关的每一公共输入点分别与00108~00111及00100~00103相联。
PLC的直流24v正端与输入COM端相联,负端与输出的两个COM端相联。
这种接线
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- bcb3