PLC编程实用指南(第3版)
上QQ阅读APP看书,第一时间看更新

2.7 图解法编程

2.7.1 时序图法编程

1.时序图法设计要点

时序图(TIMING DIAGRAMS)也称波形图,是信号随时间变化的图形。横坐标为时间轴,纵坐标为信号值,其取值为0或1。以这种图形为基础,进行PLC程序设计,称时序图法。时序图是,从用示波器分析一些电器硬件工作过程,引申出来的,用它可分析与确定有关逻辑量间的时序关系。

2.时序图法设计步骤

1)画时序图。根据要求,画输入、输出信号的时序图,以建立其间准确的时间对应关系。

2)确定时间区间。找出时间变化的临界点,即输出信号应出现变化的点,并以这些点为界限,把时段划分为若干时间区间。

3)设计定时逻辑。可用多个定时器,建立各个时间区间;也可用秒脉冲计数器,记录时间,然后,再通过比较,建立各个时间区间。

4)确定动作关系。根据各动作与时间区间的对应关系,建立相应的动作逻辑,列出各输出变量的逻辑表达式。这可按输出要求进行的设计,一般为组合逻辑的问题,是不难实现的。

5)画梯形图。依定时逻辑及输出逻辑的表达式,画梯形图。

用时序图法设计的前提为,输入与输出间有对应的时间顺序关系,其各自的变化是按时间顺序展开的。显然,不满足这个前提,无法画时序图,也无从用这个方法设计了。

以下举两个例子,说明如何用本法进行设计。

978-7-111-56641-0-Chapter03-88.jpg

图2-44 喷泉控制简图

3.时序图法设计程序实现

(1)设计喷泉电路

要求设计一个控制喷泉工作的电路。喷泉有A、B、C三组喷头,如图2-44a所示。工作过程应按图2-44b所示,即:起动后,A组先喷5s,后B、C同时喷,5s后B停,再5sC停,而A、B又喷,再2s,C也喷。持续5s后全部停喷。再3sA又重复前述过程。

首先,分配入、出触点。用0002接起动按钮,0003接停止按钮;而A、B、C分别用10.0、10.01、10.02控制。

其次,是设计程序。它是定时控制程序,较适合用本法设计。

1)画出时序图。按设计要求,画输出时序图,如图2-44b所示。

2)确定定时区间。从图知,它有7个临界点,要有6个时间区间,用以作有关输出控制。

3)设计定时逻辑。本例用6个定时器,建立各个时间区间。这6个定时器(TIM00~TIM05)工作时序如图2-45所示。

其工作过程是:0.00ON,起动10.00。进而使定时器TIM0工作。延长5s后,又使定时器TIM1工作……直到TIM5工作后,延时3s,使TIM0 OFF,进而使TIM1 OFF,再进而使TIM2 OFF……,直到使TIM5自身 OFF,定时逻辑复原。复原后,如无停止信号,将又是TIM0工作,又开始新的循环。

与此对应的梯形图如图2-46a所示。

978-7-111-56641-0-Chapter03-89.jpg

图2-45 喷泉控制时序图

978-7-111-56641-0-Chapter03-90.jpg

图2-46 喷泉控制梯形图程序

4)确定动作关系。从图2-46a知,它有6个时间区间。这些区间及其逻辑条件为

区间1,其逻辑条件为:978-7-111-56641-0-Chapter03-91.jpg

区间2,其逻辑条件为:978-7-111-56641-0-Chapter03-92.jpg

区间3,其逻辑条件为:978-7-111-56641-0-Chapter03-93.jpg

区间4,,其逻辑条件为:978-7-111-56641-0-Chapter03-94.jpg

区间5,其逻辑条件为:978-7-111-56641-0-Chapter03-95.jpg

区间6,其逻辑条件为:TIM004。

在这6个区间中,A、B及C的取值,如2-44所示。依图可列出输出变量A(10.02)、B(10.03)及C(10.04)的逻辑表达式。具体是:

978-7-111-56641-0-Chapter03-96.jpg

5)画梯形图。与这个定时逻辑及输出逻辑对应的梯形图,如图2-46b所示。这里,0002为起动信号,它ON后可使10.00ON,并自保持。此即开始了周而复始的定时控制。

开始工作后,若按下停止按钮,这将使0.03ON。0.03ON后,由于1001有自保持,可保持ON状态。到了TIM005ON,其常闭触点978-7-111-56641-0-Chapter03-97.jpg使10.00 OFF。10.00 OFF后,TIM000将不再工作,整个循环停止。同时,10.00的 OFF也将使10.01 OFF,整个电路复原。

图2-46c为用和利时PLC的相关程序。该图start、stop为起动、停止按钮连接的输入位。work、notwork、pA、pB及pC为输出位,分别与图2-46a、b的10.00~10.04对应。T1~T6为定时功能块,分别与图2-46a、b的TIM00~TIM05对应。从与图2-46a、b对比可知,它也完全可实现这个喷泉所要求的控制。

(2)设计一个有顺序要求的一组设备起动停车程序

要求起动时,依次使若干设备起动起来,如每个设备起动间隔10s。而停车也是依次进行,但顺序倒过来,先起动的最后停车。电厂的输煤系统的若干传送带的工作常是这么要求的。

图2-47所示为设计好的程序。它的起动按钮号为0.02,停止按钮号为0.03。以这两个信号为输入,起动两组时间继电器(TIM000~TIM003及TIM010~TIM013)工作。分别产生起动及停车时间序列。

整个时间逻辑以互锁指令保持,当停止时的最后一个时间继电器工作(TIM013ON),则使IL的条件 OFF,这将使电路复原。

而在停止时间序列的起动条件中,加入已完成起动的条件(10.00ON),目的是只有起动后,按停车按钮才有效。

有了这两组时间序列,其起动与时间的对应关系,是组合逻辑问题,可依条件直接列出。本例以此画出的梯形图如2-46所示。

2.7.2 流程图法编程

1.流程图法设计要点

流程图由一系列框图、圆圈及其连线等几何图形组成,以表示各种不同性质的操作。方框代表动作;圆圈代表动作起始位与动作终了;连线代工作表流向;连线中间短线代表一个动作到另一个动作转换的条件。此外,有时也可用菱形表示流程的分支,不同条件有不同的工作流向。这种图,可以把控制对象的工作过程清楚地表示出来,是一种传统的计算机算法表示与程序设计的方法。

978-7-111-56641-0-Chapter03-98.jpg

图2-47 顺序起、逆序停梯形图程序

流程图算法的方便实现可用步(进)指令,PLC多有这个步指令。如实在无步指令,也可用移位、或基本的逻辑指令处理。只是效率较低,也稍麻烦些。此外,用顺序流程图语言也适合于它的编程。

常见流程图如图2-48所示。

(1)顺序流程

图2-48a为顺序流程序。其进程是确定的,只有前一步骤进行后,建立了相应条件,其后续才可继而进行。

(2)条件分支流程

图2-48b为条件分支程序。它依条件不同而改变程序流程。这对应于随机电路。

(3)平行分支流程

图2-48c为平行分支程序。它依条件可进入平行的两个程序流程。

978-7-111-56641-0-Chapter03-99.jpg

图2-48 三种流程图

此外,还可能有循环流程。它的进程达到终点时,又返回到起点。

流程图法适合于动作步骤清晰的系统的控制逻辑设计。它的每一步对应一个动作,而步的转换,则看条件是否满足。所以,流程图画出来了,要求有多少步也就清楚了,而步的转换,有了条件也好设计。

2.流程图法设计步骤

1)依控制对象的工作过程,划分动作步,画动作顺序图。这是动作顺序的图形表示。

2)分配与动作对应的输出地址。分配与步转换条件对应的输入地址。

3)根据动作顺序图设计流程图。要把方框,即动作与O(输出)联系,而条件,即短横线与I(输入)联系。这个图应尽可能详尽,以便于进一步设计。

978-7-111-56641-0-Chapter03-100.jpg

图2-49 机械手工作简图

4)建立步进逻辑程序。如果PLC有步进指令,可用它建立这个程序。若没有,可用移位指令,或直接用逻辑控制指令建立。

5)建立各个的步输出与输入逻辑,以实现控制输出与反馈输入。

3.流程图算法程序实现

以下以图2-49所示机械手工作控制为例,介绍这个算法的程序实现。

图2-49所示为机械手工作简图。其工作过程为:机械手向下,直到A点→夹取工件→上升→右进→下降,直到在B点→松开工件→上升→左退到原位、停止工作。若夹取不到工件,则从A点上升后,不右进,并报警,提示无工件。其设计过程如下:

(1)划分动作步

根据设计要求,本例的动作步简图如图2-50a所示。

978-7-111-56641-0-Chapter03-101.jpg

图2-50 机械手动作过程简图

弄清了设计要求,完成这一步是不难的。只是在这个图上,还要标上进入该步要用的继电器地址。即如图所示LR000、LR001等。

(2)分配输入输出地址

本例的动作(输出)分配如下:

下降——00500ON,下降;OFF,下降停止。

上升——00502ON,上升;OFF,上升停止。

夹紧是用弹簧实现的。0501ON弹簧松开,机械手松工件;0501OFF弹簧夹紧工件。

右移——00503 ON右移;OFF,右移停止。

左移——00504 ON左移;OFF,左移停止。

本例的条件(输入)分配如下:

下限位开关——00401 ON,达下位;OFF离开下位。

上限位开关——00402 ON,达上位;OFF离开上位。

有工件——00405 ON,有工件夹住;OFF,无工件。

右限位——00403 ON,达右位;OFF,离右位。

左限位——00404 ON,达左位;OFF,离左位。

起动——00000 ON起动。

(3)根据动作顺序图设计流程图

图2-50b所示为本例的流程图。与动作简图相比,该图要标注控制输出及反馈输入。从该图可知;

起动后(00000 ON),即进入第一步。这时00500 ON、00501 ON,可使机械手松开,并下降,准备抓取工件。

达到下位(00401 ON)后,使00500、00501 OFF,下降停止,并夹紧工件。为可靠计,应令其延时2s,可以保证夹住工件。为此,此时起动定时器TIM000。定时器定时到,使机械手上升,即0502 ON。

到达上限,即00402 ON后,上升停。判断机械手是否夹到工件。若无工件,00405OFF,它的常闭触点978-7-111-56641-0-Chapter03-102.jpg,即00405的非为 ON,这时产生报警,机械手不再工作。此时,如使00001 ON,可停止报警,并使步进程序结束;若有工件,00405 ON,则机械手右移(00503 ON)。

右移到右位,00403 ON,右移停止,并开始下降,即00504 ON。

下降到下限位,00401 ON,00501 ON,松开。为可靠松开,也延时2s。为此起动定时器TIM001。

TIM001时间到,则00501 OFF,并使00502 ON。前者机械手又夹紧,但已无工件,无关紧要。后者使机械手上升。

到上限位,00402 ON,上升停,并00504 ON,左移。

到左限位,00404 ON,左移到,步进程序结束。又等待00000新命令,再起动新的过程。

(4)建立步进逻辑程序

本例用欧姆龙PLC控制。用它的STEP及SNEX两条步进指令建立步进逻辑程序,如图2-51所示。

从图2-51知,它共有9步。即STEPLR0000~LR0008。另外还有两个停止步,即不带标号的STEP,分划处在SNXTLR0011及SNXTLR0010之后。这意味着,只要执行这两条SNXT,步进程序即行结束。

再者,这里的第4步,即STEPLR0003,有2个分支,用00405的 ON或OFF区分。 ON则转为STEP LR0005,机械手右移。而00405OFF则转为STEPLR0004,报警。若此时使00001 ON,报警停,也使步进程序结束。

(5)用梯形图建立各个的步输出与输入逻辑

具体如图2-51所示。

用步进指令和流程图法进行程序设计是很方便的。而且,为未起动的步,或已复位的步,程序是不扫描的,可减少程序扫描时间,提高程序运行效率。这而且,如在相关的步中,需进行其它控制也容易实现。

978-7-111-56641-0-Chapter03-103.jpg

图2-51 步进逻辑程序

2.7.3 Petri网法编程

1.Petri网诞生

Petri网是一种可以用网状图形表示的系统模型,是卡尔·亚当·佩特里(Carl AdamPetri,1926年7月12日~2010年7月2日,德国数学家、信息学家)发明的。童年时代的Petri,其父老Petri非常鼓励它在科学方面的好奇心。小Petri12岁生日那天,老Petri为儿子买了两本很厚的图文并茂的化学教科书。小Petri一边看此书,一边画自称为“反应流程图”。如果把书里面前一章节的化学反应和下一章节的反应连起来看,可以使化学反应的链条越接越长……从几种简单物质开始……可以变成较为复杂的化合物。它用这个“反应流程图”几乎能将整本无机化学书变成一串串长长的反应链,就像图2-52所示的那样。

978-7-111-56641-0-Chapter03-104.jpg

图2-52 Petri的化学反应流程图

而且,这种反应链可以因为加入物质的种类不同、顺序不同,将产生千变万化的结果。真正科学意义上的Petri网则是Petri在它的博士论文“Kommunikationmit Automaten”(用自动机通信)中提出的。该论文用一种网状模型来描述物理进程和物理系统的组合。此模型后被称之为Petri网。作为一种系统模型,Petri网不仅可刻画系统的结构,而且可以描述系统的动态行为(如系统的状态变化等)。后来又经历它自己和很多人对其不断充实与完善,在深度与广度上都有很大提升,其应用也越来越广泛。而用于PLC编程只是它的众多应用的一个侧面,而且也仅仅是开始。

2.Petri网结构简介

Petri网模型由若干以下元素构成图形。这些元素是库所(Place)、变迁(Transition)、弧(Arc)。库所用于描述系统局部状态,用小圆圈表示;变迁用于描述可使局部状态改变的事件,用短线表示;弧是有向的;用其实现库所和变迁之间的连接,但两个库所或两个变迁之间不允许连接。

在Petri网模型中,还有令牌(Token,也称托肯),包含在库所中,是所包含库所激活的标志,用黑点表示。它在库所中的动态变化表示系统的不同激活状态。

Petri网模型的动态行为是由它的触发规则描述的。当使用等于1的弧的权函数时,如果一个变迁的所有输入库所,这些库所至少包含一个令牌,那么这个变迁事件就有发生权,相关联的事件可以发生。如这时变迁事件发生,则将从它所有的输入库所中消耗一个令牌,而同时在它的每一个输出库所中产生一个令牌,即被激活。当使用大于1的弧的权函数时,在变迁的每一个输入库所中都要包含至少等于连接弧的权函数的令牌个数,它才有发生权。这个变迁的触发将消耗在该变迁的每一个输入库所相应令牌个数,并在变迁的每一个输出库所产生相应令牌个数。变迁的触发是一个原子操作,消耗输入库所的令牌和在输出库所产生令牌是一个不可分割的完整操作。

要指出的还有,Petri与流程图不同的还在于,前者的流程只能一步步被激活,而Petri网则同时有多个库所可具有托肯,即可以同时激活。所以,它不仅适用简单的顺序控制建模,更适用于平行顺序控制系统的建模。

图2-53a所示为Petri网的一个模型实例。它根据图2-49机械手工作简图,参考图2-50遵循Petri网结构原理画出的。

该图有12个库所,13个变迁。每个弧的权函数均为1。初始状态仅P0存有令牌(标志有黑点)、被激活。系统处于待起动工作状态,等待起动按钮按下事件发生。这时如按下按钮(start ON),根据上述结构原理,则t1触发。令牌从P0转移到P1,P1被激活。可执行与其相关的输出(本例即机械手处下行状态),并等待下行位置到(Down XK ON)事件发生。

在库所P1,如Down XK ON,则t2触发。令牌从P1转移到P2,P2被激活。可执行与其相关的输出(本例即机械手处下行状态),并等待下行位置到(Down XK ON)事件发生。

……

在库所P4,判断有没有抓取到零件。Click XK ON,抓到零件,OFF没有抓到。抓到零件,t5触发,令牌转移到库所P6,P6激活。

……

直到库所P9。这时状态左行,并等待左行到(LeftXKON)。如到回到初始库所P0,P0激活。

在库所P4,判断有没有抓取到零件。如ClickXK OFF,没有抓到,t10触发,令牌转移到库所P10,P10激活。报警,并启动定时功能块。定时时间到t02触发,令牌转回到P0,P0激活。系统回到原始状态。

除了上述简单的文字表述,Petri网还有严格的数学定义。而且,除了可用图形表示,还可用数学表达式表示。复杂的Petri更是这样。此外还有很多有关特性的论证等。这些较深入的问题读者可参阅有关专著。

3.Petri网在PLC编程中应用

(1)用于单资源单用户系统顺序控制编程

其设计步骤如下:

978-7-111-56641-0-Chapter03-105.jpg

图2-53 机械手工作Petri网模型与SFC程序

1)按照规定的工作顺序,仿照流程图方法设计出基本Petri网。图2-53a就是这么设计成的。

2)分配输入输出地址。以图2-53为例,其库所(输出)用变量定义代表。此地址可以PLCAT(实际地址)关联,也可不关联。如后者则实际运行时还要编写输出转换程序。具体地址有:

Down(下降)——ON,下降;OFF,下降停止。

Up(上升)——上升;OFF,上升停止。

Clip(判断夹到零件紧否)——是用弹簧实现的。弹簧松开,机械手松工件;OFF弹簧夹紧工件。

Right(右行)——ON右行;OFF,右行停止。

Left(左行)——ON左行;OFF,左行停止。

Hold(夹紧零件)——是用弹簧实现的。弹簧松开,机械手松工件;OFF弹簧夹紧工件。

本例的转移(输入)分配如下:

下限位开关——DownXKON,达下位;OFF已离开下位

上限位开关——UpXK,达上位;OFF已离开上位

有工件——ClipXKON,有工件夹住;OFF,无工件。

右限位——RightXKON,达右位;OFF,已离右位。

松开夹头(Hold),ON夹住,OFF松开。

左限位——Left XK ON,达左位;OFF,离左位。

起动——start ON起动。

3)列写变量间的逻辑关系。用的是文本结构语言。转移的逻辑表达式见图2-53a。如“t1:=start;”。输出与库所的逻辑关系也见图2-53a。如“Down:=P0;”。

4)选择编程语言编程。本例用SFC语言。因为它就是从Petri网引申而来。用起来很方便。具体用和利时(ABB也可)PLC,程序见图2-53b。所用变量声明如下:

978-7-111-56641-0-Chapter03-106.jpg

978-7-111-56641-0-Chapter03-107.jpg

这里各个步要执行的程序选用st语言,分别为

P0步程序:t1:=start;

P1步程序:down:=P1;t2:=DownXK;

P2步程序:Hold:=NOTP2;TON1.IN:=P2;TON1(PT:=t#5S);t3:=TON1.Q;

P3步程序:UP:=P3;t4:=UpXK;

P4步程序:t5:=ClipXK;t10:=NOTClipXK;

P5步程序:Rght:=P5;t6:=RightXK;

P6步程序:Down:=P6;t7:=DownXK;

P7步程序:Hold:=P7;TON2.IN:=P7;TON2(PT:=t#2S);t8:=TON2.Q;

P8步程序:UP:=P8;t9:=UpXK;

P9步程序:Lft:=P9;t01:=LeftXK;

P10步程序:Alrm:=P10;TON3.IN:=P10;TON3(PT:=t#5S);

t02:=TON3.Q;

(2)用于多资源单用户系统编程

这里的问题是如何使所有资源能得以合理的使用。以供水系统为例,如有两个水泵向系统供水,正常情况多是一个泵工作,另一个备用。水压不足时备用也可同时参与供水。为了两个泵的负荷均等,最好两泵能定时交换角色。图2-54a所示就是为此而设计的Petri网模型。

该图设计有5个库所,7个变迁。5个库所分别代表系统可能的5种工作状态。P0等待工作,P1泵1工作,P2泵2工作,P12泵1先工作,泵2也接着工作,P21泵2先工作,泵1也接着工作。7个变迁含义见后。每个弧的权函数也均为1。

初始状态仅P0存有令牌(标志右黑点)、被激活。系统处于待启动工作状态,等待起动按钮按下事件发生。

978-7-111-56641-0-Chapter03-108.jpg

图2-54 两泵均荷工作Petri网模型机SFC程序

这时如按下按钮(start ON),根据上述结构原理,则t1触发。令牌从P0转移到P1,P1被激活,可执行与其相关的输出(本例为泵1工作,并启动定时功能块TON1),并等待可能的两个事件之一发生。这两个事件一是泵1工作时间到(TON1.QON),另一是供水压力不足(PDown ON)。

如为前者发生,则库所P1令牌转移到P2,P2激活,可执行与其相关的输出(本例为泵2工作,并起动定时功能块TON2)。即这时,泵2供水,泵1停工。

如为后者发生,则库所P1令牌转移到P12,P12激活,可执行与其相关的输出(本例为泵1、2同时工作)。

在库所P2,也是等待可能的两个事件之一发生。这两个事件一是泵2工作时间到(TON1.QON),另一是供水压力不足(PDown ON)。前者将供水工作交给泵1。后者则起动泵1也参与供水。

在库所P12、P21则都是等待一个事件发生。这事件是压力高(PHight ON)。如此事件发生,如库所P12激活,则令牌转移到P2。轮为P2工作。而库所P21激活,则令牌转移到P1,轮为P2工作。

当然任何时候按下停止按钮(Stop ON),则系统回到P0,机原始状态。不过此转移改图为示出。

从上述对Petri网面向的设计可知,它是能够是两泵的负荷可基本均衡。

图2-54b为它的SFC程序。其所用变量定义如下:

978-7-111-56641-0-Chapter03-109.jpg

这里各个步要执行的程序选用st语言,分别为

P0步程序:t1:=start;

P1步程序:work1:=P1;TON1.IN:=P1;TON1(PT:=t#8h);t2:=TON1.Q;t12:=PDown;

P2步程序:work2:=P2;TON2.IN:=P2;TON2(PT:=t#8h);t2:=TON2.Q;t21:=PDown;

P12步程序:Work1:=P12;Work2:=P12;t2:=PHigh;

P21步程序:Work1:=P12;Work2:=P12;t1:=PHigh;

(3)用于单资源多用户系统编程

电梯算是单资源多用户系统一个简单实例。当不同用户同时调用电梯就存在争用的问题。只是这里用户使用权的争抢,可以通过适当排队及等待解决。所以,还算比较简单。图2-55a所示为它的Petri网模型。

978-7-111-56641-0-Chapter03-110.jpg

图2-55 电梯控制Petri网模型

从图2-55知,这里共设计有6个库所、12变迁及其相应的连接弧。每个弧的权函数均为1。库所P0为系统的初始状态。存有一个令牌。只要系统起动(一般为起动按钮startON时间发生0),可使变迁t1触发,令牌将从P0转移到P1,P1被激活。可执行与其相关的输出,并等待触发t11或t21事件发生。

本例库所P1用以等待电梯的控制命令,即要检测与计算有多少用户要上行,有多少用户要下行。如检测与计算的结果,上行的用户多,则使t11触发。令牌将转移到P11。反之,则使t21触发,令牌转移到P21。而如果没有任何用户调用,则什么事件也不发生,电梯处于等待工作状态。

如令牌进入P11,则P11激活。将执行电梯上升指令,电梯进入上升状态,并等待上升用户中,离电梯所在楼层最近的楼层的到位行程开关ON事件发生。而此事件一旦发生,转移t1e触发。令牌从P11转移到P1e,P1e被激活。使电梯停车及执行开、关桥箱门等动作,并等待可能使转移t11或t21或t1触发的事件发生。如触发t11的事件发生,则令牌回到P11,继续进入上升状态。如触发t21的事件发生,则令牌转移到P21,电梯将下降。如触发t1的事件发生,则令牌回到P1,继续系统又进入等待状态。

如令牌进入P21,则P21激活。将执行电梯下降指令,电梯进入下降状态,并等待下降用户中,离电梯所在楼层最近的楼层的到位行程开关ON事件发生。而此事件一旦发生,转移t2e触发。令牌从P21转移到P2e,P2e被激活。使电梯停车及执行开、关桥箱门等动作,并等待可能使转移t21或t11或t1触发的事件发生……

在所有库所如遇有按钮stop按下事件发生吧,系统将回到库所P0,回到原始状态。不过此转移及相关的连接弧未在该图画出。

实现本模型的SFC程序见图2-55b。该图各个库所的具体程序要涉及很多有关电梯工作控制的细节,不便具体说明。这里略。

(4)用于其它单资源多用户系统及多资源多用户系统控制的PLC编程

在柔性制造系统中,有多台加工中心共用一个机械手与传输线,也是单资源多用户。但它的多用户还各有自身的顺序工作,对机械手与传输线的占用只是各个加工中心工作流程的一部分。再就是多层多电梯控制控制系统,情况也复杂。这些系统的就不只一个令牌在库所间转移了。Petri图画起来也很不易。估计还得求救于数学表达了。这些较深入的问题,很多还有待研究,有的控制也不是仅仅使用一台PLC所能完成的。这里也不再进一步讨论了。

4.Petri网在PLC编程中注意问题

1)确定好库所、变迁机相关连接弧。这是使用Petri网对控制系统建模首先要处理的问题。库所主要根据系统可能的局部状态确定。变迁则根据引起局部状态改变的事件确定。同时,还要根据输入输出关系,确定库所与变迁机变迁之间的连接弧。当然,初始状态的令牌也要确定好。完成上述几步就可以画出具体的Petri网模型了。这里的关键是,要分析好系统,“确定”要恰当,库所不能太细,那样图将非常复杂,但也不能太粗,那样编程程序实现也不容易。另外,有的系统库所与转移还不便划分。有时两者可能都可用。这时,更要仔细斟酌。可从多个方案中优选一个。

再就是,系统很复杂,库所、转移很多,连接弧的又很复杂。那样,可能很难用图形表达了。这时可借用数学表达式定义网。这也是其它图形方法编程所具备的优势。

2)所设计的模型还要做检查。看看是否所有库所都有被激活的机会,即所谓“可达性”检查。如Petri模型存在不可达的库所,当然是不可取的。此外,还可检查是否有“冲突”,以至于出现死锁,这在多个令牌在网中出现时很可能出现的情况。尽管简单地看,所有库所都可达,但个别情况出现时,可能系统“卡住”了。令牌转移不了了。这当然也是要避免的。

对Petri网特性的检查也可使用数学方法。这比单纯通过图形检查可能更全面与简便。

3)Petri网模型检查通过后就是选择编程语言。建议使用SFC语言。它本身就是Petri网模型的延伸,实现Petri模型是很方便的。此外,还有I/O地址分配,变量的声明与使用等,都是PLC编程所需解决的问题。自然也要一一处理好。

目前,使用Petri模型编程随只是开始,但发展很快。国外甚至已有用于检查Petri网模型特性及转换为PLC程序软件。有的还可从互联网上下载。