7
6GK7243-1GX00-0XE0传授代理
一、可编程序控制器
是以微处理器为基础,综合了计算机技术与自动控制技术为一体的工业控制产品,是在硬接线逻辑控制技术和计算机技术的基础上发展起来的。通常把PLC认为是由等效的继电器、定时器、计数器等元件组成的装置。
二、可编程序控制器简介
PLC组成:*处理单元(CPU)、存储器、输入/输出单元(I/O单元)、电源、编程器等;
PLC分类:按照结构形成分为整体式和模块式;按照输入/输出(I/O)点数分为小、中和大型;
PLC特点:可靠性高,通用性强,编程简单(常用编程语言有梯形图、语句表、逻辑符号图、顺序功能图和高级语言等),体积小,安装维护简便等;
PLC工作方式:PLC是采用循环扫描的工作方式,即每一次状态变化需一个扫描周期。PLC循环扫描时间一般为几毫秒至几十毫秒。整个过程分为内部处理、通信、输入处理、执行程序、输出处理几部分;
PLC发展趋势:向高速度、大容量、多种类发展;丰富编程语言,开发用户友好界面;开发智能模块;加强联网通讯能力;予留现场总线接口(现已有产品应用,如:SIEMENS SIMATIC S7-400);拥有智能诊断等功能;保护功能加强,有效保护用户信息,防止非法复制、修改;对现场环境的适应能力更强。
三、可编程序控制器选型
在PLC实际应用中,是以其为控制核心组成电气控制系,实现对生产、工业过程的控制。
方案设计步骤
首先要全面了解被控制对象的机构、运行过程等,并明确动作逻辑关系;
根据系统功能要求(包括输入、输出信号数量的多少、性质、参数;有无特殊功能要求;是否联网运行等)选择PLC型号及各种附加配置,并有规则、有目的的分配输入、输出点;
根据控制及流程要求,对应输入、输出开发相应应用程序;同时连接PLC与外部设备连线;
将编制完成的程序写入PLC中,模拟工况运行,进行调试及修改;在模拟调试成功后,接入现场实际控制系统中进行再次调试,直至完全通过为止。
四、应用体会
1、选型
在PLC选型是时主要是根据所需功能和容量进行选择,并考虑维护的方便性,备件的通用性,是否易于扩展,有无特殊功能要求等。
PLC输入/输出点确定:I/O点数选择时要留出适当余量;
PLC存储容量:系统有模拟量信号存在或进行大量数据处理时容量应选择大一些;
存储维持时间:一般存储约保持1~3年(与使用次数有关)。若要长期或掉电保持应选用EEPROM存储(不需备用电源),也可选外用存储卡盒;
PLC的扩展:可通过增加扩展模块、扩展单元与主单元连接的方式。扩展模块有输入单元、输出单元、输入/输出一体单元。扩展部分**出主单元驱动能力时应选用带电源的扩展模块或另外加电源模块给以支持;
PLC的联网:PLC的联网方式分为PLC与计算机联网和PLC之间相互联网两种。与计算机联网可通过RS232C接口直接连接、RS422+RS232C/422转换适配器连接、调制解调通讯连接等方式;一台计算机与多台PLC联网,可通过采用通讯处理器、网络适配器等方式进行连接,连接介质为双绞线或光缆;PLC之间互联时可通过专用通讯电缆直接连接、通讯板卡或模块+数据线连接等方式。
2、充分合理利用软、硬件资源
不参与控制循环或在循环前已经投入的指令可不接入PLC;
多重指令控制一个任务时,可先在PLC外部将它们并联后再接入一个输入点;
尽量利用PLC内部功能软元件,充分调用中间状态,使程序具有完整连贯性,易于开发。同时也减少硬件投入,降低了成本;
条件允许的情况下较好独立每一路输出,便于控制和检查,也保护其它输出回路;当一个输出点出现故障时只会导致相应输出回路失控;
输出若为正/反向控制的负载,不仅要从PLC内部程序上联锁,并且要在PLC外部采取措施,防止负载在两方向动作;
PLC紧急停止应使用外部开关切断,以确保安全。
3、使用注意事项
不要将交流电源线接到输入端子上,以免烧坏PLC;
接地端子应独立接地,不与其它设备接地端串联,接地线裁面不小于2mm2;
辅助电源功率较小,只能带动小功率的设备(光电传感器等);
一般PLC均有一定数量的占有点数(即空地址接线端子),不要将线接上;
输出有继电器型,晶体管型(高速输出时宜选用),输出可直接带轻负载(LED指示灯等);
PLC输出电路中没有保护,因此应在外部电路中串联使用熔断器等保护装置,防止负载短路造成损坏PLC;
输入、输出信号线尽量分开走线,不要与动力线在同一管路内或捆扎在一起,以免出现干扰信号,产生误动作;信号传输线采用屏蔽线,并且将屏蔽线接地;为保信号可靠,输入、输出线一般控制在20米以内;扩展电缆易受噪声电干扰,应远
离动力线、高压设备等。
输入/断开的时间要大于PLC扫描时间;
PLC存在I/O响应延迟问题,尤其在快速响应设备中应加以注意。
4、故障检查与排除
(1)故障显示
①设计时可使每一个故障点均有信号表示。优点是直观便于检查,缺点是程序复杂且输出单元占用较多,投资较大;
②设计时也可将所有故障点均由一个信号表示。优点是节约成本,减少了对输出单元 的占有,缺点是具体故障回路不能直接判断出;
③设计时还可将性质类似的一组故障点设成一个输出信号表示。
以上三种方案各有利弊,在条件允许、并且每个回路均很重要,要求必须快速准确判断出故障点时采用**种方案较好;一般情况下采用*三种方案比较好,由于故障分类报警显示,就可直接判断出故障性质,知道会对设备或工业过程造成何种影响,可立即采取相应措施加以处理,同时再结合其它现象、因素、另一组或几组报警条件将具体故障点从此类中划分出来。整个PLC内部程序、外部输出点及接线增加不多,性能价格比较高。
(2)输入、输出故障的排除
一般PLC均有LED指示灯可以帮助检查故障是否由外部设备引起。不论在模拟调试还是实际应用中,若系统某回路不能按照要求动作,首先应检查PLC输入开关电接触点是否可靠(一般可通过查看输入LED指示灯或直接测量输入端),若输入信号未能传到PLC,则应去检查输入对应的外部回路;若输入信号已经采集到,则再看PLC是否有相应输出指示,若没有,则是内部程序问题或输出LED指示灯问题;若输出信号已确信发出,则应去检查外部输出回路(从PLC输出往后检查)。
在输出回路中,由于短路或其它原因造成PLC输出点在内部粘滞,只需将其接线换至另一予留的空接线点上,同时修改相应程序,将原输出标号改为新号即可。
PLC虽然适合工业现场,使用中也应注意尽量避免直接震动和冲击、阳光直射、油雾、雨淋等;不要在有腐蚀性气体、灰尘过多、发热体附近应用;避免导电性杂物进入控制器。
一、PLC技术要素5) 利用PLC的*在线连接,构建的防火、防盗、防有毒气体泄漏等的保安监控系统,让上班族高枕**;构建的急救系统,让家有老人、孩子和病人的家庭倍感放心。利用PLC也可提供独立的数字化社区服务和电子商务,实现家庭办公和远程家电控制。


面向对象编程是计算机高级语言的一种先进的编程模式,在工业控制系统的PLC程序中也可以采用这种设计思想,虽然我们无法实现面向对象的很多优秀特点如 “继承”,甚至于它根本就不具备面向对象编程语言的特点,但面向对象编程的基本概念就是类和类的实例(即对象),我们只需要使用这种概念就可以了。在计算 机编程中我们需要把一些事物抽象和归纳,才能编写类,而在工业控制系统中,控制对象如:电机,阀等等是很明显的控制类别,不需要抽象就可以很明显的针对它 们编写类,以下将会用到西门子的Step7编程语言和的Unity 编程语言来讲解PLC的面向对象编程。
一、 实现方式
在Step7中使用功能块(即FB)编程,一谈到此大家就会想到西门子提出的模块化编程,不错,就是这个模块化编程,但西门子提出的模块化、背景数据块、 多重背景等名词并不能让大家很明白的理解和使用这种优秀的设计理念。如果大家从面向对象编程的角度去理解,则可以很好的理解这种设计模式。“FB块”被看 成“类”,它可以被看成是对相似的控制对象的代码归纳,如对MM440的变频器可以编写FB块:MtrMM440,这在面向对象编程中称为“类”,当需要 编程控制具体的电机时,可以给它分配一个背景DB块,在面向对象编程中称为类的实现(即创建类的实例:对象),当需要控制多个电机时,可以分配不同的背景 DB到这个FB块,即创建类的多个实例。Step7中有另外一种程序块,即FC块,以FC块为主的编程在西门子中称为结构化编程,这也可以类比于计算机编 程中的面向过程编程,即纯粹以函数为主体的编程。
的Unity软件编程可以更好的理解面向对象编程。它的DFB定义中包含输入/输出参数,私有/共有变量,以及代码实现,而这正是计算机的面向对象 编程中“类”的基本元素,而创建类的实例(对象)就像创建普通的“布尔”变量一样,只需在“Function Blocks”中定义这种“类”的变量即可。
Step7和Unity都可以采用面向过程和面向对象编程方式,这两种编程方式的区别类似于计算机高级语言中的C语言和C++语言编程的区别。
以下的讲解将会把Step7中的FB和Unity中的DFB称为“类”,Step7中的FB+背景DB以及Unity中DFB的实例称为“对象”。
二、 面向对象编程架构
以上讲解的是实现细节,而编程思想是建立在程序架构上的,不是某个局部使用了面向对象方式,则可以称之为这种编程就是面向对象编程。这种编程需要从以下方面着手:
1、 电路设计的结构化。
这里主要以自动线为主介绍,对于单机机床可以是它的简化结构,
<1>、自动线层:这是较高层次,它拥有一个主PLC,对属于它下面的各区域控制
<2>、工程层:拥有独立的配送电系统,但没有PLC,只有分布式模块,由自动线控制。顾名思义,它有着较大的独立性,可以作为一个单独的工程项目设计和制造,当自动线比较小时,可以省略该层次。
<3>、功能组层:根据工艺划分,将实现某一个工艺功能的区段设备划分为一个功能组,它隶属于工程层,当工程层被省略时,隶属于自动线层。
面向对象编程并不一定要求使用以上的结构,但好的电气结构更利于面向对象编程。
2、 任何控制对象逻辑都在“类”中实现。
为了做到这点,必须分析与控制对象相关的信息,譬如,对于一个电机,有以下相关的信息需要考虑:
输入信息:
<1>、电路保护信息,如电机的空气开关,热继电器等。
<2>、功能保护信息,如运动电机的限位开关,风机的风压开关,油泵的油位开关等。
<3>、启动和终止条件,以上的电路保护和功能保护都可能导致电机运转终止,复位也可能导致重启动,但这里的条件指的是正常运行的启动和终止条件,譬如顺序控制的流程步。
<4>、控制模式:如手动和自动等。
<5>、故障复位:通过复位信息,重新启动。
输出信息:
<1>、控制输出,如控制电机的主接触器。
<2>、状态信息输出
<3>、故障输出
。。。
状态储存信息:
用于代码实现的中间变量以及可以被人机界面读出的状态变量等
把以上信息都整合到一个类中,并尽量使类的参数标准化。不过,同高级编程语言还是曾在一些差别,针对Step7,应该遵循的标准是:程序结构由FC实现,对象控制由FB实现,如下的一种结构体系(其电气结构来自上面的介绍):
这只不过是一个粗略的PLC程序架构体系,好的架构应该更完善和科学。
3、 规划好数据结构
数据结构的定义相当重要,并尽量统一这些结构,不要顾虑存储空间,当今的PLC内存足以容纳大量的数据。说明一点的是在Step7中尽量不要在类的外部定义数据结构(UDT),而是在类里面定义,虽然会造成不同类中同一结构的重复性定义,但却提高了类的独立性。
三、 优越性
1、 标准化
使用这种设计模式,可以将程序设计分为两个阶段,即标准库、基本架构开发,以及实际应用层面设计。其中标准库、基本架构是制定程序标准化的基础,而应用层 设计是针对具体的控制工程编程,这样可以把程序设计人员分成两类,一类是标准开发,由*程序员负责,一类是应用设计(其中程序调试规划到应用设计),由 经过标准化培训的一般程序员完成,通过这种分配就可以解决中国工业自动化中面临的尴尬局面。传统的中国控制工业,一个程序设计由一个人完成,这样他还必须 负责现场调试,而拥有丰富经验的程序员一般是三十岁后,这时他已经成家,而显然长期出差对家庭不利,很多优秀的程序员为了家庭考虑不得不改行,要么转到管 理岗位,要么去制造工厂搞设备维护,这是资源的严重流失。毫无疑问,使用以上的设计流程,我么可以让经验丰富的程序员搞标准库和架构的设计,而让刚踏入这 个行业的年轻人搞应用设计和调试,这不仅可以让老程序员继续他自己的工作,而不影响家庭,也可以让年轻的程序员参入现场调试,培养自己的经验,提高自己的 收入。
这可能让某些人士担心,认为年轻的程序员可以参加现场的调试吗?可以肯定的是没有标准化支撑的程序不仅年轻的程序员编不出来,而且现场调试会问题多多。但有了好的标准化后,一年半以上工作经验的程序员就应该能够独立面对自动线。
PLC中的面向对象编程的核心就是黑匣子编程,针对Step7,我们使用FB去实现每一个对象的控制,控制逻辑、报警处理、信号交换全在FB中,对于应用 设计人员,不需要明白里面的代码实现,只需要了解该FB的功能以及如何使用好它就行,这样对于应用程序人员的编程能力要求大大降低,对于编程只不过是遵循 架构,拷贝代码,改变输入输出条件而已。
那么调试呢?很多人认为使用FB编程的较烦就是FB的多次调用后,根本无法诊断这些代码,从技术层面上讲确实如此,我们除了从背景DB上查看信息外, 是无法在它多次被调用后监控代码的,但我已说过,这是黑匣子编程,我们不需要诊断这些代码,只需要知道什么样的输入、什么样的参数设定导致什么样的输出就 行,代码的逻辑与功能好坏是由标准库开发人员负责的,这就要求标准开发人员需要对他设计的功能块在不同条件下进行不同的测试,保证无误,还需要编写完整、 详尽的功能说明文档,以便于应用设计人员了解这些块,标准架构并不是制定出来就一劳永逸的,针对千变万化的工程,它是需要不断完善和修订的,这也是一个工 程公司可以实实在在进行知识积累的地方。
程序不仅需要给调试人员使用,而且用户(设备维护人员)也需要了解,如果把完整的标准库文档给用户,可能曾在技术外泄的可能,若不给,对他们诊断设备可能 曾在困难,这就需要标准制定人员制作另外一分文档,即设备维护文档,其知识的透漏以用户能够使用程序进行诊断为限。