7
西门子6ES7235-0KD22-0XA8售后
现场电磁干扰是PLC控制系统中常见也是易影响系统性的因素之一,所谓治标先治本,找出问题所在,才能提出解决问题的办法。因此知道现场干扰的。
(1)干扰源及一般分类
影响PLC控制系统的干扰源,大都产生在电流或电压剧烈变化的部位,其原因是电流改变产生磁场,对设备产生电磁辐射;磁场改变产生电流,电磁高速产生电磁波。通常电磁干扰按干扰模式不同,分为共模干扰和差模干扰。共模干扰是信号对地的电位差,主要由电网串入、地电位差及空间电磁辐射在信号线上感应的共态(同方向)电压叠加所形成。共模电压通过不对称电路可转换成差模电压,直接影响测控信号,造成元器件损坏(这就是一些系统I/O模件损坏率较高的主要原因),这种共模干扰可为直流,亦可为交流。差模干扰是指作用于信号两间的干扰电压,主要由空间电磁场在信号间耦合感应及由不平衡电路转换共模干扰所形成的电压,这种干扰叠加在信号上,直接影响测量与控制精度。
(2)PLC系统中干扰的主要来源及途径
a.强电干扰
PLC系统的正常供电电源均由电网供电。由于电网覆盖范围广,它将受到所有空间电磁干扰而在线路上感应电压。尤其是电网内部的变化,开关操作浪涌、大型电力设备起停、交直流传动装置引起的谐波、电网短路暂态冲击等,都通过输电线路传到电源原边。
b.柜内干扰
控制柜内的高压电器,大的电感性负载,混乱的布线都容易对PLC造成一定程度的干扰。
c.来自信号线引入的干扰
与PLC控制系统连接的各类信号传输线,除了传输有效的各类信息之外,总会有外部干扰信号侵入。此干扰主要有两种途径:一是通过变送器供电电源或共用信号仪表的供电电源串入的电网干扰,这往往被忽视;二是信号线受空间电磁辐射感应的干扰,即信号线上的外部感应干扰,这是很严重的。由信号引入干扰会引起I/O信号工作异常和测量精度大大降低,严重时将引起元器件损伤。
d. 来自接地系统混乱时的干扰
接地是提高电子设备电磁兼容性(EMC)的有效手段之一。正确的接地,既能抑制电磁干扰的影响,又能抑制设备向外发出干扰;而错误的接地,反而会引入严重的干扰信号,使PLC系统将无法正常工作。
e.来自PLC系统内部的干扰
主要由系统内部元器件及电路间的相互电磁辐射产生,如逻辑电路相互辐射及其对模拟电路的影响,模拟地与逻辑地的相互影响及元器件间的相互不匹配使用等。
f.变频器干扰
一是变频器启动及运行过程中产生谐波对电网产生传导干扰,引起电网电压畸变,影响电网的供电质量;二是变频器的输出会产生较强的电磁辐射干扰,影响周边设备的正常工作。PLC的存储器包括系统存储器和用户存储器两部分。
系统存储器用来存放由PLC生产厂家编写的系统程序,系统程序固化在ROM内,用户不能直接改,它使PLC具有基本的功能,能够完成PLC设计者规定的各项工作。系统程序质量的好坏,很大程度上决定了PLC的性能,其内容主要包括三部分。部分为系统管理程序,它主要控制PLC的运行,使整个PLC按部就班地工作。二部分为用户指令解释程序,通过用户指令解释程序,将PLC的编程语言变为机器语言指令,再由CPU执行这些指令。三部分为标准程序模块与系统调用,它包括许多不同功能的子程序及其调用管理程序,如完成输入、输出及特殊运算等的子程序。PLC的具体工作都是由这部分程序来完成的,这部分程序的多少也决定了PLC性能的高低。
用户存储器包括用户程序存储器(程序区)和功能存储器(数据区)两部分。用户程序存储器用来存放用户针对具体控制任务用规定的PLC编程语言编写的各种用户程序,以及用户的系统配置。用户程序存储器根据所选用的存储器单元类型的不同,可以是RAM(有掉电保护)、EPROM或EEPROM存储器,其内容可以由用户任意修改或增删。用户功能存储器是用来存放(记忆)用户程序中使用器件的ON/OFF状态/数值数据等。用户存储器容量的大小,关系到用户程序容量的大小,是反映PLC性能的重要指标之一可编程控制器的编址就是对PLC内部的元件进行编码,以便程序执行时可以地识别每个元件。PLC内部在数据存储区为每一种元件分配一个存储区域,并用字母作为区域标志符,同时表示元件的类型。如:数字量输入写入输入映象寄存器(区标志符为I),数字量输出写入输出映象寄存器(区标志符为Q),模拟量输入写入模拟量输入映象寄存器(区标志符为AI),模拟量输出写入模拟量输出映象寄存器(区标志符为AQ)。除了输入输出外,PLC还有其他元件,V表示变量存储器;M表示内部标志位存储器;SM表示特殊标志位存储器;L表示局部存储器;T表示定时器;C表示计数器;HC表示高速计数器;S表示顺序控制存储器;AC表示累加器。掌握各元件的功能和使用方法是编程的基础。下面将介绍元件的编址方式。
存储器的单位可以是位(bit)、字节(Byte)、字(Word)、双字(Double Word),那么编址方式也可以分为位、字节、字、双字编址。
1. 位编址
位编址的方式为:(区域标志符)字节号·位号,如I0.0;Q0.0;I1.2。
2. 字节编址
字节编址的方式为:(区域标志符)B(字节号),如IB0表示由I0.0~I0.7这8位组成的字节。
3. 字编址
字编址的方式为:(区域标志符)W(起始字节号),且有效字节为起始字节。例如VW0表示由VB0和VB1这2字节组成的字。
4. 双字编址
双字编址的方式为:(区域标志符)D(起始字节号),且有效字节为起始字节。例如VD0表示由VB0到VB3这4字节组成的双字。
1. 温度
PLC要求环境温度在0~55℃,安装时不能放在发热量大的元件下面,四周通风散热的空间应足 够大,基本单元和扩展单元之间要有30mm以上间隔;开关柜上、下部应有通风的百叶窗,防止太阳光直接照射;如果周围环境过55℃,要安装电风扇强迫通风。
2. 湿度
为了**PLC的绝缘性能,空气的相对湿度应小于85%(无凝露)。
3. 震动
应使PLC远离强烈的震动源,防止振动频率为10~55Hz的频繁或连续振动。当使用环境不可避 免震动时,采取减震措施,如采用减震胶等。
4. 空气
避免有腐蚀和易燃的气体,例如、等。对于空气中有较多粉尘或腐蚀性气体的环境,可将PLC安装在封闭性较好的控制室或控制柜中,并安装空气净化装置。 5. 电源 PLC供电电源为50Hz、220(1±10%)V的交流电,对于电源线来的干扰,PLC本身具有足够的抵制能力。对于性要求很高的场合或电源干扰特别严重的环境,可以安装一台带屏蔽层的变比为1:1的隔离变压器,以减少设备与地之间的干扰。还可以在电源输入端串接LC滤波电路。 FX系列PLC有直流24V输出接线端,该接线端可为输入传感器(如光电开关或接近开关)提供直流24V电源。当输入端使用外接直流电源时,应选用直流稳压电源。因为普通的整流滤波电源,由于纹波的影响,容易使PLC接收到错误信息。
用户可以把自己编制程序集成到编程软件Micro/WIN中。这样可以在编程时调用实现相同功能的库指令,而不必同时打开几个项目文件拷贝。指令库也可以方便地在多个编程计算机之间传递。
新建库操作步骤:
步:在Micro/WIN的File(文件)菜单中,选择Creat Library...(建立库)命令;或者用鼠标右键单击指令树的Libraries(指令库)分支,选择Creat Library...
二步:在Creat Library对话框中选择哪些子程序要集成为指令库
三步:在Properties(属性)标签中设置
指令库名称
要生成的库文件的目录路径
版本信息
四步:在Protection(保护)标签中设置密码
五步:按OK按钮确定,输出指令库文件
指令库文件扩展名为.mwl,缺省情况下存在Micro/WIN安装目录下的lib文件夹中。库文件可以作为单的文件拷贝、移动。添加指令库
面向对象编程是计算机语言的一种的编程模式,在工业控制系统的PLC程序中也可以采用这种设计思想,虽然我们无法实现面向对象的很多特点如 “继承”,甚至于它根本就不具备面向对象编程语言的特点,但面向对象编程的基本概念就是类和类的实例(即对象),我们只需要使用这种概念就可以了。在计算 机编程中我们需要把一些事物抽象和归纳,才能编写类,而在工业控制系统中,控制对象如:电机,阀等等是很明显的控制类别,不需要抽象就可以很明显的针对它 们编写类,以下将会用到西门子的Step7编程语言和的Unity 编程语言来讲解PLC的面向对象编程。
步:在Micro/WIN的File(文件)菜单中选择Add/Remove Libraries...(添加/删除指令库)命令 ;或者在指令树的Libraries(指令库)分支上单击鼠标右键,选择Add/Remove Libraries...
二步:按Add(添加)按钮,选择新定义的库文件路径。用户自定义库将自动添加到Micro/WIN指令树的Libraries分支下。
调用用户定义指令库
指令库的使用方法与子程序基本一样。
一、 实现方式
在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上查看信息外, 是无法在它多次被调用后监控代码的,但我已说过,这是黑匣子编程,我们不需要诊断这些代码,只需要知道什么样的输入、什么样的参数设定导致什么样的输出就 行,代码的逻辑与功能好坏是由标准库开发人员负责的,这就要求标准开发人员需要对他设计的功能块在不同条件下进行不同的测试,**无误,还需要编写完整、 详尽的功能说明文档,以便于应用设计人员了解这些块,标准架构并不是出来就一劳永逸的,针对千变万化的工程,它是需要不断完善和修订的,这也是一个工 程公司可以实实在在进行知识积累的地方。
程序不仅需要给调试人员使用,而且用户(设备维护人员)也需要了解,如果把完整的标准库文档给用户,可能曾在技术外泄的可能,若不给,对他们诊断设备可能 曾在困难,这就需要标准人员制作另外一分文档,即设备维护文档,其知识的透漏以用户能够使用程序进行诊断为限。