产品描述
西门子6ES7221-1BF22-0XA8全年质保
面向对象编程是计算机语言的一种的编程模式,在工业控制系统的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上查看信息外, 是无法在它多次被调用后监控代码的,但我已说过,这是黑匣子编程,我们不需要诊断这些代码,只需要知道什么样的输入、什么样的参数设定导致什么样的输出就 行,代码的逻辑与功能好坏是由标准库开发人员负责的,这就要求标准开发人员需要对他设计的功能块在不同条件下进行不同的测试,保证无误,还需要编写完整、 详尽的功能说明文档,以便于应用设计人员了解这些块,标准架构并不是出来就一劳永逸的,针对千变万化的工程,它是需要不断完善和修订的,这也是一个工 程公司可以实实在在进行知识积累的地方。
程序不仅需要给调试人员使用,而且用户(设备维护人员)也需要了解,如果把完整的标准库文档给用户,可能曾在技术外泄的可能,若不给,对他们诊断设备可能 曾在困难,这就需要标准人员制作另外一分文档,即设备维护文档,其知识的透漏以用户能够使用程序进行诊断为限。
本文主要分析了PLC数字量输入模块(DI模块)和传感器仪表的几种常见的接口电路形式,针对DI模块内部输入电路和传感器输出接口电部的不同结构,给出了其相互连接时的接线方法,确保在以后的工程设计中仪表选型和现场施工接线的正确性。
1 引言
在工程设计和现场施工中,常会遇到各种各样的仪表接线的问题,只有理解了仪表传感器的内部接线方式,以及PLC内部电路结构,才能正确的选型,保证所选仪表与厂家的PLC的正确接线。因此,就对PLC输入输出模块内部的输入输出电路和常用仪表输出接口有一个比较清楚系统的了解。
为了防止外界线路产生的干扰引起PLC的非正常工作,甚至对PLC内部元器件造成损坏,PLC数字量输入模块(简称DI模块)的输入接口电路常采用光电耦合元件来隔离输入信号与内部电路之间的联系。输入端的信号驱动光电耦合器内部发光二管,发光二管发光,光敏三管导通,即可将外部输入信号地传输至处理器。
各厂商PLC DI模块公共端的接口电路,有光电耦合器正共点与负共点之分,而各种仪器仪表的输出电路,有干接点、有源输出、高电平和低电平输出之分,因此,我们在选配外部仪表传感器时,需要对所选PLC DI模块的输出电路,以及传感器仪表输出电路的结构进行区分和了解,才能正确的选型,以保证后期现场施工时与PLC厂家DI模块的正确接线。
2 PLC DI模块按输入类型分类
PLC DI模块的输入接口电路,按外接电源类别,可分为直流和交流输入电路;按输入公共端电流的流向分,可分为源输入和漏输入电路;按光耦发光二管公共端的连接方式可分为共阳和共阴输入电路。
3 按外接电源的类型分类
3.1 直流输入电路
图1为直流输入电路(只画出了一路输入电路),直流输入电路的输入电压一般为DC24V。直流输入电路要求外部输入信号为无源的干接点(直流电源由PLC柜内部提供)或直流有源的无触点开关接点,当外部输入接点信号闭合时,输入端与直流电源正接通,电流通过电阻R1,光电耦合器内部LED,VD1(接口指示)到COM端形成回路;光敏三管饱和导通,该导通信号传送至处理器,从而CPU 认为该路有信号输入。当外部输入元件与直流电源正断开时,光耦中的发光二管熄灭,光敏三管截止,CPU 认为该路没有信号输入。直流电源可以由PLC柜内部提供,也可以是外接直流电源。(//www./版权所有)
3.2 交流输入电路
如图2为交流输入电路,交流输入端的输入电压一般为120V 或230V。电路要求外部输入信号的接点为无源干接点信号或交流有源的无触点开关接点信号。它与直流输入电路的区别在于:光电耦合器前增加了一级降压电路和整流桥电路。交流电流经电阻R的限流和电容C的滤波(滤去电源中的直流部分),再经过桥式整流,变成降压后的直流电流,后续的电路原理与直流输入电路一致。从图中可以看出,由于交流输入电路中增加了限流、隔离和整流三个环节,输入信号的延迟时间要比直流输入电路长,这是其不足之处。但由于其输入端是高电压,其输入信号的性比直流输入电路高。交流输入电路一般多用于油雾、粉尘等恶劣环境中,对响应性要求不高的场合,而直流输入方式用于环境较好,电磁干扰不严重,对响应时间要求较高的场合。
4 按流入公共端电流的流向分类
PLC DI模块内部将所有输入电路(光电耦合器)的一端连接到公共端(COM或M),各输入电路的另一端接到其对应的输入端,也称此结构为单端共点输入。这种做法可以减少输入端子。
电流从DI模块的输入端流出,流入电源负,即为拉电流(Sink Current)或漏型输入;电流由电源正流入公共端,电源正与公共端相连,即共阳;传感器为低电平有效。
电流由电源正流入DI模块输入端,即为灌电流(Source Current)或灌型输入;电流由公共端流入电源负,电源负与公共端相连,即共阴;传感器为高电平有效。
4.1 漏型拉电流输入电路
漏型拉电流输入电路如图3所示,此时,电流从输入端流出,流入直流电源的负,由直流电源的正流入PLC公共端(COM端或M端)。
4.2 源型灌电流输入电路
源型输入电路如图1所示,此时,电流的流向正好和漏型的电路相反。电流从直流电源正流入DI模块的输入端,并由公共端流入直流电源的负。
4.3 切换型输入电路
为了适应各地区的使用习惯,有些厂家PLC DI模块的内部公共端子是采用S/S端子,此端子可以与电源的24V+(正)或24V-(负)相连,结合外部仪表接线的变化,使DI模块的输入电路既可以是漏型输入电路,也可以是源型输入电路。较采用公共端(COM端或M端)的DI模块灵活。S/S端子的发展是为了适用日系与欧系PLC混合使用的工控场合,起到通用的作用,S/S端子也称之 SINK/SRCE可切换型。其电路形式如图4所示。作为源输入时,公共端接电源的负;作为漏输入时,公共端接电源的正。这样,可以根据现场的需要来接线,给接线工作带来大的灵活。 通过选择可以将基本单元的所有输入设置为漏型输入或是源型输入,但不能混合使用。
漏型拉电流输入电路、源型灌电流输入电路以及切换型输入电路,均为直流输入电路。
5 传感器开关量信号的内部电路及其与PLC输入电路的连接
在工程设计过程中,常会遇到各种各样的输出为开关量信号的仪表,如:压力开关、流量开关、物位开关、温度开关、阀门状态反馈、电机的运行状态、故障状态等。这些传感器的输出电路的样式多种多样。因此,需要对它们充分了解,才能保证与所选的PLC的DI模块进行匹配接线。
5.1无源干接点
阀门等的限位开关、行程开关、电机远程/就地按钮开关、拉线开关、跑偏开关、电机运行状态的继电器触点等,属于无源干接点信号,不存在电源的性因素,比较简单,接线容易,可应用于以上各种类型的DI输入模块。
5.2有源两线制传感器
有源两线传感器(如接近开关等),分直流与交流,直流两线制开关分二管性保护图5与桥整流性保护图6,前者在接PLC时需要注意性,后者就不需要注意性。
直流两线制开关量仪表与漏型拉电流PLC DI模块的接线如图7所示:
直流两线制开关量仪表与源型灌电流PLC DI模块的接线如图8所示:
交流两线制开关量仪表与源型灌电流PLC的接线如图9所示:
5.3 有源三线传感器
传感器的输出信号,除了像行程开关、继电器触点等一些干接点信号外,一些传感器还提供NPN和PNP集电开路输出信号。其实质就是利用三管的饱和和截止,输出两种状态,即高电平和低电平信号,属于开关型传感器。PNP与NPN型传感器的输出信号是截然相反的。对于不同厂商的PLC DI模块输入电路,选用NPN还是PNP型输出的传感器,有时会感到无所适从。下面主要介绍一下这两种输出类型的传感器与PLC DI模块输入电路的接线。
5.3.1 NPN和PNP输出电路的形式
图10为NPN型传感器输出电路:NPN集电开路输出电路的输出端(OUT端)通过三级管和直流电源负连接。在初始状态,传感器未动作时,三管处于截止状态,输出端(OUT端)接近直流电正,为高电平;当传感器动作时,三管饱和导通,OUT端的电流流向直流电源负,输出—低电平信号,OUT端(输出端)电位接近负,也就是通常说的高电平翻转成低电平。
图11为PNP型传感器输出电路:PNP集电开路输出电路的输出端(OUT端)通过三管和直流电源正连接。当传感器动作时,三管饱和导通,直流电源正电流流向OUT端,OUT端(输出端)电位接近直流电源正,输出高电平信号,也就是通常说的低电平翻转成高电平。
5.3.2 NPN和PNP输出电路和PLC输入模块的连接
1)NPN集电开路输出
由以析可知,NPN集电导通时输出为0V,当输出OUT端和PLC DI模块输入相连时,电流从PLC的输入端流出,从DI模块的公共端流入,PLC DI模块的输入电路为漏型输入电路,即:NPN型输出的传感器只能接漏型或切换型输入电路的DI模块,如图12所示:
2)PNP集电开路输出
PNP集电导通时输出为+V高电平,当输出OUT端和 PLC DI模块输入相连时,电流从DI模块的输入端流入,从DI模块的公共端流出, PLC DI模块的输入电路为源型输入电路,即:PNP型输出的传感器只能接源型或切换型输入电路的DI模块,如图13所示:
6 结束语
正是由于传感器输出信号和PLC DI模块输入电路形式的多样性,我们在做工程设计的过程中,要充分了解PLC DI模块输入电路的类型和传感器输出信号的形式,只有这样,才能确保在PLC厂商确定之后,仪表传感器选型的正确性,才能保证在不增加额外元器件的情况下,传感器与PLC输入模块接线正确性,才能在实际的应用中游刃有余。
3 控制部分设计
基于控制要求,合理地分配 PLC 输入、输出点位。 如表 1 所示为 PLC 的输入输出各点位的分配。
表 1 I/O 分配表
先将机械手进行复位操作。 当机械手未到原位,此时 PLC 输入电平信号跟脉冲信号 CP-1 给步进电机横轴驱动器,连接横轴的步进电机反转,横轴往后缩,后缩到位后会碰到后限位开关 SQ3,SQ3 启动之后,主机就输入电平信号跟脉冲信号 CP-2 给竖轴驱动器,竖轴步进电机控制竖轴上升,上升到位后会触碰到竖轴反限位开关 SQ4,SQ4 启动之后,主机输入旋转脉冲信号 SB-0 给直流电机驱动器 3,4,完成机械手的复位动作即 YU21 和 YU22 的动作。 复位操作结束后,主机输入脉冲信号 CP-1 给横轴驱动器,步进电机开始正转,横轴实现进给操作 YV2,横轴进给到位时碰到正限位开关 SQ1,进给完成。 机械手收到主机发送电压信号,旋转至已定的角度,完成动作 YV20,这时气动电磁阀断电,机械手张开。主机再同时输入电平信号跟脉冲信号 CP-2 给竖轴驱动器使步进电机开始反转,竖轴下降。当竖轴下降至碰到限位开关时 SQ4,下降停止,电磁阀得电机械手夹紧。 夹紧后,主机只输入脉冲信号 CP-2 给竖轴步进电机驱动器,步进电机得电正转竖轴上升,碰到限位开关 SQ2 后,上升停止,启动横轴步进电机驱动器脉冲 CP-1,步进电机得电开始反转,横轴缩回。 碰到限位开关 SQ3 后,PLC 发送旋转脉冲信号 SB0给底盘,底盘正旋转到位。此时主机再次输入脉冲信号 CP-1 给横轴驱动器,横轴二次向前伸出,碰到限位开关 SQ1 后停止。 停止后主机输入电平和脉冲信号 CP-2 给竖轴驱动器 2 使得竖轴电机 2 反转使竖轴再次下降,下降到位碰到竖轴正限位开关 SQ2 停止,此时电磁阀断电,卡爪和真空吸盘放松,释放工件,完成整套的工件运送工作。本机械手实训装置采用的 PLC 具有高速运算能力和 PID 调节功能,同时可以输出两路脉冲控制两台电机的优点。 图 3 为控制输出两路脉冲梯形图,可以控制两个方向的电机同时运动,节省搬运时间。
产品推荐