配色: 字号:
S7-200设计应用
2012-12-30 | 阅:  转:  |  分享 
  
第4章S7-200PLC的系统设计与应用

4.1系统设计方法

1.系统设计的原则

任何一种电气控制系统都是为了实现被控对象的要求,以提高生产效率和产品质量。在可编程序控制器的系统设计时也应该把这个问题放到首位。PLC系统设计应当遵循以下原则。

(1)满足要求

最大限度地满足被控对象的控制要求,是设计控制系统的首要前提。这也是设计中最重要的一条原则。这就要求设计人员在设计前就要深入现场进行调查研究。收集控制现场的资料,收集控制过程中有效的控制经验,收集与本控制系统有关的先进的国内、国外资料,进行系统设计。同时要注意要和现场的工程管理人员、工程技术人员、现场工程操作人员紧密配合,拟定控制方案,共同解决设计中的重点问题和疑难问题。

(2)安全可靠

控制系统长期运行中能否达到安全、可靠、稳定,是设计控制系统的重要原则。这就要求设计要考虑控制系统能够长期安全、可靠、稳定运行。为了能达到这一点,要求在系统设计上,器件选择上,软件编程上要全面考虑。比如说,在硬件和软件的设计上应该保证PLC程序不仅在正常条件下能正确运行,而且在一些非正常情况下(如突然掉电再上电,按钮按错),也能正常工作。程序能接受并且只能接受合法操作,对非法操作程序能予以拒绝等等。

(3)经济实用

经济运行也是系统设计的一项重要原则。一个新的控制工程固然能提高产品的质量,提高产品的数量,从而为工程带来巨大的经济效益和社会效益。但是,新工程的投入、技术的培训、设备的维护也会导致工程的投入和运行资金的增加。在满足控制要求的前提下,一方面要注意不断地扩大工程的效益,另一方面也要注意不断地降低工程的成本。这就要求,不仅应该使控制系统简单、经济,而且要使控制系统的使用和维护即方便又低成本。

(4)适应发展

社会在不断地前进,科学在不断地发展,控制系统的要求也一定会不断地在提高、不断地在完善。因此,在控制系统的设计时要考虑到今后的发展、完善。这就要求在选择PLC机型和输入/输出模块要能适应发展的需要,要适当留有余量。

2系统设计的内容

(1)选择机型

目前,可编程序控制器产品种类繁多,同一个公司生产出的PLC也常常推出系列产品。这需要用户去选择最适合自己要求的产品。正确选择产品中,首要的是选定机型。

根据系统类型选择机型

从选机型的角度看,控制系统可以分成单体控制小系统、慢过程大系统和快速控制大系统。这些系统在PLC的选型上是有区别的。

·单体控制的小系统:这种系统一般使用一台可编程序控制器就能完成控制要求,控制对象常常是一台设备或多台设备中的一个功能。如对原有系统的改造、完善或改进原有设备的某方面功能等等。这种系统对可编程序控制器间的通信问题要求不高,甚至没有要求。但有时功能要求全面,容量要求变化大,有些还要与原设备系统的其它机器连接。对这类系统的机型选择要注意三种情况。

一是设备集中,设备的功率较小,如机床。这时需选用局部式结构,低电压高密度输入输出模板。

二是设备分散,设备的功率较大,如料场设备。这时需选用离散式结构,高电压低密度输入输出模板。

三是有专门要求的设备,如飞剪。这时输入输出容量不是关键参数,更重要的是控制速度功能,选用高速计数功能模板。

·慢过程大系统:对运行速度要求不高但设备间有连锁关系,设备距离远,控制动作多,如大型料场、高炉、码头、大型车站信号控制;也有的设备本身对运行速度要求高,但是部分子系统要求并不高,如大型热连续轧钢厂、冷连续轧钢厂中的辅助生产机组和供油系统、供风系统等。对这一类型对象,一般不选用大型机,因为它编程、调试都不方便,一旦发生故障,影响面也大。一般都采用多台中小机型和低速网相连接。由于现代生产的控制器多为插件式模板结构,它的价格是随输入输出板数和智能模板数的多少决定的。同一种机型输入输出点数少,则价格便宜,反之则贵。所以一般使用网络相连后就不必要选大型机。这样选用每一台中小型可编程序控制器控制一台单体设备,功能简化,程序好编,调试容易,运行中一旦发生故障影响面小,且容易查找。例如东北建筑设计院和东北大学为鞍山市小型砌块厂和鞍钢矿碴厂设计的砌块自动生产线就是采取这种结构进行控制的。其中成型机、升板机、降板机、排块机、码垛机、大车、小车每个部分都是采用了一台小型PLC控制。在这个系统中每个生产设备都由一台可编程序控制器完成控制任务,然后用网络把整个系统管理起来。这种结构,所用控制器的台数虽然多些,但程序编写省时,调试方便,故障影响面小。从总体上看是合理的,可满足系统要求,价格也便宜。

·快速控制大系统:随着可编程序控制器在工业领域应用的不断扩大,在中小型的快速系统中,可编程序控制器不仅仅完成逻辑控制和主令控制,它已逐步进入了设备控制级,如高速线材,中低速热连轧等速度控制系统。在这样的系统中即使选用输入输出容量大、运行速度快、计算功能强的一台大型可编程序控制器也难以满足控制要求。如用多台可编程序控制器,则有互相间信息交换与系统响应要求快的矛盾。采用可靠的高速网能满足系统信息快速交换的要求。高速网一般价格都很贵,适用于有大量信息交换的系统。

对信息交换速度要求高,但交换的信息又不太多的系统,也可以采用可编程序控制器的输出端口与另一台可编程序控制器的输入端口硬件互联,通过输出输入直接传送信息,这样传送速度快而且可靠。当然传送的信息不能太多,否则输入输出点占用太多。

2)根据控制对象选择机型:

对控制对象要求进行估计,对确定机型十分重要。根据控制对象要求的输入/输出点数的多少,可以估计出PLC的规模。根据控制对象的特殊要求,可以估计出PLC的性能。根据控制对象的操作规则可以估计出控制程序所占内存的容量。有了这些初步估计,会使得机型选择的可行性更大了。为了对控制对象进行粗估,首先要了解下列问题。

·对输入/输出点数的估计:为了正确地估计输入/输出点数,需要了解下面问题。

对开关量输入,按参数等级分类统计。

对开关量输出,按输出功率要求及其它参数分类统计。

对模拟量输出/输入,按点数进行粗估。

·对PLC性能要求的估计:为了正确地估计PLC性能要求,需要了解下面问题。

是否有特殊控制功能要求,如高速计数器等。

机房离现场的最远距离为多少?

现场对控制器响应速度有何要求。

在此基础上选择控制器时尚需注意两个问题。其一是PLC可带I/O点数。有的手册或产品目录单上给出的最大输入点数或最大输出点数,常意味着只插输入模块或只插输出模块的容量,即实际给出的是输入输出容量之和,有时也称为扫描容量,需格外注意。其二是PLC通讯距离和速度。手册上给出的覆盖距离,有时叫最大距离,包括远程I/O板在内达到的距离。但远程I/O板的I/O反应速度大大下降,一般为19.2k波特率。

·对所需内存容量的估计:用户程序所需内存与下列因素有关。

逻辑量输入输出点数的估计。

模拟量输入输出点数的估计。

内存利用率的估计。

程序编制者的编程水平的估计。

程序中的各条指令最后都是以机器语言的形式存放在内存中。控制系统中输入输出点数和存放该系统用户机器语言与所占用的内存数字之比称为内存利用率。内存利用率与编程水平有关。内存利用率的提高会使同样程序减少内存容量,从而降低内存投资、缩短周期时间、从而提高系统的响应时间。

从上面内容的综合可以选择出合适的机型。

当然,最后还要校验一下所用电源的容量。在校验电源容量时,要注意PLC系统所需电流一定要在电源限定电流之内。如果满足不了这个条件,解决的办法只能有三个。其一是更换电源。其二是调整I/0模块。其三是更换PLC系统。

在机型选定之后就要确定接口设备。PLC的接口设备的选择如何,对控制系统的功能至关重要。

(2)选择接口设备

目前PLC的产品很多,在选择机型和接口设备时要注意选择质量好,控制可靠的产品。这里所说的接口设备包含两类。一类是PLC自身的I/O模块、功能模块,一类是和接口模块相连的外部设备。对于PLC自身的模块的选择主要注意两个问题。

一是和PLC能否很好块对接。这一点请注意模块的型号、规格要配套。最好类型、型号一致。这样才能使对接的方便、可靠、稳定。

二是这些模块能和外部设备对接。这就考虑到模块和外部设备要匹配,要性能匹配、速度匹配、电平匹配。不仅要注意它们稳态特性,也要注意它们的动态特性。

在系统的硬件选定之后,主要的问题是程序设计。为了能够便于程序设计,便于日常维护,合理地分配输入/输出点、恰当地对输入/输出点进行命名、完整地编制输入输出变量表是必要的。

(3)分配输入输出点

机型选好之后,系统设计人员需慎重考虑输入输出定义问题。所谓输入输出定义是指整体输入输出点的分布和每个输入输出点的名称定义,它们会给程序编制、系统调试和文本打印等带来很多方便。

1)单台PLC系统的输入输出点的分配

设一台可编程序控制器完成多个功能,若把输入输出点统一按顺序排列,则会给编写程序与调试程序带来不便。例如用一台S7-224可编程序控制器配有五个EM223(l6入/16出)I/0模块,输入容量为94点,输出容量为90点。用这样一台PLC去控制五台交流电动机的启动,每台交流机的输入点有14个,其中启动连锁条件8点,启停命令6点(点动、手动与自动)。每台交流机的输出点有6个,其中启动输出和停止输出点共2个,与电机同时启动的电磁阀2个,显示灯2个。这样,输入输出点的分布可按表4-1-1进行。从表4-1-1中可以看出,有的电机的控制由一个EM223模块完成,有的电机的控制由四个EM223模块完成。这样分配I/0点,使得I/0模块与各个电机之间的联系比较混乱,有的电机涉及到多个模块,使得编程不方便,也不便于检查和维修。

表4-1-1

模块 CPU-224 EM223-1 EM223-1~2 EM223-1~3 EM223-2~4 EM223-2~5 输入点 I0.0~I1.5 I2.0~I3.5 I3.6~I5.3 I5.4~I7.1 I7.2~I8.7 I9.0~I10.5 输出点 Q0.0~Q1.1 Q2.0~Q2.5 Q2.6~Q3.3 Q3.4~Q4.1 Q4.2~Q4.7 Q5.0~Q5.5 控制 主令控制 1号电机 2号电机 3号电机 4号电机 5号电机

如果把输入输出点分组按顺序排列,会给编写程序与调试程序带来方便。在这种情况下,按控制设备把输入、输出点分组,同一个设备的输入/输出点相对的集中。例如上面问题,用一台S7-224可编程序控制器配有五个EM223(l6入/16出)I/0模块,输入容量为94点,输出容量为90点。用这样一台PLC去控制五台交流机的启动。主机上的I/O分为一组,供主令控制使用。五个I/O模块各为一组,分别为五台电机控制使用。这样,输入输出点的分布可按表4-1-2进行。从表4-1-2中可以看出,每个电机的控制分别由各自对应的EM223模块的I/O点实现。这样分配I/0点,可使得每个EM223模块控制其中一个电机。这样电机和I/0模块之间的关系一目了然,便于编程,便于检查和维修。

表4-1-2

模块 CPU-224 EM223-1 EM223-2 EM223-3 EM223-4 EM223-5 输入点 I0.0~I1.5 I2.0~I3.5 I4.0~I5.5 I6.0~I7.5 I8.0~I9.5 I10.0~I11.5 输出点 Q0.0~Q1.1 Q2.0~Q2.5 Q4.0~Q4.5 Q6.0~Q6.5 Q8.0~Q8.5 Q10.0~Q10.5 控制 主令控制 1号电机 2号电机 3号电机 4号电机 5号电机

2)多台PLC系统中输入输出点的分配

在多台可编程序控制器系统中,设计人员应根据整体控制上的要求,按控制类别输入输出统一分组,规定出每台可编程序控制器都要遵循的原则,表4-1-3列出一个系统由S7-200可编程序控制器组成,对某自动化生产线的五道工序进行控制。这五道工序虽然控制内容不同,所用设备也很不相同。但是所控制的对象总起来可以分几类,比如各工序的控制器都有控制台、电源、电机、输入检测信号、输出控制信号等等。如果能按类对各台PLC的输入/输出统一分组,统一编号,则可以十分有利于编和维修。

表4-1-3

输入范围 控制对象 输出范围 控制对象 I0.0 控制台启动操作 Q0.0 控制台启动显示 I0.1 启动电机 Q0.1 电源显示 I0.2 停止电机 Q0.2 操作方式显示 I0.3 故障复位 Q0.3 电机运行显示 I0.4 紧急停车 Q0.4 故障显示 … … … … I1.0 输入检测信号 Q1.0 输出控制信号 I1.1 … Q1.1 … … … … …

(4)建立输入输出变量表

1)输入输出点信号名称定义

输入/输出点名称定义要简短,明确,合理。下面提出逻辑变量在名称定义时应当注意的问题。

·信号的有效状态:

逻辑变量有“0”和“1”两个值。有些信号在“1”状态有效,有些信号在“0”状态有效。在名称定义上也有对“1”信号有效还是对“0"信号有效的问题。

·信号有效方式:

在实际控制中,有的是持续状态有效,有些则是信号发生变化时有效。所谓持续状态有效,作为逻辑条件,信号状态必须保持,这类信号如扳动开关,极限连锁信号,继电器和接触器的辅助触点,带锁定的按钮等。在编程序时,使用的是信号的状态。例如I0.0=1时系统启动,I0.1=0系统停止。

信号状态变化有效是指信号由一种状态向另一种状态变化时,发出的控制要求。这类信号多为引起设备停车的故障信号和不带锁定的按钮,当一个电机的启动和停止由两个按钮完成的时候,就是这种情况。电机启动按钮是能自动回位的常开节点,按下启动按钮时,I2.0的状态由“0”变为“1”,发出电机启动要求,抬起时启动按钮,I2.0自动复位由“1”变“0”,已不再影响对电机的控制。

处理上升沿有效和下降沿有效的方法是靠信号变化产生一个周期长的脉冲,用该脉冲信号发出控制命令。有的厂家专门为这种控制准备了一条产生脉冲的指令。在没有类似指令时,则用户可以用基本指令编一个程序去产生信号脉冲。

2)绘制输入输出变量表

在对输入输出进行分配和名称定义之后,要把输入输出变量列表,以备编程时使用。表内应将模块端子,地址号与信号名称一一对应。典型输入输出表见表4-1-4。

表4-1-4

模块号 输入端子号 输出端子号 地址号 信号名称 说明 CPU224 1

2

···



··· I0.0

I0.1

··· 系统运行,“1”有效

系统停止,“0”有效

··· 主令开关1控制

主令开关2控制

··· EM223-1 1

···

··· I2.0

··· 1号电机启动,上升沿有效

··· 按钮1控制

··· EM223-2 ··· ··· ··· ··· ··· ··· ··· ··· ··· ··· ···

3)建立内存变量分配表

输入输出点占用PLC的一部分内存单元,即输入输出映像区。此外,一个应用程序还会用到定时器、计数器和一系列的PLC内部变量。在编制程序之前,对于程序可能用到的各种变量都要充分考虑,并建立内存变量分配表。内存变量分配表包含了程序中所用到的全部元件和变量,它是阅读程序、查找故障的依据。如果把内存变量分配表写到S7-200的符号表内,就可以用变量名称代替变量地址编写程序。



4.2S7-200编程方法

在编制程序时首先要根据整个工程的要求把程序分块,其次是合理利用指令,严格注意信号名称定义,恰如其分地编写各个程序块的程序。然后经过单元调试,软硬件联调与系统总调,对程序进行修改。编好的程序还必须经过一定时间的运行考验,才可以投入实际现场工作。

1S7-200的程序结构

S7-200的程序结构有两种,即线性结构和分块结构。在程序设计叫线性程序设计和分块程序设计。

(1)线性程序设计

线性程序设计就是把工程中需要控制的任务按照工艺要求书写在主程序(0B1)中。例如一个控制工程共有四个控制任务分别为,任务A控制、任务B控制、任务C控制和任务D控制。线性程序设计就是把这4个控制程序按照要求编写在一个主程序中,如图3-3-1所示。

线性程序的结构简单,分析起来一目了然。这种结构适用于编写一些规模较小,运行过程比较简单的控制程序。对于一些控制规模较大,运行过程比较复杂的控制程序,特别是分支较多的控制程序则不宜选用这种结构。

(2)分块程序设计

分块结构的程序是根据工程的特点,把一个复杂的控制工程分成多个比较简单的、规模较小的控制任务。可以把这些控制任务分配给一个个子程序块。在子程序中编制具体任务的控制程序,最后由主程序利用调用的方式把整个控制程序统管起来,如图3-3-2所示。

可以看出分块程序有更大的灵活性,适用于比较复杂、规模较大的控制工程的程序设计。由于具体任务的控制程序分别在各自的子程序中编制,而具体任务的控制程序相对来说都比较简单,用比较简单的线性程序就能够实现,因而可以使程序的编制相对容易。而且,如果觉得用一个线性程序编制具体任务的控制程序还有困难时,可以在编制具体任务控制程序时,再一次使用分块结构编程,因而使编程简单容易。另外,分块程序也给程序的调试造成方便。由于程序是分块的,调试程序也可以分块进行,等局部程序调试完之后,再总体合成。可以看出,分块结构便于调试。当工艺发在变化时,只需要修改变化部分的程序。分块结构的应用最广泛。

2.S7-200的编程

在了解了PLC程序结构之后,就要具体的编制程序了。编制PLC控制程序的方法很多,这里主要介绍几种典型的编程方法。

(l)图解法编程

图解法是靠画图进行PLC程序设计。常见的主要有梯形图法、逻辑流程图法、时序流程图法和步进顺控法。

·梯形图法:梯形图法是用梯形图语言去编制PLC程序。这是一种模仿继电器控制系统的编程方法。其图形甚至元件名称都与继电器控制电路十分相近。这种方法很容易地就可以把原继电器控制电路移植成PLC的梯形图语言。这对于熟悉继电器控制的人来说是最方便的一种编程方法。

·逻辑流程图法:逻辑流程图法是用逻辑框图表示PLC程序的执行过程,反应输入与输出的关系。逻辑流程图法是把系统的工艺流程,用逻辑方框图表示出来形成系统的逻辑方框图。这种方法编制的PLC控制程序逻辑思路清晰、输入与输出的因果关系及连锁条件明确。逻辑流程图会使整个程序脉络请楚,便于分析控制程序、便于查找故障点、便于调试程序和维修程序。有时对一个复杂的程序,直接用语句表和用梯形图编程可能觉得难以下手。则可以先画出逻辑流程图,再为逻辑流程图的各个部分用语句表和梯形图编制PLC应用程序。

·时序流程图法:时序流程图法是首先画出控制系统的时序图(即到某一个时间应该进行哪项控制的控制时序图),再根据时序关系画出对应的控制任务的程序框图,最后把程序框图写成PLC程序。时序流程图法很适合于以时间为基准的控制系统的编程方法。

·步进顺控法:步进顺控法是在顺控指令的配合下设计复杂的控制程序。一般比较复杂的程序,都可以分成若干个功能比较简单的程序段,一个程序段可以看成整个控制过程中的一步。从这个角度去看,一个复杂的系统的控制过程是由这样若干个步组成的。系统控制的任务实际上可以认为在不同时刻或者在不同进程中去完成对各个步的控制。为此不少PLC生产厂家在自己的PLC中增加了步进顺控指令。在画完各个步进的状态流程图之后,可以利用步进顺控指令方便地编写出控制程序。

(2)经验法编程

经验法是运用自己的或别人的经验进行设计。多数是设计前先选择与自己工艺要求相近的程序,把这些程序看成是自己的“试验程序”。结合自己工程的情况,对这些“试验程序”逐一修改,使之适合自己的工程要求。这里所说的经验,有的是来自自己的经验总结,有的可能是别人的设计经验,有的也可能是来自其它资料的典型程序。要想使自己有更多的经验,就需要日积月累,善于总结。

(3)计算机辅助设计编程

计算机辅助设计是通过PLC编程软件在计算机上进行程序设计、离线或在线编程、离线仿真和在线调试等等。S7-200的编程软件“STEP7-Micro/WIN32”3.0版本是基于Windows平台的应用软件。它支持Windows95,Windows98和WindowsNT使用环境。是S7-200系列PLC编程专用软件。使用这些编程软件可以十分方便地在计算机上离线或在线编程、在线调试,使用这些编程软件可以十分方便地在计算机上进行程序的存取、加密以及形成EXE运行文件。

3.S7-200的编程步骤

在了解了程序结构和编程序方法的基础上,就要实际地编写PLC程序了。编写PLC程序和编写其它计算机程序一样,都需要经历如下过程。

(1)对系统任务分块

分块的目的就是把一个复杂的工程,分解成多个比较简单的小的任务。这样就把一个复杂的、大的问题化为多个简单的、小的问题。这样是便于编制程序。

(2)编制控制系统的逻辑关系图

从逻辑关系图上可以反应出某一逻辑关系的结果是什么,这一结果又应该导出哪些动作。这个逻辑关系可以是以各个控制活动顺序为基准,也可能是以整个活动的时间节拍为准。逻辑关系图反映了控制过程中控制作用与被控对象的活动,反映了输入与输出的关系。

(3)绘制各种电路图

绘制电路的目的是把系统的输入输出所设计的地址和名称联系起来。这是很关键的一步。在绘制PLC的输入电路时,不仅要考虑到信号的连接点是否与命名一致,还要考虑到输入端的电压和电流是否合适,也要考虑到在特殊条件下运行的可靠性与稳定条件等问题。特别要考虑到能否把高压引导到PLC的输入端,把高压引入PLC的输入端会对PLC造成比较大的伤害。在绘制PLC的输出电路时,不仅要考虑到输出信号的连接点是否与命名一致,还要考虑到PLC输出模块的带负载能力和耐电压能力。除此之外还要考虑到电源的输出功率和极性问题。在整个电路的绘制中还要考虑就设计的原则,努力提高其稳定性和可靠性。虽然用PLC进行控制方便、灵活。但是在电路的设计上仍然需要紧慎、全面。因此,在绘制电路图时要考虑周全,何处该装按钮,何处该装开关,都要一丝不苟。

(4)编制PLC程序并进行模拟调试

在绘制完电路图之后就可以着手编制PLC程序了。当然可以用上述方法编程。在编程时除了要注意程序要正确、可靠之外,还要考虑程序要简捷、省时、便于阅读、便于修改。编好一个程序块要进行模拟实验,这样便于查找问题,便于及时修改,最好不要整个程序完成后一起算总帐。

(5)制作控制台与控制柜

在绘制完电路、程序编完之后就可以制作控制台和控制柜了。在时间紧张的时候,这项工作也可以和编制程序并列进行。在制作控制台和控制柜的时候要注意选择开关、按钮、继电器等器件的质量,规格必须满足要求。设备的安装必须注意安全、可靠。比如说屏蔽问题、接地问题、高压隔离等等问题必须妥善处理。

(6)现场调试

现场调试是整个控制系统完成的重要环节。任何程序的设计很难说不经过现场调试就能使用的。只有通过现场调试才能发现控制回路和控制程序不能满足系统要求之处;只有通过现场调试才能发现控制电路和控制程序发生矛盾之处;只有进行现场调试才能最后实地测试和最后调整控制电路和控制程序,以适应控制系统要求。

(7)编写技术文件并现场试运行

经过现场调试以后,控制电路和控制程序基本被确定了,整个系统的硬件和软件基本没有问题了。这时就要全面整理技术文件,包括整理电路图、PLC程序、使用说明及帮助文件。到此全部工作结束。



4.3S7-200用于开关量控制系统

1.关于开关量控制系统

开关量控制是指控制系统的输入信号和输出信都是只有两个状态的开关量。这类控制系统又可以分为手动控制、半自动控制和自动控制。

·手动控制

控制过程主要靠手动去实现。只是有些个别环节,如连锁保护、过限保护等环节可以自动实现。手动控制是一种最基本的控制方法,特别是系统在调试过程中、在维修过程中是必不可少的。

·半自动控制

这种控制的特点是一旦控制系统被启动起来之后,控制过程将自动完成。不须要人工去干预。但是,当一个周期完成以后,它会停止而不会继续启动系统运行。如果系统需要再次启动,则必须再次人工启动。所以有时把这种控制又叫做单次控制。这种系统在实际控制中很常见,它比手动控制方便,速度也很快。虽然比自动控制速度慢一些,但是,它在控制过程中进行参数的修改、调整比自动控制更方便。

·自动控制

一旦系统启动之后,就可以按照工程要求进行控制。整个控制过程无人工干预。一个循环之后可以自动启动下一个循环。于整个过程无需人工干预,则对整个系统的输入/输出要求都很严格,系统的可靠性、安全性设计尤为重要。

2.开关量控制系统设计举例

例4-3-1图4-3-1是一个机械手的顺序控制系统。

·控制要求:

机械手一个循环周期可分为八步。第一步是当工作台A上有工件出现时(可以由光电耦合器PH检测到,当检测到有工件时I1.5=1),机械手开始下降。当机械手下降到位时(可以由限位开关检测到,当下降到位时I0.5=1),机械手停止下降,第一步结束。第二步是机械手在最低位开始抓紧工件,约l0秒钟抓住、抓紧,第二步结束。第三步是机械手抓紧工件上升。当机械手上升到位时(可以由限位开关检测到,当上升到位时I0.4=1),机械手停止上升,第三步结束。第四步是机械手抓紧工件右移。当机械手右移到位时(可以由限位开关检测到,当右移到位时I0.7=1),机械手停止右移,第四步结束。第五步是机械手在最右位开始下降。当机械手下降到工作台B到位时(可以由限位开关检测到,当下降到位时I0.5=1),机械手停止下降,第五步结束。第六步是机械手开始放松工件,所需时间大约l0秒钟。10秒钟之后工件放开,第六步结束。第七步是机械手开始上升。机械手上升到位时(可以由限位开关检测到,当上升到位时I0.4=1),停止上升,第七步结束。第八步是机械手在高位开始左移,当左移到位时(可以由限位开关检测到,左移到位时I0.6=1),机械手停止左移。第八步结束。机械手工作一个周期完成。等待工件在工作台A上出现转到第一步。工艺要求有三种控制方式,自动、单动和手动。

·硬件选择:

从工艺要求中可以看出,从控制方式选择上需要3个具有连锁功能的启动按钮,分别完成自动方式I0.0、单动方式I0.1和手动方式I0.2的启动,还需要一个停止按钮I0.3用来处理在任何情况下的停止运行。机械手运动的限位开关有4个,高位限位开关I0.4、低位限位开关I0.5、左位限位开关I0.6和右位限位开关I0.7。手动控制输入信号有5个按钮组成,下降按钮I1.0、上升按钮Il.1、抓紧按钮I1.2、左移按钮I1.3和右移按钮Il.4。工作台A上有工作检测PH器的输入信号Il.5。共有l4个输入信号。

输出信号有机械手下降驱动信号Q0.0、上升驱动信号Q0.1、右移驱动信号Q0.2、左移驱动信号Q0.3和机械手抓紧驱动信号Q0.4。共有5个输出信号。

该系统需要输入14点,输出5点。可选择S7-200系列的CPU224就可以满足要求,也可以选择CPU222和一个I/O模块EM223组成控制系统。本例子中选择一个CPU224作为本控制系统的控制器。见图4-3-2。

·输入输出点的地址分配:

本系统输入输出地址分配如表4-3-1。

表4-3-1

模块号 输入端子号 输出端子号 地址号 信号名称 说明 CPU224 1

2

3

4

5

6

7

8

9

10

11

12

13

14



























1

2

3

4

5

6

···

10 I0.0

I0.1

I0.2

I0.3

I0.4

I0.5

I0.6

I0.7

I1.0

I1.1

I1.2

I1.3

I1.4

I1.5

Q0.0

Q0.1

Q0.2

Q0.3

Q0.4

Q0.5

···

Q1.1 自动启动,“1”有效

单动启动,“1”有效

手动启动,“1”有效

停止,“1”有效

高位,“1”有效

低位,“1”有效

左位,“1”有效

右位,“1”有效

手动下降,“1”有效

手动上升,“1”有效

手动夹紧,“1”有效

手动左移,“1”有效

手动右移,“1”有效

A台有工件,“1”有效

下降,“1”有效

上升,“1”有效

右移,“1”有效

左移,“1”有效

夹紧,“1”有效





按钮

按钮

按钮

按钮

限位开关

限位开关

限位开关

限位开关

按钮

按钮

按钮

按钮

按钮

光电耦合器

电磁阀

电磁阀

电磁阀

电磁阀

电磁阀







为了进一步了解PLC程序设汁的方法,本例子中试用3种程序设计的方法进行编写程序的练习。

(1)由逻辑流程图设计程序

1)程序流程图

为了能用逻辑流程图设计PLC程序,首先要画出控制系统的逻辑流程图。见图4-3-3。根据工艺要求逻辑流程可以分8个部分。系统启动之前机械手在原始位置。原始位置的条件是:机械手在高位(I0.4=1),左位(I0.6=1)。当有工件放在工作台A上时(Il.5=1),在启动条件允许时,机械手开始下降(Q0.0=1)。当下降到低位时(I0.5=1),停止下降(Q0.0=O)。机械手下降到位后,开始抓紧工件(Q0.4=l),同时启动延时10秒的定时器(可以取T101)。待Tl01延时时间到,机械手开始上升(Q0.l=1),上升到高位(I0.4=1)时,停止上升(Q0.1=0)。这时机械手开始右移(Q0.2=1),当到右位时(I0.7=1),停止右移(Q0.2=0)。这时机械手又开始下降(Q0.0=1),当下降到低位时(IO.5=1),停止下降(Q0.0=0)。机械手在低位时开始松开工件(Q0.4=0),同时启动延时10秒钟定时器(T102)。待延时时间到,机械手又开始上升(Q0.1=1)。上升到高位时(I0.4=1),停止上升(Q0.1=0)。机械手在高位开始左移(Q0.3=1),左移到左位时(I0.0=1),停止左移(Q0.3=0)。

如果是自动运行机械手则等待工作台A再一次有工件,而进行下一周期操作。如果是单动运行机械手则等待再一次启动单动操作。如果是手动控制则由手动输入信号去驱动机械手的操作。

2)内存变量分配表:

为了便于编制程序和修改程序。需要建立输入输出与内存变量分配表。从表中可以明显地看出I/O分配、内存分配及它们的功能。分配表如果写入PLC的符号表,就可以用表中的名称代替实际地址去编写程序。这种分配表又叫符号表。见表4-3-2。

表4-3-2

序号 名称 地址 注释 1 自动启动 I0.0 按钮 2 单动启动 I0.1 按钮 3 手动启动 I0.2 按钮 4 停止 I0.3 按钮 5 高位 I0.4 限位开关 6 低位 I0.5 限位开关 7 左位 I0.6 限位开关 8 右位 I0.7 限位开关 9 手动下降 I1.0 按钮 10 手动上升 I1.1 按钮 11 手动夹紧 I1.2 按钮 12 手动左移 I1.3 按钮 13 手动右移 I1.4 按钮 14 A台有工件 I1.5 光电耦合器 15 下降 Q0.0 电磁阀 16 上升 Q0.1 电磁阀 17 右移 Q0.2 电磁阀 18 左移 Q0.3 电磁阀 19 夹紧 Q0.4 电磁阀 20 抓紧定时器 T101 时基=l0Oms的T0N定时器 21 放松定时器 T102 时基=l0Oms的T0N定时器 22 自动方式标志 M0.0 Bool 23 单动方式标志 M0.1 Bool 24 手动方式标志 M0.2 Bool 25 一周期结束标志 M0.3 Bool

3)控制程序:

控制程序中0B1的任务是根据启动信号分别调用自动控制和单动控制程序SBR0,手动控制程序SBR1。程序中“//”后面的内容为语句的注释。注释有利于阅读程序,注释可以用中文或PLC允许范围之内的语言文字书写。



主程序·OB1·(启动方式设定)



NETWORK1//自动方式启动M0.0=1,有自锁。

LDI0.0//自动方式的条件1,自动方式启动按钮按下。

ANM0.1//自动方式的条件2,单动方式标志为“0”。

OM0.0//M0.0的自锁。

ANI0.3//自动方式的条件3,停止按钮没有按下。

=M0.0//自动方式输出。



NETWORK2//单动方式启动M0.3=1,单动有效。

LDI0.1//单动方式启动按钮按下。

SM0.3,1//单动方式M0.3=1,单动有效。



NETWORK3//单动方式启动M0.1=1,有自锁。

LDI0.1//单动方式的条件1,单动方式启动按钮按下。

ANM0.0//单动方式的条件2,自动方式标志为“0”。

LDM0.1//M0.1的自锁。

AM0.3//M0.1的自锁条件,一周期未结束M0.3=1。

OLD//块的并联。

ANI0.3//单动方式的条件3,停止按钮没有按下。

=M0.1//单动方式输出。



NETWORK4//自动方式或单次方式均调子程序0。

LDM0.0//自动方式

OM0.1//单动方式

ANM0.2//非手动方式

CALLSBR_0//调用自动方式和单动方式子程序。



NETWORK5//手动方式启动M0.2=1,有自锁。

LDI0.2//手动方式的条件1,手动方式启动按钮按下。

OM0.2//M0.2的自锁。

ANI0.3//手动方式的条件2,停止按钮没有按下。

=M0.2//手动方式输出。



NETWORK6//手动方式调子程序1。

LDM0.2//手动方式

ANM0.0//非自动方式

ANM0.1//非单动方式

CALLSBR_1//调用手动方式子程序。



NETWORK7//停止处理。

LDI0.3//停止按钮按下,I0.3=1。

RM0.0,4//复位标志位。



NETWORK8//错误操作处理。

LDI0.0//自动和单动按钮同时按下。

AI0.1

LDI0.0//自动和手动按钮同时按下。

AI0.2

OLD

LDI0.1//单动和手动按钮同时按下。

AI0.2

OLD

STOP//PLC转为停止状态。



子程序·SBR0·(自动方式或单动方式控制)



NETWORK1//启动机械手下降并清除M0.3。

LDI0.4//机械手位于高位I0.4=1。

AI0.6//机械手位于左位I0.6=1。

AI1.5//工作台A上有工件I1.5=1。

ANQ0.1//机械手不在上升状态Q0.1=0。

EU//上升沿有效。

SQ0.0,1//机械手下降Q0.0=1。



NETWORK2//机械下降到位,停止下降并启动抓紧控制。

LDQ0.0//机械手下降Q0.0=1。

AI0.6//机械手在左位I0.6=1。

AI0.5//机械手下降到位I0.5=1。

EU//上升沿有效。

RQ0.0,1//机械手停止下降Q0.0=0。

SQ0.4,1//机械手开始夹紧Q0.4=1。



NETWORK3//机械手抓紧并启动抓紧计时器,定时100毫秒。

LDQ0.4//机械手夹紧Q0.4=1。

AI0.6//机械手在左位I0.6=1。

AI0.5//机械手在低位I0.5=1

ANQ0.1//机械手非上升Q0.1=O。

TONT101,+100//启动延时闭合定时器Tl0l,延时时间为l0秒钟。



NETWORK4//定时时间到,并且机械手非下降时,启动上升。

LDT101//延时闭合定时器Tl0l,时间到l0秒钟,T101=1。

AI0.6//机械手在左位I0.6=1。

AI0.5//机械手在低位I0.5=1

ANQ0.0//机械手非上升Q0.1=O。

EU//上升沿有效。

SQ0.1,1//机械手上升Q0.1=1。



NETWORK5//机械手上升到位,停止上升并且启动右移控制。

LDQ0.1//机械手在上升Q0.1=1。

AI0.6//机械手在左位I0.6=1。

AI0.4//机械手上升到高位I0.4=1。

RQ0.1,1//机械手停止上升Q0.1=0。

ANQ0.3//机械手非左移状态Q0.3=0。

EU//上升沿有效。

SQ0.2,1//机械手右移Q0.2=1。



NETWORK6//机械手右移到位,停止右移并且启动下降控制。

LDQ0.2//机械手右移中Q0.2=1。

AI0.4//机械手在高位I0.4=1。

AI0.7//机械手右移到右位I0.7=1。

RQ0.2,1//机械手停止右移QQ.2=0。

ANQ0.1//机械手非上升状态Q0.1=O。

EU//上升沿有效。

SQ0.0,1//机械手下降Q0.0=1。



NETWORK7//机械手下降到位,停止下降并启动松开控制。

LDQ0.0//机械手下降中Q0.0=1。

AI0.7//机械手在右位I0.7=1。

AI0.5//机械手下降到低位I0.5=1。

EU//上升沿有效。

RQ0.0,1//机械手停止下降Q0.0=O。

RQ0.4,1//机械手放松Q0.4=O。



NETWORK8//机械手松开并启动松开计时器,定时100毫秒。

LDNQ0.4//机械手放松状态Q0.4=0。

AI0.7//机械手于右位I0.7=1。

AI0.5//机械手于低位I0.5=1。

ANQ0.1//机械手非上升状态。Q0.1=O。

TONT102,+100//启动延时闭合定时器T102,时间常数为10秒。



NETWORK9//定时时间到,并且机械手非下降时,启动上升。

LDT102//TlO2延时时间到Tl02=1。

AI0.7//机械手在右位I0.7=1。

AI0.5//机械手在低位I0.5=1。

ANQ0.0//机械手非下降状态Q0.0=0。

EU//上升沿有效。

SQ0.1,1//机械手上升Q0.1=1。



NETWORK10//机械手上升到位,停止上升并且启动左移控制。

LDQ0.1//机械手上升中QO.1=1。

AI0.7//机械手在右位I0.7=1。

AI0.4//机械手上升到高位I0.4=l。

RQ0.1,1//机械手停止上升Q0.l=0。

ANQ0.2//机械手非右移状态Q0.2=0。

EU//上升沿有效。

SQ0.3,1//机械手左移Q0.3=1。



NETWORK11//机械手左移到位停止,M0.3=1以阻止单动方式下的自动启动。

LDQ0.3//机械手左移中Q0.3=1。

AI0.4//机城手在高位I0.4=1。

AI0.6//机械手左移到左位I0.6=1。

EU//上升沿有效。

RQ0.3,1//机械手停止左移Q0.3=0。

RM0.3,1//一周期结束标志M0.3=0。以信号用于清除单动标志。



子程序·SBR1·(手动方式控制)



NETWORK1//手动下降。

LDI1.0//手动下降按钮(I1.0)

ANI0.5//未到低位I0.5=0。

=Q0.0//机械手下降输出。



NETWORK2//手动上升。

LDI1.1//手动上升按钮(I1.1)

ANI0.4//未到高位I0.4=0。

=Q0.1//机械手上升输出。



NETWORK3//手动抓紧,采用置位和复位方式是抓紧后不允许松开。

LDI1.2//手动抓紧按钮(I1.2)

LPS//将Il.2状态压栈。

AI0.6//机械手在左位I0.6=1。

AI0.5//机械手在低位I0.5=1。。

EU//上升沿有效。

SQ0.4,1//机械手抓紧输出。

LPP//弹出Il.2的状态。

AI0.7//机械手到右位I0.7=1。

AI0.5//机械手到低位I0.5=1。

EU//上升沿有效。

RQ0.4,1//停止机械手夹紧Q0.4=0。



NETWORK4//手动左移。

LDI1.3//手动左移按钮(I1.3)

ANI0.6//未到左位I0.6=0。

=Q0.3//机械手左移输出。



NETWORK5//手动右移。

LDI1.4//手动右移按钮(I1.4)

ANI0.7//未到右位I0.7=0。

=Q0.2//机械手右移输出。



(2)由时序流程图设计程序

1)时序流程图

由时序流程图来设计程序,首先要把整个工程的各个任务分成多个时序,在不同的时序中完成不同的任务。例如本例子中可分成8个时序。用M1.0、M1.1…M1.7分别表述各个时序的特征位。当M1.O=1时为机械手下降1时序,M1.1为机械手抓紧时序等等。

在时序图画完之后,主要解决一个时序的启动和结束问题。

例如M1.0的启动条件可以在按下自动和单动启动按钮、机械手位于原位且工作台A有工件。M1.O的结束条件为机械手位于左位、下降过程中达到低位。M1.1的启动可以在M1.0由1变为0的时刻,M1.1的结束应该在机械手抓紧过程中抓紧时间到的时刻。…M1.7的启动可以在M1.6由1变为0的时刻,M1.7的结束应该在机械手位于高位、左移过程中达到左位时刻。

这里有两点要特别需要注意。其一是各个时序标志位的启动、停止条件是准确的、唯一的。其二是一个周期内每个时序只能按顺序出现一次。

2)内存变量分配表:见表4-3-3。

表4-3-3

序号 名称 地址 注释 1 自动启动 I0.0 按钮 2 单动启动 I0.1 按钮 3 手动启动 I0.2 按钮 ··· ··· ··· ··· 20 抓紧定时器 T101 时基=l0Oms的T0N定时器 21 放松定时器 T102 时基=l0Oms的T0N定时器 22 自动方式标志 M0.0 Bool 23 单动方式标志 M0.1 Bool 24 手动方式标志 M0.2 Bool 25 一周期结束标志 M0.3 Bool 26 A台下降时序标志 M1.0 Bool 27 抓紧时序标志 M1.1 Bool 28 A台上升时序标志 M1.2 Bool 29 右移时序标志 M1.3 Bool 30 B台下降时序标志 M1.4 Bool 31 放松时序标志 M1.5 Bool 32 B台上升时序标志 M1.6 Bool 33 左移时序标志 M1.7 Bool

3)控制程序:

主程序·OB1·(启动方式设定)



NETWORK1//自动方式启动M0.0=1,有自锁。

LDI0.0//自动方式的条件1,自动方式启动按钮按下。

ANM0.1//自动方式的条件2,单动方式标志为“0”。

OM0.0//M0.0的自锁。

ANI0.3//自动方式的条件3,停止按钮没有按下。

=M0.0//自动方式输出。



NETWORK2//单动方式启动M0.3=1,单动有效。

LDI0.1//单动方式启动按钮按下。

SM0.3,1//单动方式M0.3=1,单动有效。



NETWORK3//单动方式启动M0.1=1,有自锁。

LDI0.1//单动方式的条件1,单动方式启动按钮按下。

ANM0.0//单动方式的条件2,自动方式标志为“0”。

LDM0.1//M0.1的自锁。

AM0.3//M0.1的自锁条件,一周期未结束M0.3=1。

OLD//块的并联。

ANI0.3//单动方式的条件3,停止按钮没有按下。

=M0.1//单动方式输出。



NETWORK4//自动方式或单次方式均调子程序0。

LDM0.0//自动方式

OM0.1//单动方式

ANM0.2//非手动方式

CALLSBR_0//调用自动方式和单动方式子程序。



NETWORK5//手动方式启动M0.2=1,有自锁。

LDI0.2//手动方式的条件1,手动方式启动按钮按下。

OM0.2//M0.2的自锁。

ANI0.3//手动方式的条件2,停止按钮没有按下。

=M0.2//手动方式输出。



NETWORK6//手动方式调子程序1。

LDM0.2//手动方式

ANM0.0//非自动方式

ANM0.1//非单动方式

CALLSBR_1//调用手动方式子程序。



NETWORK7//停止处理。

LDI0.3//停止按钮按下,I0.3=1。

RM0.0,4//复位标志位。



NETWORK8//错误操作处理。

LDI0.0//自动和单动按钮同时按下。

AI0.1

LDI0.0//自动和手动按钮同时按下。

AI0.2

OLD

LDI0.1//单动和手动按钮同时按下。

AI0.2

OLD

STOP//PLC转为停止状态。



子程序·SBR0·(自动方式或单动方式控制)



NETWORK1//时序未开始条件M2.0=1。

LDNM1.0//非下降时序1。

ANM1.1//非夹紧时序。

ANM1.2//非上升时序1。

ANM1.3//非右移时序。

ANM1.4//非下降时序2。

ANM1.5//非放松时序。

ANM1.6//非上升时序2。

ANM1.7//非左移时序。

=M2.0//时序开始条件M2.0=1。



NETWORK2//时序M1.0启动条件,自动或单动方式且时序之首。

LDI0.4//机械手在高位。

AI0.6//机械手在左位。

AM2.0//初态M2.0=1

TONT103,+10//启动TON定时器T103,时间常数为l0ms。

ANT103//Tl03时间到进入第一个时序。

SM1.0,1//输出下降时序1。



NETWORK3//时序标志M1.0的复位及M1.1的启动。

LDQ0.0//机械手下降中。

AI0.6//机械手在左位。

AI0.5//机械手下降到低位。

EU//上升沿有效。

RM1.0,1//复位下降时序1标志。

SM1.1,1//置位抓紧时序标志。



NETWORK4//时序标志M1.1的复位及M1.2的启动。

LDQ0.4//机械手抓紧中。

AI0.6//机械手在左位。

AI0.5//机械手下降到低位。

AT101//定时器TlO1时间到。

EU//上升沿有效。

RM1.1,1//复位抓紧时序标志。

SM1.2,1//置位上升时序1。



NETWORK5//时序标志M1.2的复位及M1.3的启动。

LDQ0.1//机械手上升中。

AI0.6//机械手在左位。

AI0.4//机械手上升到高位。

EU//上升沿有效。

RM1.2,1//复位上升时序1。

SM1.3,1//置位右移时序。



NETWORK6//时序标志M1.3的复位及M1.4的启动。

LDQ0.2//机械手右移中。

AI0.4//机械手在高位。

AI0.7//机械手到达右位。

EU//上升沿有效。

RM1.3,1//复位机械手右移标志。

SM1.4,1//置位下降时序2标志。



NETWORK7//时序标志M1.4的复位及M1.5的启动。

LDQ0.0//机械手下降中。

AI0.7//机械手在右位。

AI0.5//机械手到达低位。

EU//上升沿有放。

RM1.4,1//复位下降时序2。

SM1.5,1//置位放松时序。



NETWORK8//时序标志M1.5的复位及M1.6的启动。

LDNQ0.4//机械手为放松状态。

AI0.7//机械手在右位。

AI0.5//机械手在低位。

AT102//T0N定时器Tl02延时到。

EU//上升沿有效。

RM1.5,1//复位放松时序。

SM1.6,1//置位上升时序2。



NETWORK9//时序标志M1.6的复位及M1.7的启动。

LDQ0.1//机械手在上升中。

AI0.7//机械手在右位。

AI0.4//机械手升到高位。

EU//上升沿有效

RM1.6,1//复位上升时序2。

SM1.7,1//置位左移时序。



NETWORK10//时序标志M1.7的复位。

LDQ0.3//机械手左移中。

AI0.4//机械手在高位。

AI0.6//机械手左移到左位。

EU//上升沿有效。

RM1.7,1//复位左移时序。



NETWORK11//机械手在工作台A上方下降。

LDM1.0//下降时序1有效。

AI1.5//工作台A上有工件。

ANQ0.1//非上升状态。

=Q0.0//输出下降控制。



NETWORK12//机械手在工作台A下方抓紧。

LDM1.1//抓紧时序有效。

TONT101,+100//启动定时器T10l。

SQ0.4,1//抓紧输出控制置位。



NETWORK13//机械手在工作台A下方开始上升。

LDM1.2//上升时序1有效。

ANQ0.0//非下降状态。

=Q0.1//输出上升控制。



NETWORK14//机械手在工作台A上方开始右移。

LDM1.3//右移时序有效。

ANQ0.3//非左移状态。

SQ0.2,1//输出右移控制。



NETWORK15//机械手在工作台B上方开始下降。

LDM1.4//下降时序2有效。

ANQ0.1//非上升状态。

=Q0.0//输出下降控制。



NETWORK16//机械手在工作台B下方开始松开。

LDM1.5//放松时序有效。

TONT102,+100//启动定时器T102。

RQ0.4,1//复位抓紧控制。



NETWORK17//机械手在工作台B下方开始上升。

LDM1.6//上升时序2有效。

ANQ0.0//非下降状态。

=Q0.1//输出上升控制。



NETWORK18//机械手在工作台B上方开始左移。

LDM1.7//左移时序有效。

LPS//M1.7的状态压栈。

ANQ0.2//非右移状态。

=Q0.3//输出左移控制。

LPP//弹出Ml.7状态。

AI0.6//机械手左移到左位。

RM0.3,1//阻止单动自动启动。



子程序SBR1为手动方式控制程序。因为与上面例子相同,故不重书。









(3)由步进顺控指令设计程序

1)顺控状态流程图:

采用步进顺控指令设计系统控制程序,要根据控制要求画出控制系统的状态流程图,如图4-3-5。一个状态就是顺控的一步。状态流程图要把每一步的控制状态分配状态继电器。每个状态继电器的状态是否为“1”,就决定了系统控制每一步的进程。每个状态中都要有这个状态的开始、控制操作、状态的转换与结束。本文的例子中,主程序和手动部分子程序1与前者相同,其自动方式或单动方式控制的子程序SBR0的内容改为使用顺控指令控制。整个控制过程可以分为8步。S0.0为第一步,控制机械手下降。S0.1为第二步,控制机械手抓紧。S0.2为第三步,控制机械手上升。S0.3为第四步,控制机械手右移。S0.4为第五步,控制机械手下降。S0.5为第六步,控制机械手放松。S0.6为第七步,控制机械手上升。S0.7为第八步,控制机械手左移。

2)内存变量分配表:见表4-3-4。

表4-3-4

序号 名称 地址 注释 1 自动启动 I0.0 具有互锁的按钮 2 单动启动 I0.1 具有互锁的按钮 3 手动启动 I0.2 具有互锁的按钮 ··· ··· ··· ··· 20 抓紧定时器 T101 时基=l0Oms的T0N定时器 21 放松定时器 T102 时基=l0Oms的T0N定时器 22 自动方式标志 M0.0 Bool 23 单动方式标志 M0.1 Bool 24 手动方式标志 M0.2 Bool 25 一周期结束标志 M0.3 Bool 26 下降步序1 S0.0 Bool 27 抓紧步序2 S0.1 Bool 28 上升步序3 S0.2 Bool 29 右移步序4 S0.3 Bool 30 下降步序5 S0.4 Bool 31 放松步序6 S0.5 Bool 32 上升步序7 S0.6 Bool 33 左移步序8 S0.7 Bool

3)系统程序:



主程序·OB1·(启动方式设定)



NETWORK1//自动方式启动M0.0=1,有自锁。

LDI0.0//自动方式的条件1,自动方式启动按钮按下。

ANM0.1//自动方式的条件2,单动方式标志为“0”。

OM0.0//M0.0的自锁。

ANI0.3//自动方式的条件3,停止按钮没有按下。

=M0.0//自动方式输出。



NETWORK2//单动方式启动M0.3=1,单动有效。

LDI0.1//单动方式启动按钮按下。

SM0.3,1//单动方式M0.3=1,单动有效。



NETWORK3//单动方式启动M0.1=1,有自锁。

LDI0.1//单动方式的条件1,单动方式启动按钮按下。

ANM0.0//单动方式的条件2,自动方式标志为“0”。

LDM0.1//M0.1的自锁。

AM0.3//M0.1的自锁条件,一周期未结束M0.3=1。

OLD//块的并联。

ANI0.3//单动方式的条件3,停止按钮没有按下。

=M0.1//单动方式输出。



NETWORK4//自动方式或单次方式均调子程序0。

LDM0.0//自动方式

OM0.1//单动方式

ANM0.2//非手动方式

CALLSBR_0//调用自动方式和单动方式子程序。



NETWORK5//手动方式启动M0.2=1,有自锁。

LDI0.2//手动方式的条件1,手动方式启动按钮按下。

OM0.2//M0.2的自锁。

ANI0.3//手动方式的条件2,停止按钮没有按下。

=M0.2//手动方式输出。



NETWORK6//手动方式调子程序1。

LDM0.2//手动方式

ANM0.0//非自动方式

ANM0.1//非单动方式

CALLSBR_1//调用手动方式子程序。



NETWORK7//停止处理。

LDI0.3//停止按钮按下,I0.3=1。

RM0.0,4//复位标志位。



NETWORK8//错误操作处理。

LDI0.0//自动和单动按钮同时按下。

AI0.1

LDI0.0//自动和手动按钮同时按下。

AI0.2

OLD

LDI0.1//单动和手动按钮同时按下。

AI0.2

OLD

STOP//PLC转为停止状态。



子程序·SBR0·(自动方式或单动方式控制)



NETWORK1//启动第一步。

LDI0.4//机械手在高位。

AI0.6//机械手在左位。

AI1.5//工作台A上有工件。

EU//上升沿有效。

SS0.0,1//启动顺序控制第一步,机械手下降。



NETWORK2//第一步(机械手下降)开始。

LSCRS0.0//第一步的开始。



NETWORK3//第一步的工作,机械手下降。

LDI0.6//机械手在左位I0.6=1。

ANI0.5//未到低位I0.5=0。

ANQ0.1//非上升状态Q0.1=0。

=Q0.0//输出机械手下降控制Q0.0=1。



NETWORK4//转换。

LDI0.6//机械手在左位I0.6=1。

AI0.5//机械手到低位I0.5=1。

SCRTS0.1//转换到顺序控制第二步。



NETWORK5//步结束。

SCRE//第一步结束。



NETWORK6//第二步开始(机械手夹紧)。

LSCRS0.1//第二步开始



NETWORK7//机械手抓紧。

LDI0.6//机械手在左位I0.6=1。

AI0.5//机械手在低位I0.5=1。

SQ0.4,1//启动抓紧输出Q0.4=1。

TONT101,+100//启动抓紧计时器T101。



NETWORK8//转换。

LDT101//T101延时时间到T101=1。

SCRTS0.2//转换到顺序控制第三步。



NETWORK9//步结束。

SCRE//第二步结束。



NETWORK10//第三步开始(机械手上升)。

LSCRS0.2//第三步开始。



NETWORK11//机械手上升。

LDI0.6//机械手在左位I0.6=1。

ANI0.4//机械手没有上升到高位I0.4=0。

ANQ0.0//非下降状态。

=Q0.1//输出上升控制Q0.1=1。



NETWORK12//转换。

LDI0.6//机械手在左位I0.6=1。

AI0.4//机械手上升到高位I0.4=1。

SCRTS0.3//转换到顺序控制第四步。



NETWORK13//步结束。

SCRE//第三步结束。



NETWORK14//第四步开始(机械手右移)。

LSCRS0.3//第四步开始。



NETWORK15//机械手右移。

LDI0.4//机械手在高位I0.4=1。

ANI0.7//机械手没有到右位I0.7=0。

ANQ0.3//非左移中。

=Q0.2//输出右移控制Q0.2=1。



NETWORK16//转换。

LDI0.4//机械手在高位I0.4=1。

AI0.7//机械手右移到右位I0.7=1。

SCRTS0.4//转换到顺序控制第五步。



NETWORK17//步结束。

SCRE//第四步结束。



NETWORK18//第五步开始(机械手下降)。

LSCRS0.4//第五步开始。



NETWORK19//第五步,机械手下降。

LDI0.7//机械手在右位I0.7=1。

ANI0.5//机械手未到低位I0.5=0。

ANQ0.1//非上升状态。

=Q0.0//输出下降控制Q0.0=1。



NETWORK20//转换。

LDI0.7//机械手在右位I0.7=1。

AI0.5//机械手到低位I0.5=1。

SCRTS0.5//转换到顺序控制第六步。



NETWORK21//步结束。

SCRE//第五步结束。



NETWORK22//第六步开始(机械手松开)。

LSCRS0.5//第六步开始。



NETWORK23//机械手松开。

LDI0.7//机械手在右位I0.7=1。

AI0.5//机械手到低位I0.5=1。

RQ0.4,1//复位夹紧控制Q0.4=0。

TONT102,+100//启动松开定时器。



NETWORK24//转换。

LDI0.7//机械手在右位I0.7=1。

AT102//松开时间到T102=1。

SCRTS0.6//转换到顺序控制第七步。



NETWORK25//步结束。

SCRE//第六步结束。



NETWORK26//第七步开始(机械手上升)。

LSCRS0.6//第七步开始。



NETWORK27//第七步,机械手上升。

LDI0.7//机械手在右位I0.7=1。

ANI0.4//机械手未到高位I0.4=0。

ANQ0.0//非下降状态。

=Q0.1//输出上升控制Q0.1=1。



NETWORK28//转换。

LDI0.7//机械手在右位I0.7=1。

AI0.4//机械手到高位I0.4=1。

SCRTS0.7//转换到顺序控制第八步。



NETWORK29//步结束。

SCRE//第七步结束。



NETWORK30//第八步开始(机械手左移)。

LSCRS0.7//第八步开始



NETWORK31//机械手左移。

LDI0.4//机械手在高位I0.4=1。

ANI0.6//机械手不到左位I0.6=0。

ANQ0.2//机械手非右移Q0.2=0。

=Q0.3//机械手左移Q0.3=1。



NETWORK32//转换。

LDI0.4//机械手在高位I0.4=1。

AI0.6//机械手到左位I0.6=1。

SCRTS1.0//转换,顺控指令格式要求。



NETWORK33//步结束。

SCRE//第八步结束。



NETWORK34//返回第一步。

LDI0.4//机械手在高位I0.4=1。

AI0.6//机械手在左位I0.6=1。

AI1.5//工作台A上有工件到达I1.5=1。

EU//上升沿有效。

RM0.3,1//结束输出单动连锁控制标志。

SS0.0,1//启动顺序控制第一步(机械手下降)S0.0=1。



子程序SBR1为手动方式控制程序。因为与上面例子相同,故不重书。









例4-3-2:图4-3-6是一个两种液体混合搅拌控制系统。

系统有三个液面传感器,H为B液体液面检测传感器、I为A液体液面检测传感器、L为最低液面检测传感器。当液面达到传感器的位置后,传感器送出ON信号,低于传感器位置时,传感器为OFF状态。

系统有三个电磁阀,X1为A液体输入电磁阀、X2为B液体输入电磁阀、X3为混合液体输出电磁阀。电磁阀为0N状态时阀门打开,X1、X2分别送入液体A与液体B,X3放出搅拌好的混合液。电磁阀为0FF状态时阀门关闭。M为搅拌电机,M=OFF搅拌电机停止,M=0N搅拌电机运行。

初始状态及操作工艺。启动搅拌器之前,容器是空的,各阀门关闭(X1=X2=X3=OFF),传感器H=I=L=OFF,搅拌电机M=OFF。搅拌器开始工作时,先按下启动按钮,阀门X1打开,开始放入液体A。当液面经过传感器L时使L=ON,并继续注入液体A,直至液面达到I时,I=ON使X1=OFF,X2=ON,即关闭阀门X1,停送液体A,打开阀门X2,开始送入液体B。当液面达到H时,关闭阀门X2,启动搅拌电机M,即X2=OFF,M=ON。开始搅拌60秒,搅拌均匀后,停止搅拌,即M=OFF,打开阀门X3,即X3=ON,开始放出混合液体,当液面低于传感器L,即L=OFF,经延时10秒,容器中的液体放空,关闭阀门X3,即X3=OFF,自动开始下一个操作循环。若在工作中按下停止按钮,搅拌器不立即停止工作,只有当前混合操作处理完毕后,才停止操作,即停在初始状态上。

1)硬件设计

这是一个单体控制的小系统,没有特殊的控制要求,开关量输入节点有5个(启动、停止和H、I、L),开关量输出4个(X1,X2,X3与M),输入输出点数共分9个。粗估内存容量约90个地址单元(9ⅹ10=90)即可。据此可以选用一般中小型控制器(S7-200CPU221~CPU226)。现假设选用S7-200的CPU222,输入/输出点总数为14个,其中输入点8个,输出点6个。见图4-3-7。

2)输入输出点的地址分配

输入输出点的地址分配见表4-3-5。

表4-3-5

模块号 输入端子号 输出端子号 地址号 信号名称 说明 CPU222 1

2

3

4

5

6

7

8















1

2

3

4

5

6 I0.0

I0.1

I0.2

I0.3

I0.4

I0.5

I0.6

I0.7

Q0.0

Q0.1

Q0.2

Q0.3

Q0.4

Q0.5 启动,上升沿有效

停止,上升沿有效

液面检测H,上升沿有效

液面检测I,上升沿有效

液面检测L,下降沿有效







A液电磁阀X1,“1”有效

B液电磁阀X2,“1”有效

混合液电磁阀X3,“1”有效

搅拌电机,“1”有效 按钮

按钮

液位传感器

液位传感器

液位传感器







电磁阀

电磁阀

电磁阀

电机

3)控制流程图

本例子中,没有涉及手动部分,在本程序设计中只考虑自控部分。

本控制的原始条件是搅拌器内没有液体(L=0),所有阀门均为关闭状态(X1=X2=X3=0),搅拌电机为停止状态(M=0)。

这时如果按下启动按钮(I0.0=1),系统被启动,执行控制任务1,输入A液体到搅拌器(打开阀门X1=1)。

当液体A的液位达到I时(I=1),执行控制任务2,液体A停止输入、开始输入液体B(X1=0,X2=1)。

当液体B的液位达到H时(H=1),执行控制任务3,液体B停止输入、启动搅拌电机、启动搅拌定时器(X2=0,M=1,启动T101)。

当搅拌时间到,执行控制任务4,停止搅拌电机、输出混合液(M=0,X3=1)。

当液面低于L时,执行控制任务5,启动输出延时定时器(启动T102)。

当输出延时时间到,执行控制任务6,关闭输出电磁阀等待再一次启动(X3=0)。



内存分配变量表

为了便于编制、便于阅读程序。可以采用S7-200符号表进行程序设计。符号表的作用是建立输入输出变量的符号名称与变量的地址的对应关系。有了符号表,就可以用符号表的名称代替变量的实际地址进行编程。符名表中的名称可以是英文也可以是中文。实际中用英文书写比较快捷。本程序中为了便于读者阅读采用中文建立符号表。设控制系统的内存变量分配表(符号表)见表4-3-6。

表中用小括号标明的名称,没有写入PLC的符号表,在编程时还应该使用元件的实际地址。

表4-3-6

序号 名称 地址 注释 1 启动 I0.0 上升沿有效 2 停止 I0.1 上升沿有效 3 H检测 I0.2 上升沿有效 4 I检测 I0.3 上升沿有效 5 L检测 I0.4 下降沿有效 6 阀X1 Q0.0 “1”有效 7 阀X2 Q0.1 “1”有效 8 阀X3 Q0.2 “1”有效 9 电机M Q0.3 “1”有效 10 (搅拌计时器) T101 时基=l00ms,T0N定时器 11 (缶排空延时器) T102 时基=l00ms,T0N定时器 12 (原始标志) M0.0 Bool 13 (液位最低标志) M0.1 Bool

为了便于阅读程序,本程序采用语句表和梯形图两种语言表示。事实上,用编程软件编写程序在一般情况下是可以利用编程软件实现各种编程语言之间的转换。

5)程序设计

·语句表程序:



·OB1·



NETWORK1//搅拌器没液体(L=0),阀门关闭,搅拌机停止。

LDNL检测//L检测=I0.4。

AN阀X1//阀X1=Q0.0。

AN阀X2//阀X2=Q0.1。

AN阀X3//阀X3=Q0.2。

AN电机M//电机M=Q0.3。

=M0.0//原始标志=M0.0。



NETWORK2//执行控制任务1,输入A液体到搅拌器(X1=1)。

LDM0.0//原始标志=M0.0。

A启动//启动=I0.0。

AN停止//停止=I0.1。

EU//上升沿有效。

S阀X1,1//阀X1=Q0.0。



NETWORK3//执行控制任务2,液体A停止、输入液体B(X1=0,X2=1)。

LD阀X1//阀X1=Q0.0,输入液体A,Q0.0=1。

AI检测//I检测=I0.3,液体A到位,I0.3=1。

EU//上升沿有效。

R阀X1,1//阀X1=Q0.0,停止输入液体A,Q0.0=0。

S阀X2,1//阀X2=Q0.1,输入液体B,Q0.1=1。



NETWORK4//执行控制任务3,停液体B、启动搅拌电机(X2=0,M=1)。

LD阀X2//阀X2=Q0.1,输入液体B,Q0.1=1。

AH检测//H检测=I0.2,液体B到位,I0.2=1。

EU//上升沿有效。

R阀X2,1//阀X2=Q0.1,停止输入液体B,Q0.1=0。

S电机M,1//电机M=Q0.3,启动搅拌电机Q0.3=1。



NETWORK5//启动搅拌定时器(启动T101)。

LD电机M//电机M=Q0.3,搅拌电机运行Q0.3=1。

TONT101,+600//搅拌计时=T101,启动搅拌定时器。



NETWORK6//执行控制任务4,停止搅拌电机、输出混合液(M=0,X3=1)。

LDT101//搅拌计时=T101,搅拌定时到,T101=1。

EU//上升沿有效。

R电机M,1//电机M=Q0.3,停止搅拌,Q0.3=0。

S阀X3,1//阀X3=Q0.2,打开输出阀,Q0.2=1。



NETWORK7//检测液位低于L,置标志M0.1(M0.1=1)。

LD阀X3//阀X3=Q0.2,输出混合液,Q0.2=1。

AL检测//L检测=I0.4,混合液全部输出,I0.4=0。

ED//下降沿有效。

SM0.1,1//液位最低标志=M0.1。



NETWORK8//执行控制任务5,启动输出延时定时器(启动T102)。

LDM0.1//液位最低标志=M0.1,液位最低,M0.1=1。

TONT102,+100//液体排空计时=T102。



NETWORK9//执行控制任务6,关闭输出电磁阀等待再一次启动(X3=0)。

LDT102//液体排空计时=T102,液体排空,T102=1。

R阀X3,1//关闭阀X3=Q0.2。

RM0.1,1//清除液位最低标志=M0.1。



NETWORK10//执行停止操作。

LD停止//停止按钮=I0.1,按下停止按钮,I0.1=1。

EU//上升沿有效。

R阀X1,4//复位输出阀X1=Q0.0。



NETWORK11//错误处理

LD启动//启动和停止按钮同时按下的错误。

A停止//

LD阀X1//阀X1和阀X2同时打开的错误。

A阀X2//

OLD

LD阀X1//阀X1和阀X3同时打开的错误。

A阀X3//

OLD

LD阀X2//阀X2和阀X3同时打开的错误。

A阀X3//

OLD

STOP//系统停止。



























·梯形图程序

见图4-3-9,其中输入元件、输出元件和定时器的实际地址,都使用了符号表的名字。



























































































4.4S7-200用于模拟量控制系统

1.关于模拟量控制系统

模拟量控制系统是指输入信号为模拟量的控制系统。控制系统的控制方式上可分为开环控制和闭环控制。开环控制是根据控制的设定值直接向控制对象输出控制信号,这种控制容易受外界干扰而偏离控制目标。对于控制要求比较高的场合,一般都采用闭环控制方式。闭环控制是使用控制的设定值与反馈值的差进行控制的,以求得设定值与反馈值的偏差最小。因而闭环控制也叫偏差控制。闭环控制根据其设定值的不同,又可以分为调节系统和随动系统两种。调节系统的设定值是由控制系统的控制器给出,控制器的作用就是使反馈值向给定值靠近,以反馈值对设定值的偏差最小为目的。随动系统的设定值是由被控制对象给出的,控制器的作用就是使控制目标不断地向被控对象靠近。各种跟踪系统都是随动系统。

模拟量控制系统设计中应该注意抗干扰问题。解决干扰的办法有4个。其一是接地问题。这里包括PLC接地端的接地,要真接地不要假接地。这里所说的接地就是接大地。其二是模拟信号线的屏蔽向题,屏蔽线的始端和终端都要接地。信号线的屏蔽是防止干扰的重要措施。其三是对某些高频信号要解决匹配问题。如果不匹配很容易在信号传送中引进干扰,使信息失真。其四是对信号进行滤波。

模拟量信号如电压值、电流值等,常常会因为现场瞬时干扰而产生较大波动,产生误差。采用滤波可以有效地减小误差。这里所说的滤波包括硬件滤波和软件滤波。软件滤波主要是数字滤波。数字滤波的方法比较多,如常用的平均值法、中值法等等。S7-200系列PLC在系统设计中可以利用STEP7-Micro/MIN32软件对模拟量输入信号增加滤波功能。如果需要数字滤波可以设置滤波选项。

2.模拟量控制系统设计举例

砌块在生产过程中最后一道工序是养护。目前养护过程有两种。一种是自然养护。自然养护只需要一个养护的露天场地,靠阳光加温养护。这种养护方法投资少,养护成本低。其缺点是养护周期长,受天气影响大,对产品质量要求较高时无法保证。而且,对于我国北方地区的冬季也不适用。另一种养护是在养护窑中养护,可以根据砌块的工艺要求制定养护规则,由手动控制或自动控制方法进行养护。养护窑养护过程是严格根据工艺要求实施控制的。它能保证产品的质量,保证生产进度,不受气候影响。其中自动控制方式养护方式,可以借助于PID算法、模糊控制算法及一些优化控制算法,使养护窑的养护温度被严格地控制在养护规则要求的范围之内。

3.系统设计举例

例4-4-1窑温模糊控制设计

图4-4-1所示系统就是对养护窑进行温度控制系统。本系统控制2个养护窑。每个养护窑有一个测温输入点(模拟量输入),一个进气电磁阀控制输入蒸汽(开关量),一个排气电磁阀控制热气的排出(开关量),一个送风电机(开关量),共三个开关量输出。一个启动按钮,一个停止按钮一个急停按钮。一个养护窑需要3个开关量输入,3个开关量输出和一个模拟量输入。整个系统还需要设置一个总启动开关,一个总停止开关(共2个开关量输入点)。一个总进气电磁阀,一个总排风电磁阀(共2个开关量输出点)。合计整个控制系统需要开关量输入8点,开关量输出8点,模拟量输入2点。

控制过程应该满足如下要求。总启动按钮按下以后整个系统允许运行。按下总停止按钮整个系统停止运行。每个窑都可以自行控制。按下各窑的启动按钮后各窑开始运行,按下其停止按钮各窑停止运行,按下急停按钮禁止各窑的输出控制。

每个窑的具体控制流程要求:启动电机供风循环热气流;开启进气阀门供热气控温;经过一定时间(设恒温10小时)关闭进气阀门;打开排气阀门排气;按下停止按钮关风机关排气阀,准备砌块出窑。连锁要求只要有一个窑排气,总排气阀要打开,只有总进气阀打开,才能启动各窑进气阀。

(1)硬件选择:

选CPU224(14点开关量输入/1O开关量输出,提供给扩展单元5VDC电流能力为660mA)主机,模拟量输入模块EM231(4路模拟量输入,消耗5VDC电流为1OmA)模块1块,组成硬件系统。如图4-4-2所示。

所选系统中,CPU224能够满足所带扩展单元全部5VDC电流的要求,且所带的扩展模块不大于7个,这表明硬件配置合理。整个系统具有开关量输入14点,开关量输出10点,模拟量输入4点,这表明硬件系统满足全部工艺要求。

(2)输入输出点地址分配:

输入输出点地址分配见表4-4-1。

表4-4-1

模块号 输入端子号 输出端子号 地址号 信号名称 说明 CPU224 1

2

3

4

5

6

7

8

9

10

11

12

13

14



























1

2

3

4

5

6

7

8

9

10 I0.0

I0.1

I0.2

I0.3

I0.4

I0.5

I0.6

I0.7

I1.0

I1.1

I1.2

I1.3

I1.4

I1.5

Q0.0

Q0.1

Q0.2

Q0.3

Q0.4

Q0.5

Q0.6

Q0.7

Q1.0

Q1.1 l号启动,上升沿有效

l号停止,上升沿有效

1号急停,上升沿有效

2号启动,上升沿有效

2号停止,上升沿有效

2号急停,上升沿有效

总启动,上升沿有效

总停止,上升沿有效













l号进气阀,“1”有效

l号排气阀,“1”有效

l号风机,“1”有效

2号进气阀,“1”有效

2号排气阀,“1”有效

2号风机,“1”有效

总进气阀,“1”有效

总排气阀,“1”有效



按钮

按钮

按钮

按钮

按钮

按钮

按钮

按钮













电磁阀

电磁阀

电机

电磁阀

电磁阀

电机

电磁阀

电磁阀



EM231 1

2

3

4 AIW0

AIW2

AIW4

AIW6 l号热敏电阻

2号热敏电阻



PT100

PT100





内存变量分配表

控制系统的输入输出与内存分配表见表4-4-2。

表4-4-2

序号 名称 地址 注释 1 一号启动 I0.0 上升沿有效 2 一号停止 I0.1 上升沿有效 3 一号急停 I0.2 上升沿有效 4 二号启动 I0.3 上升沿有效 5 二号停止 I0.4 上升沿有效 6 二号急停 I0.5 上升沿有效 7 总启动 I0.6 上升沿有效 8 总停止 I0.7 上升沿有效 9 一号进气阀 Q0.0 “1”有效 10 一号排气阀 Q0.1 “1”有效 11 一号风机 Q0.2 “1”有效 12 二号进气阀 Q0.3 “1”有效 13 二号排气阀 Q0.4 “1”有效 14 二号风机 Q0.5 “1”有效 15 总进气阀 Q0.6 “1”有效 16 总排气阀 Q0.7 “1”有效 17 一号热敏电阻 AIW0 12bit 18 二号热敏电阻 AIW2 12bit 19 一号定时1 T101 时基=100msTON 20 一号定时2 T102 时基=100msTON 21 一号定时3 T103 时基=100msTON 22 一号定时4 T104 时基=100msTON 23 一号定时5 T105 时基=100msTON 24 一号定时6 T106 时基=100msTON 25 一号定时7 T107 时基=100msTON 26 一号定时8 T108 时基=100msTON 27 一号温度值 VW0 16bit 28 一号反馈值 VW2 16bit 29 一号设定值 VW4 16bit 30 一号控制1 VW6 16bit 31 一号控制2 VW8 16bit 32 一号控制3 VW10 16bit 33 一号控制4 VW12 16bit 34 一号控制5 VW14 16bit 35 二号定时1 T109 时基=100msTON 36 二号定时2 T110 时基=100msTON 37 二号定时3 T111 时基=100msTON 38 二号定时4 T112 时基=100msTON 39 二号定时5 T113 时基=100msTON 40 二号定时6 T114 时基=100msTON 41 二号定时7 T115 时基=100msTON 42 二号定时8 T116 时基=100msTON 43 二号温度值 VW20 16bit 44 二号反馈值 VW22 16bit 45 二号设定值 VW24 16bit 46 二号控制1 VW26 16bit 47 二号控制2 VW28 16bit 48 二号控制3 VW30 16bit 49 二号控制4 VW32 16bit 50 二号控制5 VW34 16bit 51 一号养护时间 C0 增计数器 52 二号养护时间 C1 增计数器 53 一号运行标志 M0.0 Bool 54 二号运行标志 M0.1 Bool

(4)程序设计:

·总体思路

因为本系统用来控制规模相同的2个养护窑,所以控制程序采用分块结构。其中子程序SBR0控制一号窑温,SBR1控制二号窑温。主程序OB1分别调用SBR0、SBR1

本例子中由于只采用了子程序调用而没有采用中断,因此结构比较简单。在系统总启动之后,主程序只要不断查询各个子程序的启动条件并根据启动条件去决定是否调用温控程序即可。见图4-4-3。

·控制算法

本例子所采用的控制算法是根据经验写成的控制规则,用模糊控制算法去控制的。其控制规则有:

如果检测温度低于设定值的50%,则进气阀门打开的占空比为l00%。

如果检测温度高于设定值的50%且低于设定值的80%,则进气阀门打开的占空比为70%。

如果检测温度高于设定值的80%且低于设定值的90%,则进气阀门打开的占空比为50%。

如果检测温度高于设定值的90%且低于设定值的100%,则进气阀门打开的占空比为30%。

如果检测温度高于设定值的100%且低于设定值的102%,则进气阀门打开的占空比为10%。

如果检测温度高于设定值的102%,则进气阀门打开的占空比为0%。

为了实现控制算法,在程序设计中每个养护窑安排了8个延时断开定时器(TON)产生4种不同占空比的脉冲。再由这些脉冲去控制进气阀门的打开与关断。



·控制程序

例子中写了主程序OBl和子程序SBR0。



主程序·OB1·

NETWORK1//总进气阀、总排气阀控制

LDSM0.0//SM0.0为常ON继电器

LPS//SM0.0状态压栈

AI0.6//总启动按钮按下I0.6=1

EU//上微分

SQ0.6,1//总启动按钮按下,启动总进气阀Q0.6打开

LRD//读栈,读SM0.0状态。

AI0.7//总停止按钮按下I0,7=1

EU//上微分

RQ0.6,1//总停止按钮按下,关闭总进气阀Q0.6

LPP//弹出SM0.0

LDW>=C0,+600//一号养护时间C0大于或等于lO个小时

OW>=C1,+600//二号养护时间C1大于或等于lO个小时

ALD//上述逻辑块的串联操作

=Q0.7//只要有一个窑养护时间到,需要排气,就打开总排气阀Q0.7



NETWORK2//一号窑控制开始

LDSM0.0//SM0.0为常ON继电器

LPS//SM0.0状态压栈

AI0.0//一号启动按钮按下I0.0=1

SM0.0,1//按下一号启动按钮,一号窑运行标志M0.0置位

LRD//读栈,读SM0.0状态

AI0.1//一号停止按钮按下I0.1=1

RM0.0,1//按下一号停止按钮,一号窑运行标志M0.0复位

LRD//读栈,读SM0.0状态

AW>=C0,+600//一号养护时间C0大于等于10个小时

=Q0.1//一号窑养护时间到(C0计数到600),打开一号排气阀Q0.1排气

LRD//读栈,读SM0.0状态

AI0.2//一号急停按钮I0.2

RQ0.0,3//按下一号急停按钮,停止一号进气阀Q0.0、排气阀Q0.1和风机Q0.2

LPP//弹出SM0.0

AM0.0//一号运行标志M0.0

=Q0.2//一号窑运行期间,一号风机Q0.2为启动状态供风

CALLSBR_0//一号窑运行期间,调用一号窑温控制子程序SBR0



NETWORK3//记录一号窑控温时间。

LDQ0.0//一号进气阀Q0.0

ASM0.4//一号窑养护时间C0的计数脉冲(l分钟一次)

LDI0.0//一号启动=I0.0,C0的复位脉冲之一

OSM0.1//SM0.1,C0的复位脉冲之二

CTUC0,+0//启动一号养护时间计数器C0



NETWORK4//二号窑控制开始

LDSM0.0//常0N继电器

LPS//压栈操作

AI0.3//二号启动=I0.3

SM0.1,1//按下二号启动按钮二号窑运行标志M0.1置位

LRD//读栈

AI0.4//二号停止=I0.4

RM0.1,1//按下二号停止按钮二号窑运行标志M0.1复位

LRD//读栈

AW>=C1,+600//二号养护时间=+600分钟

=Q0.4//二号窑养护时间到(C1计数到600),打开二号排气阀Q0.4排气

LRD//读栈

AI0.5//二号急停=I0.5

RQ0.3,3//停止二号进气阀Q0.3、排气阀Q0.4和风机Q0.5

LPP//弹出

AM0.1//二号运行标志=M0.1

=Q0.5//二号窑运行期间,二号风机Q0.5一直为启动状态

CALLSBR_1//二号窑运行期间,调用二号窑温控制程序SBR1



NETWORK5//记录二号窑控温时间

LDQ0.3//二号进气阀=Q0.3

ASM0.4//二号窑养护时间的计数脉冲(l分钟一次)

LDI0.3//二号启动=I0.3,C1的复位脉冲之一

OSM0.1//SM0.1,C1的复位脉冲之二

CTUC1,+0//启动二号养护时间计数器C1,CTU计数器的计数值反映





子程序·SBR0·

NETWORK1//传送一号窑温值反馈值,一号窑温设定值

LDSM0.0//常ON继电器

MOVWAIW0,VW0//一号温度检测AIW0,送温度存贮单元VW0

-I+6552,VW0//VW0的内容减去6552,送VW0中

/I+131,VW0//VW0的内容被131除,结果送VW0中

MOVWVW0,VW2//窑温检测值-6552)/131=窑温实际温度值VW0,送VW2中

I+100,VW2//一号温度值乘100变成反馈值VW2,将参与控制

MOVW+100,VW4//一号窑温恒温的设定值为100度,送VW4中



NETWORK2//分段控制

LDSM0.0//常ON继电器。

MOVWVW4,VW6//窑温恒温的设定值送VW6

I+50,VW6//第一段的温度控制值为设定值的5O倍

MOVWVW4,VW8//窑温恒温的设定值送VW8

I+80,VW8//第二段的温度控制值为设定值的8O倍

MOVWVW4,VW10//窑温恒温的设定值送VW10

I+90,VW10//第三段的温度控制值为设定值的9O倍

MOVWVW4,VW12//窑温恒温的设定值送VW12

I+100,VW12//第四段的温度控制值为设定值的10O倍

MOVWVW4,VW14//窑温恒温的设定值送VW14

I+102,VW14//第五段的温度控制值为设定值的102。



NETWORK3//控制策略

LDW
LDW>VW2,VW6//窑温的100倍大于设定值的50倍

AW
AT101//反馈值大于第一段且小于第二段控制值时,进气阀占空比=70%

OLD//

LDW>VW2,VW8//窑温的100倍大于设定值的80倍

AW
AT103//反馈值大于第二段且小于第三段控制值时,进气阀占空比=50%

OLD//

LDW>VW2,VW10//窑温的100倍大于设定值的90倍

AW
AT105//反馈值大于第三段且小于第四段控制值时,进气阀占空比=30%。

OLD//

LDW>VW2,VW12//窑温的100倍大于设定值的100倍

AW
AT107//反馈值大于第四段且小于第五段控制值时,进气阀占空比=10%

OLD//

AW
=Q0.0//按照上述占空比开闭进气阀,控制窑温



NETWORK4//设定占空比

LDSM0.0//

LPS//压栈

ANT102//T102的非启动T101,T101定时为3秒

TONT101,+30//

LRD//读栈

AT101//T101启动T102,T102定时为7秒

TONT102,+70//设定占空比=70/(30+70)=70%

LRD//读栈

ANT104//T104的非启动T103,T103定时为5秒

TONT103,+50//

LRD//读栈

AT103//T103启动T104,T102定时为5秒

TONT104,+50//设定占空比=50/(30+70)=50%

LRD//读栈

ANT106//T106的非启动T105,T105定时为7秒

TONT105,+70//

LRD//读栈

AT105//T105启动T106,T106定时为3秒

TONT106,+30//设定占空比=30/(30+70)=30%

LRD//读栈

ANT108//T108的非启动T107,T107定时为9秒

TONT107,+90//

LPP//弹出

AT107//T107启动T108,T108定时为1秒

TONT108,+10//设定占空比=10/(30+70)=10%





子程序·SBR1·

···

因为SBR1与SNR0类同,具体程序省略,若编写时请参阅子程序SBR0。





例4-4-2窑温PWM控制

上述养护窑温度控制也可以用由PID算法代替模糊算法。由PID算法确定进气阀的开闭,从而控制养护窑的养护温度。本例子中是利用PID算法求出每经过一个控制周期中进气阀的占空比,再由这个占空比形成控制进气阀的PWM脉冲。最后由PWM脉冲去控制进气阀的开闭达到控制窑温的目的。

(1)硬件组成:

本例子中的PLC硬件组成、输入输出地址分配及名称定义与例4-4-1相同。

(2)内存变量分配表

控制系统的输入输出与内存分配表见表4-4-3。

表4-4-3

序号 名称 地址 注释 1 一号启动 I0.0 上升沿有效 2 一号停止 I0.1 上升沿有效 3 一号急停 I0.2 上升沿有效 4 二号启动 I0.3 上升沿有效 5 二号停止 I0.4 上升沿有效 6 二号急停 I0.5 上升沿有效 7 总启动 I0.6 上升沿有效 8 总停止 I0.7 上升沿有效 9 一号进气阀 Q0.0 “1”有效 10 一号排气阀 Q0.1 “1”有效 11 一号风机 Q0.2 “1”有效 12 二号进气阀 Q0.3 “1”有效 13 二号排气阀 Q0.4 “1”有效 14 二号风机 Q0.5 “1”有效 15 总进气阀 QO.6 “1”有效 16 总排气阀 Q0.7 “1”有效 17 一号热敏电阻 AIW0 12bit 18 二号热敏电阻 AIW2 12bit 19 一号定时1 T101 时基=100msTON 20 一号定时2 T102 时基=100msTON 21 一号PID表 VB0 8bit 22 一号过程变量 VD0 32bit 23 一号设定值 VD4 32bit 24 一号输出值 VD8 32bit 25 一号增益 VD12 32bit 26 一号采样时间 VD16 32bit 27 一号积分时间 VD20 32bit 28 一号微分时间 VD24 32bit 29 一号积分前项 VD28 32bit 30 一号过程前值 VD32 32bit 31 二号定时1 T103 时基=100msTON 32 二号定时2 T104 时基=100msTON 33 二号PID表 VB36 8bit 34 二号过程变量 VD36 32bit 35 二号设定值 VD40 32bit 36 二号输出值 VD44 32bit 37 二号增益 VD48 32bit 38 二号采样时间 VD52 32bit 39 二号积分时间 VD56 32bit 40 二号微分时间 VD60 32bit 41 二号积分前项 VD64 32bit 42 二号过程前值 VD68 32bit 43 一号养护温度 VW400 16bit 44 二号养护温度 VW402 16bit 45 一号占空比1 VW416 16bit 46 一号占空比2 VW418 16bit 47 二号占空比1 VW420 16bit 48 二号占空比2 VW422 16bit 49 一号养护时间 C0 增计数器 50 二号养护时间 C1 增计数器 51 一号运行标志 M0.0 bool 52 二号运行标志 M0.1 Bool

(3)程序设计:

·总体思路

因为本系统仍然是用来控制规模相同的2个养护窑。控制程序仍然采用分块结构。其中子程序SBR0控制一号窑温,SBR1控制二号窑温。主程序OB1分别调用SBR0、SBR1

本例子中采用了子程序调用和定时中断程序,仍然属于分块结构。在系统总启动之后,主程序不断查询各个子程序的启动条件并根据启动条件去决定是否调用各温控子程序。定时中断程序则利用PID算法计算出各个养护窑进气电磁阀开闭的占空比,并将该占空比的数值传送到对应的变量区。子程序根据其变量区的数据形成相应的脉冲,用以控制相应的阀门。

·控制算法

本例子所采用的控制算法是根据PID算法,形成PT0所需要的脉冲数据。系统用PTO脉冲去控制进气阀门的打开与关断,从而控制养护窑的温度。

·控制程序

例子中写了主程序OBl,子程序SBR0和中断程序INT0。



主程序·OB1



NETWORK1//设置定时中断0的中断事件,中断服务程序为INT0

LDSM0.1//PLC首次扫描周期为0N

MOVB10,SMB34//设置定时中断间隔时间为10毫秒

ATCHINT_0,10//设置定时中断0的中断服务程序为INT0

ENI//系统允许中断



NETWORK2//总进气阀、总排气阀控制

LDSM0.0//常0N继电器

LPS//将SM0.0压栈

AI0.6//总启动按钮按下I0.6=1

EU//取总启动按钮I0.6的上微分

SQ0.6,1//总进气阀Q0.6置l,打开总进气阀供气

LRD//读栈(读SM0.O)

AI0.7//总停止按钮按下I0.7=1

EU//取其上微分

RQ0.6,1//总停止按钮I0.7按下,关闭总进气阀Q0.6

LPP//弹出

LDW>=C0,+600//一号养护时间计数器C0大于等于600(lO个小时),为一号养护时间到

OW>=C1,+600//二号养护时间计数器C1大于等于600(lO个小时),为二号养护时间到

ALD//上述块的串联

=Q0.7//只要有一个窑养护时间到,需要排气,就打开总排气阀Q0.7



NETWORK3//一号窑控制开始

LDSM0.0//常0N继电器

LPS//压栈

AI0.0//一号启动I0.0

SM0.0,1//按下一号启动按钮I0.0,一号窑运行标志M0.0置位

LRD//读栈

AI0.1//一号停止I0.1

RM0.0,1//按下一号停止按钮I0.1,一号窑运行标志M0.0复位

LRD//读栈

AW>=C0,+600//C0>=600

=Q0.1//一号窑养护时间到(C0计数=600),打开一号排气阀Q0.1,向外排气

LRD//读栈

AI0.2//一号急停I0.2

RQ0.0,3//按下急停按钮I0.2,停止一号进气阀Q0.0、排气阀Q0.1和风机Q0.2

LPP//弹出

AM0.0//一号运行标志M0.0

=Q0.2//一号窑运行期间,一号风机Q0.2一直为启动状态

CALLSBR_0//一号窑运行期间,调用一号窑温控制程序SBR0



NETWORK4//记录一号窑控温时间

LDQ0.0//一号进气阀Q0.0

ASM0.4//一号窑控温时间的计数脉冲(l分钟一次)

LDI0.0//一号启动I0.0

OSM0.1//复位一号窑计数器信号为一号启动按钮I0.0按下或PLC上电

CTU600,+0//一号养护时间由CTU计数器的计数值C0确定



NETWORK5//二号窑控制开始

LDSM0.0//常0N继电器

LPS//压栈

AI0.3//二号启动I0.3

SM0.1,1//按下二号启动按钮I0.3,二号窑运行标志M0.1置位

LRD//读栈

AI0.4//二号停止I0.4

RM0.1,1//按下二号停止按钮I0.4,二号窑运行标志M0.1复位

LRD//读栈

AW>=C1,+600//C1>=600

=Q0.4//二号窑养护时间到(C1计数到600),打开二号排气阀Q0.4,向外排气

LRD//读栈

AI0.5//二号急停I0.5

RQ0.3,3//按下急停按钮I0.5,停止二号进气阀Q0.3、排气阀Q0.4和风机Q0.5

LPP//弹出

AM0.1//二号运行标志M0.1

=Q0.5//二号窑运行期间,二号风机Q0.5一直为启动状态

CALLSBR_1//二号窑运行期间,调用二号窑温控制程序SBR1



NETWORK6//记录二号窑控温时间

LDQ0.3//二号进气阀Q0.3

ASM0.4//二号窑控温时间的计数脉冲(l分钟一次)

LDI0.3//二号启动I0.3

OSM0.1//复位二号窑计数器信号为二号启动按钮I0.3按下或PLC上电

CTUC1,+0//二号养护时问由CTU计数器的计数值C1确定



子程序·SBR0·(一号窑温度控制)



NETWORK1//一号窑温检测值转换成实际温度值

LDSM0.0//常ON继电器

MOVWAIW0,VW400//AIW0的内容传到VW400

-I+6552,VW400//(VW400)-6552送到VW400

/I+131,VW400//(VW400)/131送到VW400



NETWORK2//传送一号窑温PID控制的参数表的数据

LDSM0.0//常ON继电器

MOVR0.616,VD4//一号设定值送到VD4

MOVR0.01,VD12//一号增益送到VD12

MOVR0.1,VD16//一号采样时间送到VD16

MOVR3.0,VD20//一号积分时间送到VD20

MOVR0.0,VD24//一号微分时间送到VD24



NETWORK3//产生一号窑温PTO控制的的占空比脉冲

LDSM0.0//常ON继电器

LPS//压栈

ANT102//一号定时2(T102)的非,启动一号定时1(T101)

TONT101,VW416//一号定时1(T101)时间常数为VW416

LRD//读栈

AT101//一号定时1(T101),启动一号定时2(T102)

TONT102,VW418//一号定时2(T102)时间常数为VW418

LPP//弹出

AT101//一号定时1(T101)

=Q0.0//一号进气阀Q0.0。



子程序·SBR1·(二号窑温度控制)

···



中断程序·INT0·(PID控制)



NETWORK1//一号养护窑PID控制算法

LDM0.0//一号运行标志M0.0

LPS//压栈

ASM0.5//SM0.5为周期为l秒钟的时钟脉冲

EU//上升沿有效

MOVWAIW0,AC0//一号温度传送到AC0

DTRAC0,AC0//整数转换成实数

MOVRAC0,VD0//一号过程变量传送到VD0

/R32000.0,VD0//(VD0)/32000.0转换成PID控制的过程变量(PVn)的标准值

LRD//读栈

PIDVB0,0//养护窑运行时,进行PID运算(一号PID表VB0,回路号0)

MOVRVD8,AC0//一号输出值=VD8传送到AC0

R100.0,AC0//100.0乘以一号输出值,传送到AC0。(周期为1000.1S)

ROUNDAC0,AC0//把AC0中的实数转换成双整数

DTIAC0,VW416//把AC0中的双整数转换成整数,传送到VW416

MOVW+100,VW418//把100传送到VW418。

-IVW416,VW418//100-(VW416)传送到VW418(一号占空比)。

LPP//弹出。

AR>=VD0,VD4//一号过程变量(VD0)大于等于一号设定值(VD4),输出占空比=0

MOVW+100,VW416//100送一号占空比1

MOVW+0,VW418//0送一号占空比2



NETWORK2//二号养护窑PID控制算法

LDM0.1//二号运行标志M0.1

LPS//压栈

ASM0.5//SM0.5为周期为l秒钟的时钟脉冲

EU//上升沿有效

MOVWAIW2,AC0//二号温度传送到AC0

DTRAC0,AC0//整数转换成实数

MOVRAC0,VD36//二号过程变量传送到VD36

/R32000.0,VD36//(VD36)/32000.0转换成PID控制的过程变量(PVn)的标准值

LRD//读栈

PIDVB36,1//养护窑运行时,进行PID运算(二号PID表=VB36,回路号=1)

MOVRVD44,AC0//二号输出值(VD44)传送到AC0

R100.0,AC0//100.0乘以二号输出值,传送到AC0。(周期为1000.1S)

ROUNDAC0,AC0//把AC0中的实数转换成双整数

DTIAC0,VW420//把二号占空比1传送到VW420

MOVW+100,VW422//把100传送到二号占空比2(VW422)

-IVW420,VW422//100-(VW420)传送到VW422(二号占空比)

LPP//弹出

AR>=VD36,VD40//如果过程变量(VD36)>=设定值(VD40),输出占空比=0

MOVW+100,VW420//100送二号占空比1

MOVW+0,VW422//0送二号占空比2





例4-4-3窑温PID控制

例4-4-1中,每个养护窑的进气电磁阀(开关量输出)由一个进气电动阀(模拟量输出)代替。用调整开口角度的大小来控制进气量,从而控制窑温。其它条件不变。

一个养护窑需要3个开关量输入,2个开关量输出,1个模拟量输入和1个模拟量输出。整个控制系统需要开关量输入8点,开关量输出6点,模拟量输入2点,模拟量输出2点。重新设计控制系统。

(1)硬件选择

选CPU224(14点开关量输入/10点开关量输出,提供给扩展单元5VDC电流能力为1000mA)主机,模拟量输入模块EM231(4路模拟量输入,消耗5VDC电流为1OmA)模块1块,模拟量输出模块EM232(2路模拟量输出,消耗5VDC电流为1OmA)模块1块,组成硬件系统。如图4-4-4。

所选系统中,CPU224能够满足所带扩展单元全部5VDC电流的要求,且所带的扩展模块不大于7个,这表明硬件配置合理。整个系统具有开关量输入14点,开关量输出10点,模拟量输入4点,模拟量输出2点。这表明硬件系统满足全部工艺要求。

(2)输入输出点地址分配

本例子中的PLC硬件组成、输入输出地址分配及名称定义与例4-4-2类同,现将简表给出如表4-4-4。

表4-4-4

模块号 输入端子号 输出端子号 地址号 信号名称 说明 CPU226 1

2

3

4

5

6

7

8

9

10

11

12

13

14



























1

2

3

4

5

6

7

8

9

10 I0.0

I0.1

I0.2

I0.3

I0.4

I0.5

I0.6

I0.7

I1.0

I1,1

I1.2

I1.3

I1.4

I1.5

Q0.0

Q0.1

Q0.2

Q0.3

Q0.4

Q0.5

Q0.6

Q0.7

Q1.0

Q1.1 l号启动,上升沿有效

l号停止,上升沿有效

1号急停,上升沿有效

2号启动,上升沿有效

2号停止,上升沿有效

2号急停,上升沿有效

总启动,上升沿有效

总停止,上升沿有效













1号排气阀,“1”有效

l号风机,“1”有效

2号排气阀,“1”有效

2号风机,“1”有效

总进气阀,“1”有效

总排气阀,“1”有效 按钮

按钮

按钮

按钮

按钮

按钮

按钮

按钮













电磁阀

电机

电磁阀

电机

电磁阀

电机 EM231 1

2

3

4 AIW0

AIW2

AIW4

AIW6





l号热敏电阻

2号热敏电阻 PT100

PT100 EM232 1

2

AQW0

AQW2 l号进气阀

2号进气阀 电动阀

电动阀

(3)程序设计

·总体思路

因为本系统仍然是用来控制规模相同的2个养护窑。控制程序采用PID控制算法控制进气量。其中子程序SBR0为一号窑温控制参数,SBR1为二号窑温控制参数。主程序OB1分别调用SBR0、SBR1

本例子主程序执行总体启动/停止控制和每个窑的宏观控制。中断程序对各个窑进行PID运算,并进行调温控制。子程序是传送具体单个窑温控制的PID参数。

·控制算法

应用算法控制窑内温度。与例4-4-2不同之处,是PID的输出值是用来控制电动阀门的开通大小,而不是控制其电磁阀的开通时间长短。

·内存变量分配表

控制系统的输入输出与内存分配表见表4-4-5。

表4-4-5

序号 名称 地址 注释 1 一号启动 I0.0 上升沿有效 2 一号停止 I0.1 上升沿有效 3 一号急停 I0.2 上升沿有效 4 二号启动 I0.3 上升沿有效 5 二号停止 I0.4 上升沿有效 6 二号急停 I0.5 上升沿有效 7 总启动 I0.6 上升沿有效 8 总停止 I0.7 上升沿有效 9 一号排气阀 Q0.0 “1”有效 10 一号风机 Q0.1 “1”有效 11 二号排气阀 Q0.2 “1”有效 12 二号风机 Q0.3 “1”有效 13 总进气阀 Q0.4 “1”有效 14 总排气阀 Q0.5 “1”有效 15 一号热敏电阻 AIW0 12bit 16 二号热敏电阻 AIW2 12bit 17 一号进气阀 AQW0 12bit 18 二号进气阀 AQW2 12bit 19 一号PID表 VB0 8bit 20 一号过程变量 VD0 32bit 21 一号设定值 VD4 32bit 22 一号输出值 VD8 32bit 23 一号增益 VD12 32bit 24 一号采样时间 VD16 32bit 25 一号积分时间 VD20 32bit 26 一号微分时间 VD24 32bit 27 一号积分前项 VD28 32bit 28 一号过程前值 VD32 32bit 29 二号PID表 VB36 8bit 30 二号过程变量 VD36 32bit 31 二号设定值 VD40 32bit 32 二号输出值 VD44 32bit 33 二号增益 VD48 32bit 34 二号采样时间 VD52 32bit 35 二号积分时间 VD56 32bit 36 二号微分时间 VD60 32bit 37 二号积分前项 VD64 32bit 38 二号过程前值 VD68 32bit 39 一号养护温度 VW400 16bit 40 二号养护温度 VW402 16bit 41 一号PID输出 VW416 16bit 42 二号PID输出 VW420 16bit 43 一号养护时间 C0 增计数器 44 二号养护时间 C1 增计数器 45 一号运行标志 M0.0 Bool 46 二号运行标志 M0.1 Bool

(4)控制程序

主程序OB1的功能是完成系统控制,子程序SBR0,SBR1的功能是完成各个窑温PID控制参数的检测和传送。而INT0则是对各个养护窑进行PID控制。



·OB1·(主程序)



NETWORK1//设置定时中断

LDSM0.1//PLC上电首次扫描脉冲

MOVB10,SMB34//设置定时中断O的时间间隔为1O毫秒

ATCHINT_0,10//设置定时中断事件l0的中断服务程序为INT0

ENI//开中断



NETWORK2//系统启动和停止控制

LDSM0.0//常0N继电器

LPS//压栈

AI0.6//I0.6总启动

EU//上升沿有效

SQ0.4,1//Q0.4总进气阀

LRD//读栈

AI0.7//I0.7总停止

EU//上升沿有效

RQ0.4,1//Q0.4总进气阀

LPP//弹出

LDW>=C0,+600//C0一号养护时间

OW>=C1,+600//C1二号养护时间

ALD//块的串联

=Q0.5//Q0.5总排气阀。



NETWORK3//一号养护窑控制

LDSM0.0//常0N继电器

LPS//压栈

AI0.0//I0.0一号启动

SM0.0,1//M0.0一号运行标志置位

LRD//读栈

AI0.1//I0.1一号停止

RM0.0,1//M0.0一号运行标志复位

LRD//读栈。

AW>=C0,+600//C0一号养护时间大于等于设定时间

=Q0.0//Q0.0一号排气阀排气

LRD//读栈

AI0.2//I0.2一号急停

RQ0.0,2//Q0.0一号排气阀,Q0.1一号电机复位

LPP//弹出

AM0.0//M0.0一号运行标志

LPS//压栈

=Q0.1//Q0.1一号风机运行

CALLSBR_0//调一号养护窑PID控制子程序SBR0

AR
MOVWVW416,AQW0//VW416一号PID输出送AQW0一号进气阀

LPP//弹出

LDR>=VD0,VD4//VD0一号过程变量大于等于VD4一号设定值

OI0.2//或I0.2一号急停

ALD//

MOVW+16000,AQW0//AQW2=16000,使一号进气阀关闭



NETWORK4//

LDM0.0//M0.0一号运行标志

ASM0.4//SM0.4一分钟计时脉冲

LDI0.0//I0.0一号启动

OSM0.1//SM0.4一分钟计时脉冲

CTUC0,+0//C0累计一号养护时间



NETWORK5//二号养护窑控制。

LDSM0.0//常0N继电器

LPS//压栈

AI0.3//I0.3二号启动

SM0.1,1//M0.1二号运行标志置位

LRD//读栈

AI0.4//I0.4二号停止

RM0.1,1//M0.1二号运行标志复位

LRD//读栈

AW>=C1,+600//C1二号养护时间大于等于设定时间

=Q0.2//Q0.2二号排气阀排气

LRD//读栈

AI0.5//I0.5二号急停

RQ0.2,2//Q0.2二号排气阀,Q0.3二号风机复位

LPP//弹出

AM0.1//M0.1二号运行标志

LPS//压栈

=Q0.3//Q0.3二号风机运行

CALLSBR_1//调二号养护窑PID控制子程序SBR1

AR
MOVWVW418,AQW2//VW418二号PID输出送AQW2二号进气阀

LPP//弹出

LDR>=VD36,VD40//VD36二号过程变量大于等于VD40二号设定值

OI0.5//或I0.5=二号急停

ALD//

MOVW+16000,AQW2//AQW2=16000,使二号进气阀关闭



NETWORK6//

LDM0.1//M0.1二号运行标志。

ASM0.4//SM0.4一分钟计时脉冲。

LDI0.3//I0.3二号启动。

OSM0.1//

CTUC1,+0//C1累计二号养护时间



·SBR0·(传送一号窑PID参数)



NETWORK1//传送一号养护温度

LDSM0.0//

MOVWAIW0,VW400//一号养护温度送VW400

-I+6552,VW400//VW400-6552送VW400

/I+131,VW400//VW400/131送VW400(一号养护温度)



NETWORK2//传送一号窑PID参数。

LDSM0.0//

MOVR0.616,VD4//一号设定值送VD4

MOVR0.01,VD12//一号增益送VD12

MOVR0.1,VD16//一号采样时间送VD16

MOVR3.0,VD20//一号积分时间送VD20

MOVR0.0,VD24//一号微分时间送VD24



·SBR1·(传送二号窑PID参数)

···



·INT0·(各养护窑PID控制算法)



NETWORK1//一号养护窑PID控制算法

LDM0.0//M0.0一号运行标志

LPS//

ASM0.5//秒脉冲时钟

EU//

MOVWAIW0,AC0//一号养护窑温度送AC0

DTRAC0,AC0//转换成实数

MOVRAC0,VD0//一号过程变量送VD0

/R32000.0,VD0//转换成标准值

LPP//

PIDVB0,0//VB0一号PID表

MOVRVD8,AC0//一号PID输出值送AC0

R16000.0,AC0//转换成控制值

ROUNDAC0,AC0//转换成整数

DTIAC0,AC0//

MOVW+16000,VW416//转换成加温电路的控制电压值VW416(一号PID输出)

-IAC0,VW416//



NETWORK2//二号养护窑PID控制算法

LDM0.1//M0.1二号运行标志

LPS//

ASM0.5//秒脉冲时钟

EU//

MOVWAIW2,AC0//二号养护窑温度送AC0

DTRAC0,AC0//转换成实数

MOVRAC0,VD36//二号过程变量送VD36

/R32000.0,VD36//转换成标准值

LPP//

PIDVB36,1//VB36二号PID表

MOVRVD44,AC0//二号PID输出值送AC0

R16000.0,AC0//转换成控制值

ROUNDAC0,AC0//转换成整数

DTIAC0,AC0//

MOVW+16000,VW418//转换成加温电路的控制电压值VW418(二号PID输出)

-IAC0,VW418//





本程序中应注意几个问题:

其一是温度的测量与显示。这些与上面例子相同。

其二是PLC输出的控制问题。本例子中选用双向硅来控制加热系统。双向硅控制电路需要控制电压Vk为0-5V。这个控制电压是由EM232提供的。EM232可以把0-32000的数字量转换成O-l0V的电压。为了能控制本例子中的双向硅,PLC送到EM232的最大数字量限制到16000。为了达到这一要求,在PID的输出值(如VD8)送到EM232时,要乘上l6000而不是32000,这可以保证送到双向硅控制电路的电压不会超过5V。

还要注意的是PID的输出值不能直接加到EM232上,这是由于本例子中的双向硅控制要求决定的。该双向硅控制信号增大时,双向硅导通角后移,输出电压反而降低。为此,用16000-(l6000PID输出值)作为PLC向EM232输出的数字量,用以控制加温电压。





4.5S7-200用于集散控制系统

1.关于集散控制系统

在现代化大规模控制系统中,集散控制有其特有的优越性。一般说来集散控制系统可以分为三层。顶层为管理层,其任务是实现对整个系统的管理工作。中间层为集中监控层,其任务是实现整个系统的监视、控制、调度等工作。底层是分散执行层,其任务是完成局部的控制工作。实际应用中,也可以把顶层和中间层合并为一层,称为监控管理层。底层为控制执行层。PLC集散控制系统是指用PLC承担控制工程的底层控制任务的控制系统。PLC集散控制系统在集散控制系统中有其突出的优点。这就是系统抗干扰性强、可靠性高、稳定性好、故障率低。因此PLC集散控制系统被广泛地应用。

集散控制系统要解决一个最突出的问题是通讯问题。管理层要把管理决策、控制任务、控制参数和调度命令通过通讯电缆传送给控制层。控制层也要通过通讯电缆把控制过程的参数、控制的进程和控制的数据传送给管理层。保障通讯的正常运行对集散控制系统尤为重要。下面以具有监控管理层和控制执行层的两层集散系统为例,说明S7-200在集散控制中的通讯设计。

2.由PLC-PLC网络构成的集散控制系统

由PLC-PLC网络构成的集散控制系统是指管理层的计算机和执行层的计算机均由PLC组成。这样的系统可以采用同一系列的PLC组成。网络上的各结点机型一致,联接方便。由于均采用PLC,使得整个系统的可靠性、稳定性提高。网络的安装和维护也十分方便。



例4-5-1:图4-5-1给出了由4台SIMATICS7-224CPU构成的PLC=PLC网络。工作站0为主工作站(Master)。工作站l、工作站2和工作站3为从工作站(Slave)。主工作站轮流发送四个字节的输出数据到每个从工作站。随之每个从工作站响应产生四个字节的输入数据。采用自由通信口模式(FreeportMode)进行数据的传输。

(l)硬件要求

本控制系统要求有四台PLC。现选S7-224PLC四台,其中一台作为主工作站0、另外三台分别为从工作站l、从工作站2和从工作站3。准备一根9芯电缆连接线和网络连接器。一台编程器或装有S7-200编程软件的微计算机。

(2)主工作站程序结构

本程序中共有l个主程序OB1、l个子程序SBR0和7个中断程序。

·OBl的主要功能是调用SBR0和执行通讯以外的任务。限于篇幅,本文只考虑通讯程序的设计。

·SBR0的主要功能是初始化自由通讯口,发送数据,处理指针。

启动发送定时中断程序INT1和发送完成中断程序INT10。

·INT0的主要功能是禁止接收中断和接收定时中断,修整指针,发送数据。待全部发送完毕置结束标志。启动发送定时中断程序INT1和发送完成中断程序INT10。

·INTl的主要功能是禁止发送结束中断和定时中断,置PLC为STOP方式。

·INTl0的主要功能是禁止发送结束中断和定时中断。

启动接收定时中断程序INT0和接收数据中断程序INT11。

·INT11的主要功能是接收从站地址,验证从站地址。

启动接收数据字节中断程序INT12。

·INT12的主要功能是接收从站返回的4个字节的数据。

启动接收数据中断程序INT13。

·INTl3的主要功能是接收FCS码,验证FCS码。把接收到的数据传送到输入缓冲区;

启动定时中断程序INT0。

·INTl4的主要功能是重新启动定时中断程序INT0

(3)通讯格式

·传输数据格式为;偶校验、每个字符占8位(bit)、传送速率为9600波特

·传输信息格式为;B0B1B2B3FCS

(4)内存分配

·在PLC网络通讯中,主工作站的站号为0。从工作站的站号要从l开始,2、3。通讯中,主工作站要从l号从站开始,然后2号、3号。因而,从工作站的数目必须提供给主工作站,存于主工作站的VB0单元。从工作站也将自身站号(地址)存于从站的VB0中。

·在整个网络通讯过程中,主工作站必须轮流发送四个字节的输出数据到每个从工作站,随之每个从工作站必须响应产生四个字节的输入数据返回到主工作站。为此主工作站要留有两个数据存储区,一个作为远程输入(输入缓冲区),另一个作为远程输出(输出缓冲区)。主工作站的缓冲区分配如表4-5-1。

表4-5-1

工作站 工作站1 工作站2 工作站3 输入缓冲区 VB500字节0 VB504字节0 VB508字节0 VB501字节1 VB505字节1 VB509字节1 VB502字节2 VB506字节2 VB510字节2 VB503字节3 VB507字节3 VB511字节3 输出缓冲区 VB540字节0 VB544字节0 VB548字节0 VB541字节1 VB545字节1 VB549字节1 VB542字节2 VB546字节2 VB550字节2 VB543字节3 VB547字节3 VB551字节3

·当主工作站向从工作站发送数据和接收从工作站返回的数据时,在主工作站存储区开辟了发送缓冲区和接收缓冲区。主工作站向从工作站发送数据时,先把对应的从工作站输出缓冲区的数据传送到发送缓冲区,然后再由发送指令发出。主工作站在接收从工作站的返回信息时,先把返回信息输入到接收缓冲区,再把接收缓冲区的数据传送到输入缓冲区。主工作站的发送缓冲区和接收缓冲区如表4-5-2。

表4-5-2

发送缓冲区 定义 接收缓冲区 定义 VB600 字符长度 VB608 接收字节0 VB601 从站地址 VB609 接收字节1 VB602 发送字节0 VB610 接收字节2 VB603 发送字节1 VB611 接收字节3 VB604 发送字节2 VB605 发送字节3 1 VB606 校验码FCS VB607 XXX

主工作站程序

·OB1·

NETWORK1//调用子程序0处理通讯协议。

LDSM0.0//总是1

CALLSBR_0//调用子程序0

···

·SBR0·

//初始化自由通讯口,发送数据。更新输出缓冲区的数据。

NETWORK1//当开关处于TERM位置时,保持PPI协议。

LDNSM0.7//当开关处于TERM位置时,则

MOVB16#48,SMB30//使自由口通讯协议无效。

DTCH8//使接收中断无效。

DTCH9//使发送中断无效。

DTCH10//使定时中断无效。

CRET//条件返回。



NETWORK2//当开关不在TERM位置时,执行自由口协议。

LDNSM30.0//开关不在TERM位置时,不是自由口通讯模式。

MOVB16#49,SMB30//自由口通讯有效;偶校验,每个字符8位,波特率为9.6k

ENI//开中断。

MOVBVB1,SMB34//设置定时中断0的时间间隔由VB1的内容确定。

CRET//条件返回。



NETWORK3

LDSM0.0//总是1。

RM0.0,1//M0.0=1表示主站在向从站发送数据,M0.0=1表示发收结束。

MOVD&VB540,VD630//指针指向输出数据缓冲区。

MOVD&VB500,VD634//指针指向输入数据缓冲区。

MOVB6,VB600//发送缓冲区长度为6个字节。

MOVB1,VB601//工作站的地址=1。

MOVDVD630,VD602//置入发送区的数据。

MOVWVW602,AC0//计算校验码FCS。

XORWVW604,AC0//

MOVBAC0,VB606//校验码FCS送VB600。

XORWAC0,VW606//存储校验码FCS。

ATCHINT_1,10//使INT0为发送定时中断0中断程序。

ATCHINT_10,9//使INT10为通讯口0为发送中断程序。

XMTVB600,0//从VB600开始,发送数据。



NETWORK4//远程I/O没有更新完,循环等待完成。

LBL0//跳转(JMP0)入口。



NETWORK5

LDNM0.0//如果远程I/0更新还没有完成

JMP0//等待它完成



NETWORK6//下一循环的准备。

LDSM0.0//SM0.0总是1

MOVDVD100,VD540//更新输出缓冲区1。

MOVDVD104,VD544//更新输出缓冲区2。

MOVDVD108,VD548//更新输出缓冲区3。



·INT0·

NETWORK1//禁止接收中断和接收定时中断,送远程I/O循环结束符。

LDSM0.0//总是1。

DTCH8//关闭接收字符中断。

DTCH10//关闭定时中断0中断



NETWORK2

LDB>=VB601,VB0//如果这是网络中的最后一个从工作站号,VB601=VB0。

=M0.0//指示远程I/O循环结束。

CRETI//有条件中断返回



NETWORK3

LDSM0.0//总是1。

INCWVW600//从工作站地址加1。

+D+4,VD630//增大指针,指向下一个工作站的输出数据缓冲区。

+D+4,VD634//增大指针,指向下一个工作站的输入数据缓冲区。

MOVDVD630,VD602//计算FCS。

MOVWVW620,AC0//

XORWVW604,AC0//

MOVBAC0,VB606//

XORWAC0,VW606//存储FCS。

ATCHINT_1,10//发送定时中断1有效(定时到,调INT1)。

ATCHINT_10,9//发送完中断有效(发送完调INT10)。

XMTVB600,0//发送数据,TBL=VB600,通讯口0。



·INT1·

NETWORK1//处理XTM的发送定时中断0时间到。

LDSM0.0//总是1。

DTCH10//终止中断定时0中断事件。

DTCH9//终止发送结束中断事件。

STOP//使PLC运行模式转为STOP。



·INT10·

NETWORK1//用以启动接收数据中断。

LDSM0.0//总是1。

DTCH9//停止发送结束中断。

ATCHINT_0,10//启动接收定时中断0的定时中断。

ATCHINT_11,8//启动接收字符中断。



·INT11·

NETWORK1//接收信息的第l个字符。

LDNSM3.0//如果没有奇偶校验错误,SM3.0=0。

AB=SMB2,VB601//如果第l个字符为从工作站的站号,SMB2=VB601。

MOVW+4,AC1//置入接收字符总数于AC1。

MOVD&VB608,VD638//VD638指针指向接收缓冲区。

ATCHINT_12,8//使接收字符中断有效(调INT12)。

CRETI//有条件中断返回



NETWORK2

LDSM0.0//总为1。

ATCHINT_0,10//启动接收定时中断0定时中断(调INT0)。

ATCHINT_14,8//启动接收字符中断(调INT14)。



·INT12·

NETWORK1//接收字符

LDNSM3.0//如果没有奇偶校验错误,SM3.0=0。

MOVBSMB2,VD638//将接收的数据存入接收缓冲区。

INCDVD638//指向下1个接收缓冲区的地址。

DECWAC1//接收的字符数减1。



NETWORK2//收到全部字符,启动接收FCS中断。

LDSM1.0//如果收到四个字符,AC1=0。

ATCHINT_13,8//启动接收FCS字符中断(调INT13)。

CRETI//有条件中断返回



NETWORK3

LDSM3.0//如果出现奇偶校验错误,SM3.0=1。

ATCHINT_0,10//启动接收定时中断0(调INT0)。

ATCHINT_14,8//启动接收字符中断(调INT14)。



·INT13·

NETWORK1//接收FCS字符。

LDSM0.0//总是1。

ATCHINT_0,10//启动接收定时中断0中断(调INT0)。



NETWORK2

LDSM3.0//如果奇偶校验错误,SM3.0=1。

CRETI//有条件中断返回



NETWORK3//存储数据。

LDSM0.0//总是l。

MOVDVD608,VD634//存储收到的数据。



·INT14·

NETWORK1//重新启动接收定时中断。

LDSM0.0//总是l。

ATCHINT_0,10//启动接收定时中断0(调用INT0)。



(6)从工作站程序结构

本程序中共有l个主程序、2个子程序和8个中断程序。

·OBl的功能是当工作方式开关在RUN位置时,调子程序SBR0。

当工作方式开关在TERM位置时,调子程序SBR1。

·SBR0的主要功能是设置自由口通讯模式。

启动定时中断0的中断程序INT0和接收字符中断程序INT14。

·SBR1的主要功能是停止自由口通讯模式,启动PPI模式。

·INT0的主要功能是使接收输入数据有效。

启动接收字符中断INT11。

·INTl的主要功能是停止定时中断和发送完成中断,PLC为STOP模式。

·INT2的主要功能是当接收到信息的首个字符时。

启动定时中断程序INT0和接收字符中断程序INT14。

·INTl0的主要功能是使发送完成中断无效。

启动定时中断INT0和接收字符中断INTl4。

·INT11的主要功能是接收到首个字符时,设置接收定时有效,设置接收数据准备。

启动接收定时中断INT2和接收数据中断INTl2。

·INT12的主要功能是如果接收无错误,接收信息。

功能之二是启动接收校验码FCS中断程序INT13。

·INT13的主要功能之一是检查FCS。

功能之二是向主站发送返回数据。

·INTl4的主要功能是启动发送定时中断程序INT0。

(7)通讯格式

·传输数据格式为;偶校验、每个字符用8位(bit)、传送速率为9600波特

·传输信息格式为;B0B1B2B3FCS

(8)内存分配

·在PLC网络通讯中,从工作站则将自身站号(地址)存于从站的VB0中。

·在整个网络通讯过程中,从工作站一方面接收从主工作站发来的数据,同时也要把对主工作站的响应发回主工作站。为此从工作站也要留有两个数据存储区,一个作为远程输入(输入缓冲区),另一个作为远程输出(输出缓冲区)。从工作站的缓冲区分配如表4-5-3。

表4-5-3

缓冲区 内存分配 定义 输入缓冲区 VB500 字节0 VB501 字节1 VB502 字节2 VB503 字节3 输出缓冲区 VB540 字节0 VB541 字节1 VB542 字节2 VB543 字节3

·当从工作站向主工作站发送数据和接收主工作站返回的数据时,在从工作站存储区开辟了发送缓冲区和接收缓冲区。从工作站向主工作站发送数据时,先把从工作站输出缓冲区的数据传送到发送缓冲区,然后再由发送指令发出。从工作站在接收主工作站的返回信息时,先把返回信息输入到接收缓冲区,再把接收缓冲区的数据传送到输入缓冲区。从工作站的发送缓冲区和接收缓冲区如表4-5-4。

表4-5-4

发送缓冲区 定义 接收缓冲区 定义 VB600 字符长度 VB608 接收字节0 VB601 从站地址 VB609 接收字节1 VB602 发送字节0 VB610 接收字节2 VB603 发送字节1 VB611 接收字节3 VB604 发送字节2 VB605 发送字节3 1 VB606 校验码FCS VB607 XXX

(9)从工作站程序

·OB1·

NETWORK1//调用子程序0,启动通讯。

LDSM0.7//工作方式开关在RUN位置,SM0.7=l。

ASM0.1//PLC第一次扫描SM0.1=1。

LDSM0.7//工作方式开关在RUN位置,SM0.7=l。

EU//SM0.7出现上升沿有效。

OLD//上述两逻辑块的或。

CALLSBR_0//调用子程序0,启动通讯。



NETWORK2//调用子程序1。

LDNSM0.7//工作方式开关在TERM位置,SM0.7=0。

CALLSBR_1//调用子程序1,停止通讯。



·SBR0·

//初始化从工作站。

NETWORK1//设置自由口通讯格式。

LDSM0.0//总是l。

MOVB16#49,SMB30//自由口通讯有效;偶校验,每个字符8位,波特率为9.6k

ENI//允许中断。

MOVBVB1,SMB34//设置定时中断0的时间间隔由VB1的内容确定。

ATCHINT_0,10//启动接收定时中断事件的中断程序INT0。

ATCHINT_14,8//启动接收字符中断事件的中断程序INTl4。



·SBR1·

//使自由口通讯模式无效。

NETWORK1//使自由口通讯模式无效,禁止接收、发送和定时中断。

LDSM0.0//总是l。

MOVB16#48,SMB30//使自由口无效,设置PPI方式。

DTCH8//关闭接收字符中断。

DTCH9//关闭发送完成中断。

DTCH10//关闭定时中断0的中断。



·INT0·

//启动接收输入数据

NETWORK1//启动接收输入数据。

LDSM0.0//总是1。

ATCHINT_11,8//启动接收字符中断程序INTll。



·INT1·//中断程序l

//禁止定时中断和发送完成中断,转换工作方式为STOP方式。

NETWORK1//禁止定时中断和发送完成中断。

LDSM0.0//总是1。

DTCH10//终止中断定时0中断事件。

DTCH9//终止发送结束中断事件。

STOP//使PLC运行模式转为STOP。



·INT2·

//启动接收字符中断和定时中断。

NETWORK1//启功定时中断和接收中断

LDSM0.0//总是l。

ATCHINT_0,10//启动接收定时中断INT0。

ATCHINT_14,8//启动接收字符中断INTl4。



·INT10·

//使发送完成中断无效,启功定时中断和接收字符中断。

NETWORK1//用以启动接收数据中断。

LDSM0.0//总是1。

DTCH9//停止发送完成中断。

ATCHINT_0,10//启动接收定时中断0的定时中断。

ATCHINT_14,8//启动重新接收字符中断。



·INT11·

//当收到首个字符时,设置接收指针,启动接收中断程序和定时中断程序。

NETWORK1//接收信息的第l个字符,设置接收指针,启动接收中断。

LDNSM3.0//如果没有奇偶校验错误,SM3.0=0。

AB=SMB2,VB0//如果第l个字符为从工作站的站号,SMB2=VB601。

MOVW+4,AC1//置接收字符总数于AC1。

MOVD&VB608,VD638//VD638指针指向接收缓冲区。

ATCHINT_2,10//使接收定时有效调INT2

ATCHINT_12,8//使接收字符中断有效调INT12

CRETI//有条件中断返回。



NETWORK2

LDSM0.0//总为1。

ATCHINT_0,10//启动接收定时中断INT0。

ATCHINT_14,8//启动重新接收中断INT14。



·INT12·

//接收字符。

NETWORK1//接收字符

LDNSM3.0//如果没有奇偶校验错误,SM3.0=0。

MOVBSMB2,VD638//将接收的数据存入接收缓冲区。

INCDVD638//指向下1个接收缓冲区的地址。

DECWAC1//接收的字符数减1。



NETWORK2//收到四个字符,启动接收FCS中断。

LDSM1.0//如果收到四个字符,AC1=0。

ATCHINT_13,8//启动接收FCS字符中断INT13。

CRETI//有条件中断返回。



NETWORK3

LDSM3.0//如果出现奇偶校验错误,SM3.0=1。

ATCHINT_0,10//启动接收定时中断INT0。

ATCHINT_14,8//启动四个接收字符中断INT14。



·INT13·

//接收FCS字符,并启动发送数据。

NETWORK1//关闭接收字符中断和定时中断。

LDSM0.0//总是1。

DTCH8//关闭接收中断。

DTCH10//关闭定时中断0中断。



NETWORK2//接收主站的输出数据,并发送返回主站的输入数据。

LDNSM3.0//如果无奇偶校验错误,SM3.0=0。

MOVDVD608,QD0//存储主站的输出数据(该数据送到从站输出端输出)。

MOVB6,VB600//送字符长度。

MOVBVB0,VB601//送从站的地址。

MOVDID0,VD602//送返回主站的数据(该数据送到从站输入端信息)。

MOVWVW602,AC0//形成FCS字节。

XORWVW604,AC0//

MOVBAC0,VB606//

XORWAC0,VW606//存储FCS字节。

ATCHINT_1,10//启动发送定时中断程序INT0。

ATCHINT_10,9//启动发送完成中断INI10。

XMTVB600,0//发送向主站返回数据。

CRETI//有条件中断返回。



NETWORK3//启动定时中断和接收中断。

LDSM0.0//总是l。

ATCHINT_0,10//启动接收定时中断INT0。

ATCHINT_14,8//启动接收字符中断INTl4。



·INT14·

//启动定时中断。

NETWORK1//重新启动接收定时中断。

LDSM0.0//总是l。

ATCHINT_0,10//启动接收定时中断INT0。



3.由微机-PLC网络构成的监控系统

由微机-PLC网络构成的监控系统可以分为两层。指管理层由工业控制计算机组成,执行层PLC组成。由于管理层采用工控机,其输入/输出数据的处理十分方便,人机界面十分友好,管理水平高。执行层采用PLC,使得过程控制可靠、稳定、安全。

例4-5-2:本例子中连接了一台微机和三台SIMATICS7-224CPU。微机为工作站0是主工作站(Master),与工作站l、工作站2和工作站3相连。工作站l、工作站2和工作站3为从工作站(Slave)。主工作站轮流向三个从工作站发送二个字节的输出命令。每发出-个命令,随后要接收其中一个从工作站的响应数据。主工作站要根据接收到的数据对从工作站的控制给予描述。这样就可以在主工作站上,十分方便地监视从工作站的控制状态。本系统也可以是无线的。

采用自由通信口模式(FreeportMode)进行数据的传输。

(l)硬件要求

本控制系统要求有一台工控机和三台PLC。现选S7-224三台分别为从工作站1、从工作站2和从工作站3。准备一根9芯电缆连接线和网络连接器。一台装有87-200编程软件的工业控制计算机作为主工作站0,一个总线转换模块(RS-232/RS-485转换器)。

(2)主工作站程序结构

主工作站程序的程序可以用高级语言编写,本能例子中的程序是用VB6.0编制的,系统的功能是由工控机(主工作站)监视三台PLC(从工作站)的温度控制过程。主工作站程序具体构成如下。

控件构成

有一个窗体Form1。窗体上有个控件。图片控件Picture1用于显示各个从工作站的温度控制曲线。文本控件Text1用于显示各个从工作站的温度控制参数。按钮控件Command1控制启动过程。按钮控件Command2控制停止过程。定时器控件Timer1用于定时发送数据和接收数据。定时器控件Timer2用于定时显示各个从工作站的温度控制曲线和参数。通讯控件MSComm1用于设置网络通讯参数。

代码构成(即VB程序)

SubForm_Load()子程序用于初始化。

SubCommand1_Click()子程序用于控制启动过程。

SubCommand2_Click()子程序用于控制停止过程。

SubTimer1_Timer()子程序用于定时发送数据和接收数据。

SubTimer2_Timer()子程序用于定时显示各个从工作站的温度控制曲线和参数。

(3)主工作站程序

Dimx1,k1,k2,k3,k4,i,j''声明模块级变量

Dimp11,p12,p21,p22,p31,p33

Dimaa()AsByte

PrivateSubCommand1_Click()''点击按钮1,启动定时接收和发送数据.

Timer1.Enabled=True''定时器1有效

EndSub''子程序的结束



PrivateSubCommand2_Click()''点击按钮2,停止定时接收和发送数据.并退出程序.

Timer1.Enabled=False''定时器1无效

UnloadMe''卸载VB程序

EndSub''子程序的结束



PrivateSubForm_Load() ''初始化,确定显示屏(Picture1)尺寸,分度,标题

Cls''请屏

Timer1.Enabled=False''设计定时器1无效

Timer1.Interval=100''设计定时器1的定时时间(0.1秒).

Timer2.Enabled=True''设计定时器2有效

Timer2.Interval=1000''设计定时器2的定时时间(1秒).

Picture1.ScaleMode=0''为显示屏设计横坐标和纵坐标的分度线.

MSComm1.CommPort=1''设定通讯口(COM1).

MSComm1.Settings="9600,n,8,1"''设定波特率9600,无校验,8位数据,1个停止位

MSComm1.InputLen=4''设定通讯口输入缓冲区为4个字符.

Form1.WindowState=2''设计运行窗体为最大化.

MSComm1.PortOpen=False''关闭定通讯口.

EndSub''子程序的结束



PrivateSubTimer1_Timer()''定时向PLC发送数据.接收PLC的响应的返回数据

MSComm1.PortOpen=True''打开通讯口

ReDimaa(3)''声明过程级随机变量(aa).

Ifk1=0ThenMSComm1.Output="1"+Chr(10)+Chr(13)''k1=0,向PLC1发送数据.

Ifk1=1ThenMSComm1.Output="2"+Chr(10)+Chr(13)''k1=1,向PLC2发送数据.

Ifk1=2ThenMSComm1.Output="3"+Chr(10)+Chr(13)''k1=2,向PLC3发送数据.

DoWhileMSComm1.InBufferCount=0''等待接收数据

Loop

aa=MSComm1.Input''接收一个PLC的返回数据,并把数据送到aa

Ifaa(2)>20Oraa(0)>64ThenGoToxxx:''滤波(检测温度大于1500度,从工作站编号大于64滤掉)

k2=Int(aa(0)255+aa(1)1)''分离k2为从站编号。

SelectCasek2''识别从站号,传送数据到对应变量

Case1''如果是1号从站

p12=Int(aa(2)255+aa(3)1)''数据送到p12

Case2''如果是2号从站

p22=Int(aa(2)255+aa(3)1)''数据送到p22

Case3''如果是3号从站

p32=Int(aa(2)255+aa(3)1)''数据送到p32

CaseElse

EndSelect''识别结束

k1=k1+1''指针指向下一台PLC.

Ifk1>2Thenk1=0

xxx:

MSComm1.PortOpen=False''关闭通讯口

EndSub''子程序的结束



PrivateSubTimer2_Timer()''绘制各PLC的温控曲线

x1=x1+1''设置时间坐标增量=1秒.

Picture1.PSet(x1,2000-10p12),vbRed''绘制l号PLC的温度曲线(红色)

Picture1.PSet(x1,2000-10p22),vbYellow''绘制2号PLC的温度曲线(黄色)

Picture1.PSet(x1,2000-10p32),vbBlue''绘制3号PLC的温度曲线(兰色)

Text1.Text="温度1:"&Str(p12)&""温度2:"&Str(p22)&""温度3:"&Str(p32)&"时间:"&Str(x1)"

EndSub''子程序的结束



说明:“''”VB中,表示其后面是注释。



(4)从工作站程序结构

从工作站程序用STEP7语言编写。

·OBl的功能是设置通讯参数,检测温度,执行乒乓控制策略和发送返回数据。

·INT0的功能是接收数据,并存入输入缓冲区。

·输入数据区:VB400

·输出数据区:VD300

·接收缓冲区:VB200

·发送缓冲区:VD100

·从工作站用乒乓控制算法,对前面所述窑温度进行恒温控制。输出为开关量。下面是1号从站程序。

(5)从工作站程序



·OB1·

NETWORK1//设置100度恒温控制的自由口通讯方式,启动接收字符中断。

LDSM0.1//PLC首次扫描

MOVB9,SMB30//自由口0通讯,波特率9600波特,数据8位,l个停止位,无校验。

MOVB16#B0,SMB87//初始化RCV,允许RCV,有结束符,检查空闲时间。

MOVB16#0A,SMB89//结束符为“A”(回车符)。

MOVB5,SMB90//空闲时间为5ms。

MOVB6,SMB94//一次接收最大字符为6个。

ATCHINT_0,23//启动通讯口0接收完成中断。

ENI//全局允许中断。

RCVVB199,0//接收数据(数据表首地址为VB199)。



NETWORK2//检测温度AIW0,实测温度存于VW0。

LDSM0.0//总是l。

MOVWAIW0,VW0//检测温度送VW0。

-I+6552,VW0//VW0-6552送VW0。

/I+131,VW0//VW0/131送VW0,完成了检测值到实际温度刻度的转换。

MOVW1,VW300//从站编号送输出缓冲区。

MOVWVW0,VW302//检测温度送输出缓冲区。



NETWORK3//设置VW4为温度控制上限,VW2为温度控制上限。

LDSM0.0//总为1。

MOVW+98,VW2//控温下限为98度送VW2。

MOVW+102,VW4//控温上限为102度送VW4。



NETWORK4//控制策略:检测温度低于下限,加温(Q0.0=1)。

LDW
ASM0.5//加温触发脉冲。

SQ0.0,1//加温输出。



NETWORK5//控制策略:检测温度高于上限,停止加温(Q0.0=1)。

LDW>VW0,VW4//停止加温条件。

ASM0.5//停止加温触发脉冲。

RQ0.0,1//停止加温输出。



NETWORK6//准备传送参数(PLC响应码,实测温度)

LDSM0.0//总是l。

MOVB4,VB99//发送字节数送VB99。

MOVWVW300,VW100//发送检测温数据送VW100。

MOVWVW302,VW102//发送从站编号数据送VW102。



NETWORK7//传送数据(VW0,VW10)

LDSM0.5//发送能发脉冲。

XMTVB99,0//通过口0发送数据。



·INT0·

NETWORK1//通讯口接收数据完成后的中断。

LDB=SMB86,16#20//SMB86等于16#28,表示PLC收到法束符。

MOVDVB200,VB400//收到结束符,把收到数据传到VB400。

CRETI//中断有条件返回。

NOT//

RCVVB199,0//否则继续接收。



4.6S7-200系统的安全设计方法

尽管PLC的运行是安全、可靠的。作为一个系统来说稳定可靠仍然是不可忽视的问题。系统安全计设就是要充分利用PLC的特点,使PLC的运行能真正达到安全、可靠。

1.硬件保护

·连锁保护:在硬件设计中要考虑到有些可移动设备的连锁问题。比如电机的正转和反转接触器之间要有互锁保护。液压系统中双向电磁阀也要有互锁保护。互锁的作用是使得两个相反动作设备不会同时动作。常用的办法是将两个设备的常闭触相互串联,使用连锁开关等。

·限位保护:对有些快速动作的机械设备不仅要有行程开关限位,还要有极限限位保护。限位保护可以由电子限位开关、机械限位开关直至机械挡板等组成。

·急停保护:急停保护是用来应付突发故障时,避免导致更大事故的措施。一般是装有急停开关。压下急停开关,利用切断硬件电路使系统处于暂停状态。等候处理故障。

2.软件保护

由于PLC是利用存贮程序进行控制的。用存贮的程序进行安装保护,也可以使其只执行正确的操作,而拒绝错误的命令。

·连锁保护:利用PLC的常闭触点对需要互锁的线圈进行连锁保护。

·限位保护:利用PLC的输入端增加限位输入信号,在程序中利用这类信号实现保护功能。

·限时保护:PLC的定时器可以用作各种保护。它可以用计时特性进行超时保护。在运动速度基本恒定的条件下,可以作超距离限位保护等等。

·自检保护:可以充分利用PLC的自检功能,PLC多数功能模块都有自检信息,通过对这些自检信息的检查可以及时发现隐患清除故障。也可以针对工程的特点自编诊断程序排除故障。确保PLC可靠、稳定、安全运行。





图4-3-1



图4-3-2











图4-3-3



图4-3-4



图4-3-5



图4-3-7



图4-3-6



图4-3-8



图4-3-9



图4-4-1



图4-4-2







图4-4-3



图4-4-4



图4-5-1



图4-5-2







献花(0)
+1
(本文系草戒指工作...首藏)