6ES7231-7PF22-0XA0技术介绍
6ES7231-7PF22-0XA0技术介绍
:随着科学技术的发展,可编程序控制器PLC在工业控制中的广泛应用,它的可靠性直接关系到工业企业的安全生产和经济运行.而PLC控制系统的抵抗干扰的能力是整个生产系统可靠运行的关键.目前,各种类型的可编程序控制器PLC一般集中安装在集控室或是生产现场,它们大都处在强电电路和强电设备所形成的恶劣电磁环境中.所以,要提高PLC控制系统的可靠性,一是需要PLC生产厂家提高PLC硬件的抗干扰能力,二是需要工程设计人员充分利用PLC组态软件来消除干扰,这样才能有效地增强系统的抗干扰的性能.
关键字:抗干扰的方法
引言:
PLC控制系统由于具有功能强、程序设计简单、扩展性好、维护方便、可靠性高、能适应比较恶劣的工业环境的特点,因此在工业企业广泛应用.但是由于工业环境条件恶劣,以及各种工业电磁,辐射干扰等,影响PLC控制系统的正常工作,因此必须重视PLC控制系统的抗干扰设计.为防止干扰,可以采用硬件和软件相结合的抗干扰方法. 防止硬件干扰的方法有:1采用性能优良的电源来抑制电网引入的干扰2电缆的选择与铺设来降低电磁干扰3完善接地系统4采用光电隔离来抑制输入输出电路引入的干扰等.而利用PLC软件来减少干扰是PLC控制系统正常、稳定工作的重要环节.下面主要分析在生产实践中应用的利用PLC组态软件来减少干扰的方法:
一、减少数字量输入扰动的方法
1、 计数器法
CON—计数器
NOT—非门
RS—复位优先触发器
IN—输入
OUT—输出
N—脉冲采样个数
注释:当外部有信号输入时,控制系统采集连续的N个脉冲使RS触发器输出为“1”,只有当外部输入信号由“1”变成“0”时,RS触发器的复位端为“1”,将RS触发器的输出复位成“0”。而当有瞬间干扰脉冲时,CON计数器将采集不到连续的N个脉冲,CON计数器无法输出,这就起到了减少干扰的作用。(N一般情况下取2)
优点:响应速度快,对周期性的瞬时干扰起到了一定的抑制作用。
缺点:不能消除超过CON计数器采样时间的干扰。
2、延迟输入法
IN—输入
OUT—输出
TIME(ET)—延时时间
TON—延时输出(其曲线如下图)
注释:当输入IN=1时,启动计数器直到计时时间(PT)=延时时间,OUT=1。当计数器计时时间〈延时时间,OUT=0。延时时间好取1S以内。
优点:消除了短时的周期干扰。
缺点:响应速度慢,不利于信号的快速传输。
二、减少模拟量输入扰动的方法
1、限幅法
MOVE—移动保持指令(使能端EN=1,OUT=IN。EN=0,OUT保持前次值)
GE—大于等于指令(OUT=1,IF IN1≥IN2)
LE—小于等于指令(OUT=1,IF IN1≤IN2)
HL—上限设定值
LL—下限设定值
注释:当模拟量输入信号在HL和LL之间时,OUT=IN。当IN-AI信号超出或等于HL或LL时,GE或LE判断IN-AI信号,使OUT1或OUT2输出“1”去封锁MOVE,从而保持MOVE的输出为HL或LL的设定值。也就起到了限幅的作用。
优点:能有效克服因偶然因素引起的脉冲干扰。
缺点:平滑度差。
2、延迟滤波限幅法
MOVE—移动保持指令(使能端EN=1,OUT=IN。EN=0,OUT保持前次值)
GE—大于等于指令(OUT=1,IF IN1≥IN2)
LE—小于等于指令(OUT=1,IF IN1≤IN2)
HL—上限设定值
LL—下限设定值
LG—延迟滤波指令(其曲线如下图)
TIME—延迟滤波时间
注释:功能基本和限幅法相同,只是在输入端增加了一个延迟滤波器,对输入信号起到了延迟缓冲的滤波。
优点:有效地抑制了周期性的脉冲干扰。平滑度比限幅法有所改善。
缺点:信号响应速度减缓。
3、延迟滤波比较法
LG—延迟滤波器
SUB—减法指令
ABS—值指令
GE—大于等于指令
HL—大偏差值
TIME—延迟滤波时间
注释:正常情况输入信号IN-AI经过一阶延迟滤波后直接输出,OUT=IN-AI的值;当有突变信号时,输入信号IN-AI经过一阶延迟滤波后与含有突变信号的输入信号IN-AI相减取值(无论出现正偏差还是负偏差),与HL值比较,若大于等于HL的预设值,OUT1=1,将LG—延迟滤波器切换成跟踪状态,此时OUT就保持了输入信号IN-AI突变前的值。直到突变信号减弱,OUT1=0,OUT=IN-AI。
优点:对周期性干扰具有良好的抑制作用。平滑度高。
缺点:灵敏度取决于TIME—延迟滤波时间的大小。
4、积分消抖滤波法
LG—延迟滤波器
SUB—减法指令
GE—大于等于指令
LE—小于等于指令
OR—或门(自做的DFB功能块)
NOT—非门
TON—延时输出
EOR—异或门
MOV—移动保持指令
PI—比例积分调节器
HL—大正向偏差值
LL—大负向偏差值
TIME—延迟滤波时间
TIME1—延迟输出时间
TIME2—延迟滤波时间
注释:参数设置:LG(TIME=1S),TON(TIME1=10S),LG1(TIME=30S),HL=0.2,LL=-0.2 ,PI(TI=10S,将P放开封锁成为纯积分调节器)
一、 小信号在变化幅度中变化时
1、 终状态:此时为稳态,输入与输出相近。OR输出为“0”,NOT=1,TON时间已超出10S,EOR=0,MOV不保持,PI不积分,SUB=0,信号走PI的跟踪回路,LG1滤波后输出。正常的信号流向:IN→LG→PI的跟踪→LG1(滤波30S)→输出
2、 小信号的暂态变化:(在TON=10S之前)OR=0,NOT=1,TON未到10S,EOR=1,MOV保持,PI积分作用,LG1未起作用,输出跨越LG1(TIME=30S),直接到输出端,此时为线性跟踪滤波状态。
二、 信号大幅度变化时(≥HL,≤LL)
OR=1,NOT=0,TON不起作用,EOR=0,所以LG1(TIME=30S)不起作用,PI不起作用走跟踪。正常的信号流向:IN→LG→PI的跟踪→LG1的跟踪→输出
三、 总结:
1、 小信号在10秒之内,经过LG(TIME=1S),PI的积分作用,跳过LG1(TIME=30S),直接输出,实现输入信号的滤波和跟踪状态。
2、 小信号在10秒之后,经过LG(TIME=1S),PI的跟踪和LG1(TIME=30S)跟踪输入。
3、 大信号变化时,LG(TIME=1S)作用,LG1(TIME=30S)不起作用,此时为输出快速跟踪。
优点: 对于被测参数有较好的滤波效果, 对周期性干扰具有良好的抑制作用,平滑度高。
缺点: 对于变化缓慢的输入信号响应慢。
结束语
上述所分析的方法,均在生产实际中得到检验,取得了一定的效果,并随着生产实际的需要和经验的积累,不断完善其对干扰的软件处理方法。
另付:积分消抖滤波法利用Concept2.6的编程。并且本论文涉及的功能指令块各管脚的用法均参考下图及Concept2.6中文手册。
1.程序家族有哪些成员?
PLC的控制程序一般由主程序、子程序和中断程序组成。西门子的S7-300/400将子程序分为功能(Function,或称为函数)和功能块(Function Block)。
在每一个扫描循环周期,CPU都要调用一次主程序,用户程序必须有一个并且只能有一个主程序。小型控制系统可以只有主程序。
中断程序用于快速响应中断事件。在中断事件发生时,CPU将停止执行当时正在处理的程序或任务,去执行用户编写的中断程序。执行完中断程序后,继续执行被暂停执行的程序或任务。
2.哪些情况需要使用子程序?
当系统规模很大、控制要求复杂时,如果将全部控制任务放在主程序中,主程序将会非常复杂,既难以调试,也难以阅读。使用子程序可以将程序分成容易管理的小块,使程序结构简单清晰,易于调试、查错和维护。
子程序也可以用于需要多次反复执行相同任务的地方,只需要编写一次子程序,别的程序在需要的时候多次调用它,而无需重写该程序。
3.怎样调用子程序?
主程序可以调用子程序,子程序也可以嵌套调用别的子程序。嵌套调用的层数是有限制的,例如S7-200的大嵌套深度为8级。
执行完子程序后,返回调用它的程序中的调用指令的下一条指令。
4.每个扫描周期都会执行子程序吗?
子程序的调用可以是有条件的,在被调用期间,每个扫描周期都要执行一次被调用的子程序。调用条件不满足时不会执行子程序中的指令,因此使用子程序可以减少扫描循环时间。
5.停止调用子程序后,子程序中的线圈处于什么状态?
停止调用子程序后,不再执行子程序中的指令。子程序中线圈对应的编程元件如果没有受到别的程序的控制,将保持子程序后一次执行后的状态不变。即使控制这些线圈的触点的状态变化,该线圈对应的元件的状态也不会变化,因为这时根本就没有执行子程序中的指令。
6.怎样实现子程序的无条件调用?
有的PLC的子程序调用指令不能直接接到左侧的垂直“电源”线上,需要通过触点电路来控制是否调用子程序,即子程序的调用是有条件的。可以用一直为ON的特殊位元件(例如S7-200的SM0.0或FX系列的M8000)的常开触点来实现子程序的无条件调用。
不同品牌的PLC的子程序大致可以分为两种,一种子程序没有输入、输出参数和局部变量,另一种则有。
1.什么是全局变量和局部变量?
以西门子的S7-200为例,输入I、输出Q、变量存储器V、内部存储器位M、定时器T、计数器C等属于全局变量,可以在符号表中为全局变量定义符号名。
程序组织单元(Program Organizational Unit)简称为POU,包括主程序、子程序和中断程序。每个POU均有自己的64字节局部变量,局部变量用L(Local)来表示,局部变量只能在它所在的POU中使用。与此相反,全局变量可以在各POU中使用。
2.局部变量有哪些类型?
子程序可以使用下列局部变量:
1) TEMP (临时变量)是暂时保存在局部数据区中的变量。只有在执行该POU时,定义的临时变量才被使用,POU执行完后,不再保存临时变量的数值。主程序和中断程序的局部变量表中只有TEMP变量。
2) IN(输入参数)由调用它的POU提供的传入子程序的输入参数。
3) OUT(输出参数)是子程序的执行结果,它被返回给调用它的POU。
4) IN_OUT(输入_输出参数)的初始值由调用它的POU传送给子程序,并用同一变量将子程序的执行结果返回给调用它的POU。
主程序和中断程序的局部变量表中只有临时变量TEMP。
3.子程序的输入、输出参数有什么作用?
具有输入、输出参数和局部变量的子程序易于实现结构化编程,对于长期生产同类设备或生产线的厂家尤为有用。编程人员为设备的各部件或工艺功能编写了大量的通用的子程序。即使不知道子程序的内部代码,只要知道子程序的功能和输入、输出参数的意义,就可以用它们快速“组装”出满足不同的用户要求的控制程序。就好像可以用数字集成电路芯片组成复杂的数字电路一样。
如果子程序没有输入、输出参数,这种子程序没有明确的软件接口,使用起来很不方便。
4.局部变量有什么优点?
1) 子程序如果没有局部变量,它和调用它的程序之间只能通过全局变量来交换数据,子程序内部也只能使用全局变量。将它移植到别的项目时,需要对各POU使用的全局变量作统一安排,以保证不会出现地址冲突。当程序很复杂,子程序很多时,这种地址分配是很花时间的。
如果子程序有局部变量,并且在子程序中只使用局部变量,不使用全局变量,因为与其他POU没有地址冲突,不作任何改动,就可以将子程序移植到别的项目中去。
为了减少移植子程序的工作量,在子程序中应尽量避免使用全局变量和全局符号。
2) 如果使用局部变量表中的临时变量(TEMP),同一片物理存储器可以在不同的程序中重复使用。
下面以S7-200为例,介绍子程序的编程和调用的过程。
1.创建子程序
生成项目时,自动生成一个子程序。打开程序编辑器,执行“编辑”菜单中的命令“插入”→“子程序”,将自动生成和打开新的子程序。
2.生成局部变量
名为“模拟量计算”的子程序如下图所示,在该子程序的局部变量表中,定义了3个输入(IN)参数,一个输出(OUT)参数,和名为“暂存1”的临时(TEMP)变量。局部变量表左边的一列是自动分配的每个变量在局部存储器(L)中的地址。
3.编写子程序的梯形图
局部变量表的下面是程序区(见上图),输入参数“转换值”是来自模拟量输入模块的与模拟量成正比的转换值,输出参数“模拟值”是计算出的对应的模拟量(例如压力、温度等)的工程值。子程序中变量名称前的“#”表示该变量是局部变量,它是编程软件自动添加的,输入局部变量时不用输入“#”号。特殊存储器位SM0.0的常开触点总是闭合。
4.子程序的调用
可以在主程序、其他子程序或中断程序中调用子程序,调用子程序时将执行子程序中的指令,直至子程序结束,然后返回调用它的程序中该子程序调用指令的下一条指令之处。
创建子程序后,在上图左边指令树下面的“调用子程序”文件夹中自动生成刚创建的子程序“模拟量计算”对应的图标。
在梯形图程序中插入子程序调用指令时,首先打开主程序,显示出需要调用子程序的网络。打开指令树下面的“调用子程序”文件夹,用鼠标左键按住需要调用的子程序图标,将它“拖”到程序编辑器中需要的位置。放开左键,子程序块便被放置在该位置。
子程序方框中左边的“转换值”等是在子程序“模拟量计算”的变量声明表中定义的输入参数,右边的“模拟值”是输出参数。它们被称为子程序的形式参数,简称为形参,形参在子程序内部的程序中使用。调用子程序时,需要为每个形参指定实际的参数(简称为实参),例如为形参“转换值”指定的实参为模拟量输入字AIW2(见上图)。
子程序调用指令中的实参的有效操作数为存储器地址、常量、全局符号和调用指令所在的POU中的局部变量,不能指定被调用子程序中的局部变量。
CPU调用子程序时,输入参数被复制到子程序的局部存储器,子程序执行完后,从局部存储器复制输出参数到指定的输出参数地址。
西门子S7-300/400的子程序分为功能(Function)和功能块(Function Block)。
1.功能(FC)
功能是用户编写的没有固定的存储区的程序块,其临时变量存储在局部数据堆栈中,功能执行结束后,不再保存这些数据。可以用共享数据区来存储那些在功能执行结束后需要保存的数据。
功能与S7-200的子程序的局部变量基本上相同(见下图)。与S7-200的子程序相比,其局部变量多了个返回值(RET_VAL)。返回值实际上属于输出参数。
2.参数类型
用于块之间传送数据的形式参数可以定义为12种基本数据类型、5种复杂数据类型(见上图),也可以为块之间传送数据的形式参数定义下列的参数类型:
1)Timer或Counter:指定执行块时要使用的定时器或计数器。例如定义功能中的输入变量TON1的数据类型为Timer,两次调用功能时分别设置TON1的实参为T5和T6。
2)块:指定用作输入或输出的特定块。例如定义某个输入变量的数据类型为Block_FB,在调用块时指定块地址(例如FB 3)作为实参。
3)POINTER:指针是变量的地址而不是变量的值。POINTER参数类型的形参应为地址,例如P#M50.0。在STEP 7中,指针也可以用地址作实参 (例如M 50.0)。
4)ANY:用于将任意的数据类型传递给声明的形参。ANY可用于实参的数据类型未知,或实参可以使用任意数据类型的情况。例如P#DB2.DBX50.0 BYTE 10表示DB 2中的DBB50~DBB59。ANY也可以用地址作实参,例如DB2.DBW30和Q12.5,但是只能指向一个变量。
5)UDT:用户自定义的数据类型。
3.功能块(FB)
功能块是用户编写的有自己的存储区(背景数据块)的程序块,功能块的输入、输出变量和静态变量(STAT)存放在指定的背景数据块 (DI) 中,临时变量存储在局部数据堆栈中。功能块执行完后,背景数据块中的数据不会丢失,但是不会保存局部数据堆栈中的数据。
4.背景数据块
背景数据块是专门指定给某个功能块(FB)使用的数据块,它是FB专用的工作存储区。
背景数据块用来保存FB的实参和静态数据,背景数据块中的数据是自动生成的。它们是功能块的变量声明表中的数据(不包括临时变量)。调用功能块时应指定对应的背景数据块。
5.功能与功能块的区别
FB和FC均为用户编写的子程序,局部变量表中均有IN、OUT、IN_OUT和TEMP变量。FC的返回值Ret_Val实际上属于输出参数。下面是FC和FB的区别:
1) 功能块有背景数据块,功能没有背景数据块。
2)只能在功能内部访问它的局部变量。其他逻辑块可以访问功能块的背景数据块中的变量。
3)功能没有静态变量(STAT),功能块有保存在背景数据块中的静态变量。
功能如果有执行完后需要保存的数据,只能存放在全局变量(例如共享数据块和M区)中,但是这样会影响功能的可移植性。如果功能或功能块的内部不使用全局变量,只使用局部变量,不需要作任何修改,就可以将它们移植到其他项目。如果块的内部使用了全局变量,在移植时需要考虑每个块使用的全局变量是否会与别的块产生地址冲突。
4)功能块的局部变量(不包括TEMP)有初始值,功能的局部变量没有初始值。调用功能时应给所有的形参指定实参。
调用功能块时可以不设置某些输入、输出参数的实参,此时这些参数将使用背景数据块中的初始值。
1.中断与中断程序
有很多PLC内部或外部的事件是随机发生的,例如外部开关量输入信号的上升沿或下降沿、通信事件、高速计数器的当前值等于设定值和定时中断等,事先并不知道这些事件何时发生,但是它们出现时需要尽快地处理它们,PLC用中断来快速处理上述事件。
例如电力系统出现故障时,可能引发多个断路器相继跳闸。为了分析故障的起因,需要及时准确记录事故发生的时间。可以用硬件中断来完成这一任务。
由于PLC的扫描工作方式,普通定时器的定时误差很大,定时时间到了也不能马上去处理要作的事情。可以用定时中断来实现高精度定时,在定时时间到时CPU自动调用定时中断程序。
在出现一个中断事件时,当前正在执行的程序在当前指令执行完后被停止执行(被中断),操作系统将会调用一个用户编写的分配给该事件的中断程序(S7-300/400称为组织块)。中断程序被执行完后,被暂停执行的程序将从被中断的地方开始继续执行。这一过程不受PLC扫描工作方式的影响,因此使PLC能迅速响应中断事件。换句话说,中断程序不是在每次扫描循环中处理,而是在需要时才被及时地处理。
2.中断的优先级
中断事件有不同的优先级,高优先级的中断程序可以中断低优先级的中断程序。
如果在执行中断程序时,又检测到一个中断请求,CPU将比较两个中断源的中断优先级。如果优先级相同,按照产生中断请求的先后次序进行处理。如果后者的优先级比正在执行的中断源的优先级高,将中止当前正在处理的中断程序,改为调用较高优先级的中断源的中断程序,这种处理方式称为中断程序的嵌套调用。
3.中断的控制
不是所有的用户都需要PLC的中断功能,用户一般也不需要处理所有的中断事件,因此允许用户用指令来控制是否需要中断和需要哪些中断。
S7-200的中断允许指令EI允许处理中断事件。至于需要处理哪些中断事件,需要单独设置。禁止中断指令DI禁止处理所有的中断事件。
S7-200进入RUN模式时自动禁止中断,在RUN模式执行中断允许指令后,各中断事件发生时是否会执行中断程序,取决于是否执行了该中断事件的中断连接指令ATCH。
中断分离指令DTCH用来断开某个中断事件与中断程序之间的联系,从而禁止单个中断事件。
4.编写中断程序应注意的问题
因为不能预知系统何时调用中断程序,为了避免在中断程序中改写其他程序使用的存储器,在中断程序中应尽量使用局部变量。
应优化中断程序,使中断程序尽量短小,以减少中断程序的执行时间,减少对其他处理的延迟,否则可能引起主程序控制的设备操作异常。设计中断程序时应遵循“越短越好”的格言。为了减少中断程序的执行时间,可以在中断程序设置一个软件标志,在主程序中根据标志处理对于快速性要求不是很高、执行时间很长的任务。
5.中断程序为什么没有输入、输出变量?
中断程序不像子程序那样,被用户程序调用,而是在中断事件发生时,由操作系统调用,因此S7系列PLC的中断程序不需要输入参数和输出参数,它的局部变量表中只有临时变量。S7-300/400的中断程序称为组织块,它有自动生成的20字节的临时局部变量,包含了与触发组织块的事件有关的信息,它们由操作系统提供。
- 西门子SB1231热电偶信号板模块6ES7231-5QA30-0XB0授权中国总 一级代理商
- 西门子SB1231, 热电阻信号板模块6ES7231-5PA30-0XB0
- 西门子SB1231,模拟量信号板模块6ES7231-4HA30-0XB0
- 西门子S7-1200 SM1231 热电偶模块6ES7231-5QF32-0XB0
- -西门子SSM1231 热电阻模块 6ES7231-5PF32-0XB0授权中国总 一级代理商
- 西门子SM1231 热电偶模块6ES7231-5QD32-0XB0授权中国总 一级代理商
- 西门子SM1231 模拟量输入模块 6ES7231-4HF32-0XB0授权中国总代理商
- 西门子SM1231 模拟量输入模块6ES7231-5ND32-0XB0
- 西门子SM1231 模拟量输入模块6ES7231-4HD32-0XB0
- plc 全新模块 6ES7231-5ND30-0XB0支持模块级诊断和通道级诊断