PLC模块

2024-05-31

PLC模块(共7篇)

PLC模块 篇1

1 I / O模块的选择

PLC是一种工业控制系统, 其控制对象是工业生产设备或工业生产过程, 工作环境是工业生产现场, 与工业生产过程的联系时通过I/O接口模块来实现的。

通过I/O接口模块可以检测被控生产过程的各种参数, 并以这些数据作为控制器对被控制对象进行控制的依据。同时, 控制器又通过I/O接口模块将控制器的处理结果送给被控设备或工业生产过程, 驱动各种执行机构来实现控制。外部设备或生产过程的信号能是标准电平, 所以I/O接口模块还需实现这种转换。PLC从现场收集的信息机输出给外部设备的控制信号都需经过一定的距离, 为了确保这些信息正确无误, PLC的I/O接口模块都具有较好的抗干扰能力。

1) 确定I / O点数

I / O点数的确定要充分考虑到裕量, 能方便地对功能进行扩充。对一个控制对象, 由于采用不同的控制方法或编程水平不一样, 故I / O点数就可能有所不同。

2) 开关量I / O标准的I / O接口用于同传感器开关及控制设备进行数据传送。典型的交流I/O信号为24 ~ 240v, 直流I/O信号为5 ~ 24v。

( 1) 选择开关量输入模块主要从以下方面考虑: 一是根据现场输入信号与PLC输入模块距离的远近来选择电平的高低。一般, 24v以下属于低电平, 其传输距离不宜太远, 如12v电压模块一般不超过10m。距离较远的设备选用高电平模块比较可靠。二是高密度的输入模块, 如32 点输入模块, 能允许同时接通的点数取决于输入电压和环境温度。一般同时接通的点数不得超过总输入点数的60%

( 2) 选择开关量输出模块时, 应从以下三个方面来考虑: 一是输出方式的选择。输出模块由三种输出方式: 继电器输出、晶闸管输出、晶体管输出。其中, 继电器输出价格便宜, 使用范围广泛, 导通压降小, 承受瞬时过电压和过电流的能力强, 且有隔离作用。但继电器有触点, 寿命较短, 且响应速度较慢, 适用于动作不频繁的负载。晶闸管输出和晶体管输出都属于无触点开关输出, 适用于通断频繁的感性负载。二是输出电流的选择。模块的输出的电流必须大于负载电流的额定值, 如果负载电流较大, 则输出模块不能直接驱动时, 应增加中间放大环节。对于电容性负载、热敏电阻负载, 考虑接通时有冲击电流, 要留有足够的裕量。三是允许同时接通的输出点数。在选用输出点数时, 不但要核算一个输出点的能力, 还要核算整个输出模块的满负荷负载能力, 即输出模块同时接通点数的总电流值不得超过模块规定的最大允许电流值。

若I/O设备有不同电源供电, 则应当使用带隔离公共线的接口电路

3) 模拟量I / O

模拟量I/O接口是用来传送传感器产生的信号的。这些接口能测量流量、温度和压力等模拟量的数值, 并用于控制电压或电流输出设备。PLC的典型接口量程, 对于双极性电压为-10~+10v, 单极性电压为0~+10v, 电流为4~20mA或10~50mA。

一些制造厂家有提供了一些特殊的模拟接口来接收低电平信号。一般地说, 这类接口模块能接收同一模块上的不同类型热电偶或RTD得混合信号。用户应就具体条件向供销商提出要求。

4) 特殊功能I / O

在选择一台PLC时, 用户可能会面临需要一些特殊类型的且不能用标准I/O实现的情况。用户应当考虑供应商是否提供一些特殊的有助于最大限度减小控制作用的模块。灵便模块和特殊接口模块都应考虑使用。有的模块自身能够处理一部分现场数据, 从而CPU处理耗时任务中解脱出来。

5) 智能式I / O

当前, PLC的生产厂家相继推出了一些智能式的I/O模块。所谓智能式I/O模块, 就是模块本身带有处理器, 对输入或输出信号做预先规定的处理, 将其处理结果送入CPU或直接输出, 这样可提高PLC的处理速度和节省存储器的容量。

智能式I/O模块有温度控制模块、高速计数器、凸轮模拟器、带速度补偿的凸轮模拟器、单回路或多回路的PID调节器、ASCI处理器、RS - 232C/422 接口模块等。表8 - 1 归纳了选择I/O模块的一半规则。

2 电源模块的选择

电源模块的选择一般只需要考虑输出电流。电源模块的额定输出电流必须大于处理器模块、I/O模块、专用模块等消耗电流的总和。以下步骤为选择电源的一半规则:

( 1) 确定电源的输入电压

( 2) 将框架中每块I/O所需的总背板电流相加, 计算出I/O模块所需的总背板电流值。

(3) I/O模块所需的总背板电流值再加上一下各电流:

(1) 框架中带有处理器时, 则加上处理器的最大电流值;

(2) 当框架带有远程适配器模块或扩展本地I / O适配器模块时, 应加上其最大电流值。

(4) 如果框架中留有空槽用作将来扩展时, 则应作一下处理:

(1) 列出将来要扩展的I/O模块所需的背板电流;

(2) 将所有扩展的I / O模块的总背板电流值与步骤 ( 3) 中计算得出的总背板电流值相加。

( 5) 在框架中是否有用于电源的空槽, 否则, 将电源装到框架的外面。

( 6) 根据确定好的输入电压要求所需的总背板电流值, 用户手册中选择合适的电源模块。

PLC模块 篇2

在许多综合性的自动化控制系统中经常会有许多模拟量信号需要采集,其中有相当多属于温度检测。现在大多采用PLC来完成各种信号的采集与控制,需要配置相应数量的模拟量输入模块。在这些模拟信号中,有些信号尤其是大惯性的温度信号,对采集的实时性要求并不高,系统中也常采用温度巡检仪来完成。

采用PLC模块直接采集的方法简单可靠,但成本高;采用温度巡检仪虽然成本有所降低但是和控制系统的接口比较复杂。介绍一种既能象PLC一样简单可靠地实现信号采集,又能有效降低设备成本的实现方法。

1 样例系统

某实验测试系统同时对多台电抗器进行性能、老化、温升试验测试。系统采用西门子变频器来对电抗器模拟不同频率、电压、电流的工作条件,采用S7-300PLC完成试验检测等自动控制,要求对电抗器的电流、电压、温升、噪音等进行监控并在上位机上记录。系统中每台被测电抗器都内置Pt100铂电阻进行绕组温度检测,最多同时测试18台,另有4点环境温度监测用Pt100铂电阻,共计22只铂电阻需要接入控制系统中。电压、电流变送器共4个通道需要接入控制系统。系统中上位机通过PLC上传数据以进行记录、分析统计并输出实时、历史趋势曲线,并可打印报表和输出检测报告。

1.1 变频电源系统配置

根据电抗器的电流通过能力来确定变频器的容量,采用多个电抗器串联同时进行测量的方式来提高系统的使用效率。电抗器的额定电流为350A,选择315kW、输出电流可达550A的变频器,以保证能够进行150%过载测试。

变频器装有CBP2通信板,通过ProfiBus-DP总线与自动化系统PLC通信,接受来自PLC的运行控制指令,返回变频器的状态信息给自动化系统。

1.2 自动化系统配置

自动化系统采用西门子S7-300PLC,CPU为6ES7315-2DP,其ProfiBus-DP接口连接变频器。配置开关量输出模板通过中间继电器控制接触器完成电抗器的安全投切;采用开关量输入模板完成各种开关状态的检测;采用模拟量输入模板完成温度、电流、电压、噪音等信号的采集。

2 设计及实现

采用西门子6ES7 331-7KF02-0AB0模拟量输入模块,作为温度传感器Pt100的输入模块,该模块可配置为4路Pt100输入。采用常规开关量输出模块,控制中间继电器实现多路传感器分时切换。

2.1 电路原理设计

常规接线方法6ES7 331-7KF02-0AB0模拟量输入模块只能接4路Pt100输入,而系统中一共有22个温度信号需要采集,初步构想将每路扩展成8路,系统将具备32个温度传感器能力,为以后系统扩展留足备用空间。

采用3组继电器,通过3个(组)开关量输出驱动完成4路到32路扩展,其中单路扩展如图1所示。

图中-K1、-K2、-K3通过编码切换可达到分时接通-Pt100.1…-Pt100.8。

2.2 变频电源控制

采用PPO4类型完成PLC主站对变频器从站的控制。控制字及状态字分配见表1。

在循环程序中调用DP通信功能块SFC14、SFC15,系统就会完成与逆变器的数据交换。

2.3 程序设计及实现

将通道切换控制、数据存储控制放在定周期执行的组织块OB35中,根据采样周期要求设定循环时间,本例中设定125ms,巡检周期为2s。

2.3.1 程序描述

定时中断,用于切换温度测试,单通道8路巡检,本程序执行2数周期切换一路,单数周期采样并存入数据区。在系统配置OB35为125ms定时周期执行,如图2所示。

2.3.2 巡检切换继电器控制

将DB5.DBW48作为循环加计数器,取其1、2、3位即DB5.DBX49.1-3来控制继电器切换,转换成格雷码输出可以减少继电器动作次数,延长寿命。定义DB5.DBB51为格雷码输出寄存器,输出点Q19.0-3控制切换继电器。程序代码如下:

2.3.3 巡检结果保存

在计数器最低位为1时读取输入值,为0时切换,稳定时间为功能块执行周期。采用间接寻址,将采样数据存入数据区对应通道,程序为:

2.3.4 问题及解决办法

采用上述参数所对应的采样周期为2s,这对于电抗器温度这样的大惯性参量的检测采样已经足够,三组切换继电器中的每一个都在这2s周期中动作1个循环。因为被切换的信号为弱电信号,因此继电器的电气寿命大大延长,可以只考虑触头的磨损,如中档产品1000万次,在此情况下可以计算出可连续工作5555h,即231天。

这对于连续工作的设备来说使用寿命有点短,可以通过延长切换时间周期的方法来延长继电器的寿命,如在实测过程中发现电抗器的温度变化很缓慢,采用10s检测周期完全可以满足要求,这样可延长至5倍寿命。具体实现方法可以通过调整OB35的执行周期(实现任意时长控制)或循环计数器的对应控制位来实现(2的整数倍)调整采样周期的目的。

3 实际应用效果

采用上述方法对电抗器性能测试、温升测试和老化过程进行温度检测,对各个电抗器的温度用手持测温枪进行实测对比,结果令人满意。由于巡检测得的是电抗器内置的Pt100,而手持测温枪所测得的是电抗器表面温度,因此存在偏差,如表2所示。

4 结语

PLC模块 篇3

PLC是工业自动化的支柱技术之一, 有关网络与通信的内容正是近年来PLC发展的方向和热点之一。文献[1,2]介绍了西门子PLC的各种通信方式、通信原理。本文仅介绍能完成PLC与智能仪器通信的经济型方案的实现, 讨论该应用中小数点位置不确定的ASCII数据转化为十六进制数的算法及程序流程。

1任务描述

PLC与智能仪表通信并完成数据收发任务;通信工作模式为PLC向智能仪表发送命令, 仪表返回应答;通信数据格式是ASCII码, 其中工作数据有7位, 并可能包含小数点, 且小数点位置不固定;通信完成后, PLC对由仪表返回的ASCII码数据进行处理, 转换为十六进制数。

2方案设计与硬件组态

2.1 方案设计

出于对整体功能、成本及数据处理的实时性要求, CPU选取313c-2PtP, 这样便不需要CP340/CP341通信处理器了。通信协议采用RS-485, 485协议采用平衡驱动差分接收的模式, 抗干扰性强, 同时便于扩展为多台仪表和PLC通信。SIMETIC PLC的点到点通信有ASCII driver、3964 (R) 和RK512三种协议, 在此根据仪表的数据特性, 采用ASCII driver协议。

2.2 硬件组态

进入STEP7建立相应项目, 在项目中点击HW config进入组态界面, 在UR中依次配置好选型的电源、CPU等硬件, 然后硬件中点击CPU栏的PtP项即进入通信参数配置界面;在Protocol中选ASCII, 在signal assignment→operating mode中选择RS-485模式。如此依次点击各选项卡, 根据需要设置通信速率、数据帧格式等参数, 最后保存编译即完成组态。硬件组态界面见图1。

3软件设计

ASCII driver通信在OSI7层模型中处于第一层物理层, 通信方式为cup向仪表发送数据请求, 仪表返回应答。发送数据报文格式见图2, 接收数据报文格式见图3, 工作数据的存储结构见图4。通信程序通过调用SFB60 (发送) SFB61 (接收) 来实现。BCC校验的算法在文献[1]中有介绍。SFB60与SFB61的参数及用法参看STEP7帮助。

仪表传来的数字, 除了小数点位以外, 每位的取值范围为0~9, 超过此范围则失去实际意义。据此若小数点位置已判断出来, 则由归纳法可推得将仪表传来的ASCII码数据转换成十六进制数据的转换算法如下:

(1) 若7位数中不包含小数点, 则算法为:

undefined。

其中:i=0, 1, 2, …, m;m=工作数据长度-1;DBB代表一个存储字节, 在此存储一位工作数据。

(2) 若包含小数点, 则算法为:

undefined。

定义小数点位置值为y, 确定方向从工作数据右端到左端, y=2, 3, …, 6。当i-y<0时, x=i-y;当i-y>0时, x=i-y-1。

程序调用关系见图5, 数据转换程序流程见图6。

4结论

此通信模块设计基于公开的通信协议, 实现算法不复杂, 且成本低, 能满足实际的功能要求。在实际应用中PLC需要与智能仪器通信及ASCII码转换为十六进制数的情况很多。在此方案下开发者需编制的代码略多, 但是只要做好封装, 增加其可移植性, 即能应用于其它同类项目中。

摘要:介绍了一种基于西门子PLC A SC II通信协议的P tP通信模块的设计实现;给出了实际应用中小数点不确定的A SC II数据转化为十六进制数的程序实现算法及程序流程。

关键词:西门子PLC,数据转换,智能仪表

参考文献

[1]廖常初.S7-300/400 PLC应用技术[M].北京:机械工业出版社, 2005.

PLC模块 篇4

关键词:LPC1768,Flash,PLC文件系统,IAP,反编译

0引言

现有PLC编程装置[1]存在的问题有: 存储容量小,仅能存储一套PLC程序; 若调试程序失败时无法查看源程序,还得重新编制指令; 针对同一台PLC主机,可以使用多台编程装置,当一台编程装置将程序发给主机后被拿走或者用于别处,此时还需要利用另外一台编程装置重新编制源指令文件,这给工作带来不便。所以,本文设计了一种PLC编程装置,其存储容量大, 可存储多套PLC程序。利用反编译功能将二进制目标代码文件编译成源指令文件,便于查看或修改,无需另外一台编程装置,提高了编程装置的工作效率。

1编程装置的总体设计

该装置选用LPC1768 ARM Cortex-M3微控制器为硬件电路结构的控制核心,其硬件电路结构主要由LPC1768微控制器主控制模块、电源模块、存储模块、人机界面模块、通信模块、JTAG调试模块六个模块组成。其中,存储模块由LPC1768微控制器的片上Flash、片内SRAM和外接SD卡构成,用来存储系统程序、源指令文件、目标代码文件等数据。该装置不使用操作系统,充分利用LPC1768微控制器的硬件资源实现软件设计。在Keil u Vision4集成开发环境中编程开发,使用J-Link调试程序。选用指令表[2]为PLC编程语言。该装置的软件设计框图如图1所示。通过人机界面的键盘,将PLC源指令录入,显示在液晶屏幕上,当全部源指令录入完后,生成源指令文件; 编辑源指令文件,生成目标指令文件; 编译目标指令文件,生成目标代码文件。通过通信,编程装置将目标代码文件传输给PLC主机,也可以接收PLC主机发送的目标代码文件。本文重点介绍数据存储模块和反编译模块。

2数据存储模块的设计

2. 1源指令文件的编辑设计

编辑PLC源指令文件过程中,采用FAT32文件系统[3]的链式结构形式,自建以“文件分配表+ 目录区+ 数据区”为格式的PLC文件系统来暂存源指令文件,便于对其读写和修改。其中, 文件分配表用于记录整个存储空间的分配情况,负责分配每条指令的存储,如表1所示。目录区存放每条指令的首偏移地址即起始存储单元号。数据区用于存储源指令文件,文件中每条指令以字符串的形式存储,最多存储4000条指令,将数据区划分若干个存储单元,每个存储单元最多存储10个字节。存储一条指令时,若一个存储单元不够使用,此时将其余部分指令存储在下一个存储单元,若下一个存储单元再不能存储完,则就再使用下下一个存储单元来存储,按此方式存储,直到存储完整条指令。

文件分配表中每条指令的最后一个存储单元号的结束内容为“0x0FFF + 附加存储单元号”。存储每条指令需要一个或多个存储单元,若没有使用插入操作,存储指令的最后一个存储单元号内容为0x0FFF。若需在源指令文件中某条指令前插入一条指令,则插入的该指令存储在数据区最后一条指令的存储单元后面,同时在文件分配表中插入指令的前一条指令最后一个存储单元号的内容由0x0FFF变为“0x0FFF + 插入指令的起始存储单元号”,插入指令的最后一个存储单元号内容为0x0FFF。 从表1中可看出,2号存储单元的内容为0x0FFF,表明存储第1条指令,需要3个存储单元,在数据区中单元号为0 ~ 2。7号存储单元的内容为0x0FFF + 11,表明源指令文件中插入了一条指令,该指令的起始存储单元号为11,也表明存储第3条指令也需要3个存储单元,在数据区中单元号为3 ~ 5。

编辑源指令文件过程中,建立结构体形式的PLC文件系统g_PSF,如下所示:

该PLC文件系统结构中包含了PLC源指令文件的文件名、 文件长度、文件分配表、目录区、数据区和文件的创建日期,还有存储PLC源指令文件的扇区号及其前半空间标志,可用于读取存储的目标代码文件。查询该文件时根据文件名可获取该文件。

2. 2源指令文件的存储设计

LPC1768微控制器内部含有512 KB片上Flash存储器,从中分配192KB地址空间,即扇区号为24 ~ 29的地址空间作为非易失PLC数据存储区,每套PLC源指令文件分配16 KB最大存储容量。相比FX2N系列三菱公司的编程装置内置RAM最大16 KB存储容量,该装置可存储12套源指令文件。存储源指令文件时,先使用编译功能将其编译成目标代码文件,再利用IAP[4]编程技术将目标代码文件存入Flash中。对12套源指令文件在Flash中分区存储,分配了各自固定的地址空间,如表2所示,每两个目标代码文件占一个扇区。这样以二进制目标代码形式存储源指令文件的方法,节省了存储空间。需要查看或者修改源程序时,先从Flash中读取目标代码文件,再使用反编译功能将其编译成源指令文件。

向Flash存储器中存储数据前,根据功能需求移植IAP函数。存储时,先调用准备写操作扇区u32IAP_Prepare Sectors( ) 和擦除扇区u32IAP _ Erase Sectors( ) 两个函数,将存储的扇区擦除, 为写入数据做准备; 再利用将RAM内容复制Flash的函数u32IAP _ CopyRAMTo Flash,将RAM存储器中的数据保存在Flash存储器中,这样即使编程装置不工作或掉电,数据也不会丢失; 最后,为了校验复制到Flash中数据是否与RAM中数据相同,调用比较两个存储器内容的函数u32IAP _ Compare( ) 实现,确保存入数据的准确性。IAP存储数据的流程如图2所示。

存储源指令文件时,采用“文件名+ 创建日期+ 文件大小+ 有效数据”的数据格式存储目标代码文件,如表3所示。其中,有效数据即目标代码文件,其由每条指令编译的字节数加上目标代码构成的。存储时先选择存储扇区,再将目标代码文件按照表3的数据格式编码填充,然后按512个字节分批次存入已分配好的存储地址中,存储流程图如图3所示。若最后一批数据的字节数不够512个,则不够的字节补0,例如文件中最后一批数据只有500个字节,则需补12个字节的0。当存储完整个目标代码文件时,将PLC文件系统清空处理,待下一个源指令文件的暂存和编辑。

程序中存储12套目标代码文件的主要不同点在于存储的起始地址不同,所以定义了POCF_Start_Addr地址变量,起始地址的计算方法如下:

POCF_Start_Addr = PLCObj Code File_Start_Addr + ( g_PSF. PLCSou File _ Sector Numer-22 ) * 0x00008000 + g _ PSF. Sector Numer _ Halflag * 0x00003FFF + k* 512;

从Flash中读取目标代码文件时先查找出该文件文件名, 再确定扇区号,然后读取目标代码文件。分批读取,每次读取512个字节,直到将整个PLC目标代码文件完全读取。

3反编译模块的设计

反编译[5]过程是将程序代码由低级语言转变成与其功能等价的高级语言的过程,是编译的逆过程。一个反编译器的典型架构[6],它利用机器依赖的模块获取机器代码,进行语法分析和语义分析,生成中间代码; 使用中间代码生成控制流程图,进行数据流分析和控制流分析; 最后生成目标高级代码。现有的反编译技术使用方法有静态分析和动态分析两种。本文采用静态分析方法[7]反编译二进制目标代码文件,获得源指令文件,以便查看或修改。反编译目标代码的执行流程如图4所示。

其中,对目标代码文件进行语法和语义进行分析,识别出每条指令对应二进制目标代码,生成一个个基本块,以基本块为节点生成控制流程图,然后对其进行数据流分析,识别出构成每条指令的操作符类型、各个操作数的类型及其编号。由于编码指令时以字为单位,所以反编译目标代码时,首先确定一条指令对应的二进制代码构成字的个数,再根据字的个数来反编译; 其次确定指令的操作符和各个操作数; 最后将操作符和各个操作数组成一条完整的指令。

由于设计的指令系统[8]中将指令分为多操作位逻辑运算指令、基本指令中其余指令和步进指令、应用指令三类,所以采用分类反编译目标代码的方法将目标代码反编译成指令,其流程如图5所示。在对每条指令的目标代码进行数据流分析过程中,根据设计的编码表反编译出操作符类型对应的目标代码,其流程如图6所示。

针对指令的不同操作符类型,分别反编译出各个操作数,根据操作符的类型,若识别出目标代码对应的指令是第一类指令, 且只有一个操作位时,其操作位的类型及其编号的反编译流程如图7所示。

第二类和第三类指令的目标代码的反编译比较简单,只要识别出操作符类型,按照设计的编码表即可反编译成源指令。 获得所有目标代码对应的PLC源指令,将所有的源指令构成整个源指令文件。

4举例验证

以一段PLC指令序列为例说明该装置的存储与反编译模块的可行性。该指令序列如下:

编译该段指令序列显示在串口助手的窗口上,如图8所示, 将目标代码存储在Flash中。

从Flash的存储扇区中读取目标代码,将其反编译成指令, 如图9所示。从图中可观察出,该装置能将存储的二进制目标代码文件完整读取,并能反编译成源指令序列,便于查看或修改。当存储多套PLC程序时,同样实现数据完整性的存取,并能将目标代码文件反编译成源指令文件。

5结语

针对现有编程装置的缺点,本文设计了一种编程装置,其中存储和反编译模块的设计,能存储多套PLC用户程序,解决现有编程装置存在的不足。编辑过程中自建PLC文件系统来存储源指令,便于读写和修改。采用反编译技术将目标代码文件编译成源指令文件,克服了无法查看或重新编制源指令文件的缺点,提高了编辑指令文件的效率。

参考文献

[1]蔡启仲,李克俭,罗功琨,等.新型便携式plc编程装置:中国,200910223190.2[P].2011-01-05.

[2]高金刚,陈建春,刘雄伟.数控系统的软PLC系统开发[J].计算机测量与控制,2004,12(3):254-256.

[3]占克有,徐正全,刘进,等.嵌入式DVR文件系统的研究与设计[J].计算机工程与设计,2009,30(4):803-804,823.

[4]许文杰,丁志刚,张泉.基于ARM处理器的IAP设计及应用[J].计算机应用与软件,2009,26(3):68-70.

[5]丁松阳,梁雪,赵荣彩,等.反编译数据类型恢复技术研究[J].河南师范大学学报(自然科学版),2012,40(1):158-160,177.

[6]陈耿标.反编译器C-Decompiler关键技术的研究和实现[D].上海交通大学,2010.

[7]张柏年.基于动态二进制翻译技术的反编译研究[D].上海交通大学,2008.

PLC模块 篇5

软PLC编译模块是实现将按照指令表语言规则编写的源程序转换成等价的能在运行系统上执行的目标代码的功能。编译模块是一个高度复杂的程序, 其内部结构和组织方式具有多种形式。编译模块在工作过程中, 往往完成如下的任务:1) 读取源代码并且获得程序的结构描述;2) 分析程序结构, 并且生成相应的目标代码。

人工编写编译模块的分析程序是一件非常耗时的工作, 且由于人为因素, 程序不如自动生成程序稳定, 完善。为了简化开发过程, 开发了Flex和Bison程序来解决第一个任务[1], Flex将源代码文件分解为各种词汇, Bison找到这些词汇的组成方式。根据软PLC的指令语言, 生成能够解决问题的C/C++语言代码, 并通过代码转换生成最终的目标代码。

1 软PLC编译模块的组成

编译模块的构造包括词法分析、语法分析、语义分析、错误的检查和处理以及代码生成和代码优化等程序[2]。编译过程可由一遍、两遍或多遍完成。所谓“遍”, 是对源程序或其等价的中间语言程序从头到尾扫描并完成规定任务的过程。每一遍扫描可以完成一个阶段或多个阶段的工作[3]。通常, 一个多遍的编译程序比一遍的编译程序占内存少, 且整个编译程序的逻辑结构清晰。本系统的编译过程包含三遍, 分别进行:

1.1 词法分析

词法分析阶段是编译过程的第一个阶段, 是编译的基础。这个阶段的任务是从左到右一个字符一个字符地读入源程序, 即对构成源程序的字符流进行扫描然后根据构词规则识别单词 (也称单词符号或符号) 。

1.2 语法分析

语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语, 如“程序”, “语句”, “表达式”等等。语法分析程序判断源程序在结构上是否正确, 源程序的结构由上下文无关文法描述。

1.3 代码转换

将PLC指令转换为目标代码。

2 Flex与Bison的源程序的格式[4]

Flex程序分为三个段:第一段是C和Flex的全局声明;第二段包括规则 (C代码) ;第三段是补充的C函数。例如, 第三段中一般都有main () 函数。这些段以%%来分界。Flex源程序结构是:<定义段>, <规则段>和<子程序段>。<定义段>的内容主要包括C语言说明:括在%{和%}之间的内容为C语言说明, 所有C语言的说明语句和预处理语句都可以放在这一部分中, Flex将把%{和%}之间的内容不加改变地抄写到它所生成的词法分析程序之中去。标识符定义:Flex用标识符给某些重复出现次数较多的正则表达式命名, 而在需要使用它们的地方代之以相应的标识符。开始状态说明:在Flex中提供了一种称为开始状态的机制, 以解决左文相关问题。<规则段>中每一条规则都可分为正则表达式部分和C程序或动作部分。当输入流中出现与正则表达式相匹配的字符串时, 就执行后面的动作。为了便于描述词法分析程序的动作, Flex提供了许多变量、子程序和宏替换供用户使用, 详细可以参见用户手册[5]。在<子程序段>, 可以定义词法分析程序所需的各类过程和函数, 比如主程序main () 或函数yywrap () 。子程序段里的内容由Flex原封不动复制到它所生成的词法分析程序里面。

Bison源程序结构也由<说明段>、<规则段>和<子程序段>三部分组成。<规则段>由一条或多条规则所组成, 不包含任何规则的<规则段>是不合法的。每条规则以分号结尾。在逻辑上一条规则可分为两部分, 一部分是一条巴科斯范式 (BNF) , 另一部分是一段C程序, 称为一个动作。当从词法分析程序得来的单词序列可按某个BNF进行归约时, 就可执行与该BNF相对应的动作。<说明段>中的说明有两类:一类是C程序说明;另一类是Bison说明。C程序说明必须用配对的%{和%}括在一起, 它们将原封不动地复制到Bison所生成的语法分析程序之中去。Bison说明有多种, 关键字%token的作用是说明终结符, 没有在%token语句中出现的标识符都被认为是非终结符, 每个非终结符必须至少在产生式的左部出现一次。在所有非终结符中, 描述最一般结构的产生式左部非终结符, 被称为开始符。%right、%left和%nonassoc的作用是说明算符的结合性, 以解决语法的二义性问题。在<子程序段>里, 用户可以自己所需的各种子程序, 比如说错误处理程序yyerror () 子程序中的内容都会被Bison如实地复制到Bison所生成的语法分析程序之中去。

3 编译模块的设计与实现

3.1 应用Flex词法分析

词法分析是程序解释的第一步, 是编译的基础。词法分析是从左到右逐个字符地对源程序进行扫描, 产生一个个单词符号, 把它作为字符串的源程序改造成为单词符号串的中间程序, 用于随后的语法分析。本编译模块设计的词法分析程序需要完成以下任务:

1) 建立PLC指令集。Pl C基本指令集基本逻辑指令包括ALD、OLD、LPS、LRD、LPP、LDS、LD、A、O、END等。

2) 给出对应于上述程序字集的Flex正规式表达式, 并且对应于每条词法规则, 编写其被识别时应执行的动作。其中部分Flex源程序如下:

3) 通过flex Flex_plc.l指令, 将Flex源程序转换成c语言的词法分析程序yylex () 。

3.2 应用Bison语法分析

在语法分析中, 主要工作也是编写Bison源文件, 这里将其命名为Bison_plc.y。

其说明部分要依据软PLC后续环节和运行系统的要求包含一些头文件和函数或数据的定义, 例如定义目标代码存贮区、函数指针数组等。指令表的Bison_plc.y文件的说明部分如下:

在编译PLC语句表时最重要的是如何完成Bison程序中的规则段, 其规则部分按照指令表语言的要求和巴克斯文法规则BNF进行编写。当我们为一种语言制定了形式语法后, 就完全定义了这个语言, 哪些东西是该语言的, 哪些东西不是该语言的都不会有歧义了。因此当我们用定义的语法规则定义PLC的语句表语言后, 经编译成功后, 就可以生成PLC语句表指令的解析程序, 完成对语句表的编译, 当输入的语言不符合PLC指令格式时, 编译程序就会报错, 当语句表正确时, 就会被正确编译, 生成目标代码。设计中根据指令格式将语句表定义了五种匹配模式, 这五种模式也就是PLC语句表的叶, 根据这个原理, 将每种模式继续向下分, 直到终止符为止, 而终止符也就是我们在词法分析器中定义的关键词, 这也就是词法分析器能够识别语句表的关键, 在这部分设计时最主要的是语法树的构建。

语法分析器在工作时是至下向上工作的, 因为语句表中的字母也就是在语法分析器中定义的终止符, 当词法分析器将识别的单词传递给语法分析时, 语法分析器就会向上匹配, 执行相应的数据存储, 直到遇到最终的非终止符为止, 从语法树来看就是从叶寻根的方式来工作的, 当完全符合末一种规则时, 就会完成译码, 将PLC指令中对应的地址信息存储到定义的目标代码缓冲区中, 完成一条语句表的译码。以下是布尔型操作数指令对应的语法树, 如图1所示。

生成的是满足C语言格式bison_plc.tab.h和bison_plc.tab.c文件。最后, 将Flex_plc.c、bison_plc.tab.h和bison_plc.tab.c文件一同放在工程目录下, 供开发系统中的编译菜单的响应函数On Compile () 调用, 实现指令表的编译功能。

3.3 Flex与Bison的结合

根据上述方法, 可以生成独立运行的词法分析器和语法分析器, 也可以将二者结合起来, 由词法分析器识别单词, 传递给语法分析器处理。本文采用语法分析器调用词法分析程序, 即将它们结合的方法, 在一个工程中完成词法分析和语法分析模块。

Bison所生成的语法分析程序yyparse () 调用的词法分析程序与flex所生成的程序都是yylex () 函数。对于Flex生成的词法分析器, 和Bison结合使用时, 每当yylex () 读取并匹配了一个模式时, 就返回一个标记, 语法分析程序获得返回的标记后, 进行语法分析。当Bison运行一个带有标记的.y文件时, 会生成一个头文件, 它对每个标记都有#define的定义, 这个头文件必须在相应的Flex源文件中的C声明段中包含。

Flex与Bison结合生成编译器的步骤为[6]:

1) 根据指令表的编写格式和规则, 编写一个名为Flex_plc.l的语句表的Flex源文件, 以及一个Bison_plc.y的Bison源文件 (文件名称可以自定义, 但文件类型必须为.l和.y) 。

2) 用Bison运行Bison_plc.y文件, 生成Bison_plc.tab.c和Bison_plc.tab.h文件。因为在Flex源文件中需要包含Bison_plc.tab.h头文件, 利用里面的宏定义, 因此要先运行Bison_plc.y文件。

执行命令为:..bison-d Bison_plc.y

3) 运行Flex_plc.l文件, 生产Flex_plc.yy.c的c语言文件。执行命令为:..flex Flex_plc.l

4) 用Visual C++将Bison_plc.tab.c、.Bison_plc.tab.h和Flex_plc.yy.c连接起来编译, 生成可执行文件Flex_plc.yy.exe。

5) 运行Flex_plc.yy.exe, 即可对指令表语言进行词法和语法分析。

3.4 代码转换

代码转换在词法分析、语法分析完成后, 如没有错误, 语法分析程序输出目标代码。软PLC开发系统的目标代码是PLC指令的二进制编码[7], 例如:操作符AND的内部码为00FF00, 元件X的编码0X01, 将操作符的编码与元件编码相加作为目标代码的高十六位, 低十六位为元件的编号, 指令AND X1的编码为00FF010001。代码转换的过程在词法分析时完成。

4 结束语

应用Flex和Bison编写软PLC的编译模块, 它的优点是与用户自己手动编写词法与语法分析程序相比, 可以减少大量的编码, 并且速度和准确度都有很大提高。如果目前的指令系统发生变化, 规则需要扩充或修改时, 对于Flex和Bison程序来说只需修改很少的部分即可, 这种易于维护和实现的方案不仅降低了软PLC编译器的开发难度也提高了效率。

摘要:软PLC编译模块是软PLC开发系统中的重要部分, 同时也是整个开发系统中实现难度最大的部分。Flex (快速词法分析发生器) 和Bison是优秀的词法扫描和语法分析工具。本文主要介绍通过Bison和Flex软件的结合来自动准确的对指令表语言进行词法和语法分析的详细过程。

关键词:软PLC,编译模块,Bison,Flex

参考文献

[1]基于MSYS的Flex&Bison (编译器开发工具) 使用教程.http://www.360doc.com/content/10/0424/13/1156733_24648165.shtml.

[2]田文琦, 于东, 高伟, 纪元.flex和bison在软PLC编译器中的应用[J].微计算机信息, 2009, 7-1:235-237.

[3]陈火旺, 钱家哗, 孙永强.编译原理[M].国防工业出版社, 1984.

[4]Levine, John R., Tony Mason and Doug Brown, Iex&Yacc.OReilly&Associates, Inc.Sebastopol, California, 1992.

[5]GNU flex and bison, http://www.gnu.org.

[6]熊伟, 戴果.在Visual C++集成开发环境下应用flex和bison开发编译器[J].战术导弹控制技术.2004, (4) :64-67.

PLC模块 篇6

硬质胶囊生产线在生产过程中具备无极调速,慢速启动、快速制动、故障显示、报警等功能,整条生产线采用工业计算机集中控制方式,速度、位置控制等相关动作都可以在触摸屏上进行相应的操作,其操作简单,方便。基于整条生产线的要求及所要实现的功能,在生产硬质胶囊的蘸胶机构中采用了先进的伺服电机,它不仅具有定位准确、精度高、结构简单、使用方便,能降低生产成本的特点,而且还提高了系统的机械性能和自动化程度,功效较高,使得生产的胶囊毛坯质量稳定。

1 蘸胶机构

硬质胶囊蘸胶机构主要由伺服电机、电机支座、蘸胶挂架、蘸胶模具等构成。伺服电机安装在电机支座上,伺服电机下部连接有丝杠,丝杠自上而下依次套有浮动连轴节、轴承及丝母,蘸胶挂架的一端经丝母连接在丝杠的一端,另一端设有蘸胶模具。伺服电机带动丝杠上下运动,即可使上下运动的蘸胶模具浸入胶液面,使胶囊模具在离开胶液时表面挂上一定厚度的胶液,从而达到蘸胶的目的。在该机构中,将蘸胶下降过程分为3段,蘸胶上升过程分为7段,蘸胶上下往复运动的速度和位置参数通过可操作的触摸屏界面设定,由可编程控制器PLC对伺服电机的运动实施程序控制[1,2]。

2 控制系统的组成及工作原理

该控制系统控制器选用S7-200系列的可编程控制器,CPU型号为224XP,同时选用定位模块EM253,二者通过自身所带的电缆直接连接。定位模块EM253用于S7-200 PLC定位控制系统中,通过产生高速脉冲来实现对电机的开环速度、位置的控制[3];选用西门子型号为MP377的触摸屏,通过组态变量建立触摸屏与PLC的通讯[4,5],操作和监控S7-200,不仅可靠性高,不需要考虑通讯问题,而且可以使触摸屏上的各项设定值输入PLC;同时,伺服驱动器的使用可以提高伺服电机的精确率。整个控制系统的结构框图如图1所示。

控制过程中,借助于STEP 7-Micro/WIN编程软件的位置控制向导,对EM253进行配置,实现对伺服电机运动参数和运动轨迹包络的设定,即完成伺服电机在每段运行中目标速度和结束位置的设置;同时,触摸屏上的点动操作,可以进行位置、速度参数的实时设置以及集中显示。

3 系统的实现

3.1 触摸屏的介绍

触摸屏画面是胶囊生产过程中,操作人员面对的直接画面。为了满足对伺服电机的运动控制,采用触摸屏,实现电机运动过程中的参数设置与调整[6,7]。在本文中,通过SIMATIC Win CC flexible对触摸屏画面进行编辑,使触摸屏可以完善的控制PLC的动作,从而达到控制伺服电机的目的。在胶囊生产线中,主控界面的设置如图2所示。

如前所述,蘸胶机构采用了伺服电机。在蘸胶过程中,将蘸胶下降分为3段,蘸胶上升分为7段,分别为体、帽的下降段和上升段,下降到设定的位置时,中间有一个短暂的停留时间,保证胶囊模具进入胶液后,在离开胶液时模具表面上挂有一定厚度的胶液,从而保证了生产的胶囊毛坯质量。

为了实现对伺服电机运动参数的设置,直接由主控界面上的“参数设置”按钮进入“蘸胶参数设置”画面。“蘸胶参数设置”画面如图3所示。我们可以看到,对于伺服电机运动的等速段,每一段都需要设置步进长度和步进速度,确保伺服电机的准确运动。在该系统中,由于采用了EM253定位模块,根据该定位模块中包络的设置,需要把伺服电机运动的结束位置和目标速度以脉冲个数的形式给出;同时,为了存储定位模块EM253设置的参数、运动轨迹包络表格,在S7-200系统中的V区存储空间定义了该定位模块所需的存储空间。所以,在触摸屏的组态中,设置伺服电机每段运行的结束位置和目标速度这些外部变量的地址,即使用这些外部变量对PLC进行访问的PLC地址时,为了保证地址的一致性,需要把这些外部变量的地址设置在S7-200系统中的V区,至于具体的地址值,在定位模块配置完成之后,模块的组态参数和运动轨迹包络表会自动的插入到用户的S7-200程序的数据块中,可以通过查看数据块,找到每个参数对应V区中的具体地址值;同时,需要指出的是,步进速度脉冲数的设置始终是正值,而步进长度,即位移脉冲数的设置可正可负,当二者都是正值时,电机带动丝杠朝着一个方向运动,定义为电机正向转动;当步进长度的脉冲数为负值时,丝杠就会朝着相反的方向运动,即电机反方向转动。

文章中,伺服电机的最高运行速度是3 000 r/min,与之对应的脉冲频率是100 000 p/s,可以得到电机转动一圈所需的脉冲数是2 000个,而电机转动一圈丝杠的垂直位移是5.08 mm,根据上述的这些参数,计算得脉冲当量是0.002 54 mm/p。有了这些参数,在蘸胶的过程中,就可以根据生产线的实际要求,实时设定电机的运行参数。

3.2 EM253的配置

位置控制模块EM253是S7-200的特殊功能模块,通过驱动器与伺服电机相连接构成开环控制系统。为了使模块能够控制电机的移动,必须对模块进行配置,STEP 7-Micro/WIN提供了位置控制向导,可以完成对EM253的配置。

打开STEP 7-Micro/WIN软件,单击主菜单中的“工具”,再单击“位置控制向导”,出现“位置控制向导”对话框。根据具体的要求,设置电机在这个项目中的最高速度、启动停止速度、加减速时间等;同时,在EM253输出脉冲和方向的设置上,设置P0口发送位置脉冲,P1口发送方向脉冲;最后,按照工艺要求计算出每个包络中每一步的目标速度和结束位置,绘制包络。在EM253的配置中,最多可以配置25个包络,这里的包络是指电机的运动轨迹,它包括电机移动的位移和速度。每个包络最多有4步,每个步都对应两个变量地址,地址中分别存放的是这个步的结束位置和目标速度,而这两个地址与触摸屏中控制外部变量,即伺服电机结束位置和目标速度的地址是完全对应的。对于包络的具体应用,以蘸胶过程中体上升的部分段为例说明:在这个包络中,包括3个步,其中,步0的目标速度和结束位置分别为2 000 p/s和-4 000 p;步1的目标速度和结束位置分别为5 000 p/s和-7 000 p;步2的目标速度和结束位置分别为1 000 p/s和-3 500p,最终形成的包络如图4所示。

对于电机在运动过程中包含多个移动位移和速度的情况,可以设置多个包络,在每个包络中设置一个或多个步,但是只有在前一个包络执行结束后才能执行后一个包络,可以利用POSxRUN指令的输出完成置位位Done,作为下一个包络开始的启动条件。POSx-RUN指令是位置控制模块的功能子程序。在胶囊生产线的蘸胶过程中,正是使用该功能子程序,使伺服电机按照预先定义好的运动轨迹包络,移动到指定的机械位置[8]。

配置完成后,模块的组态参数和运动轨迹包络表会自动插入到用户的S7-200程序的数据块中;同时,在用户项目的程序块中,自动增加了位置控制指令子程序,只需在PLC主程序中调用相应的位置控制子程序,使它们使能,即可完成相应的动作。

4 结束语

PLC模块 篇7

关键词:PLC模块,变电站自动化系统测试,测试仿真系统,测试仿真环境,模拟电网故障

0 引言

随着电力系统“大二次”的整合和变电站集中控制的推广,对变电站自动化系统的功能和性能要求越来越高。而目前变电站自动化系统测试还停留在测控装置单体测试的水平上,几乎没有检测机构在实验室中对由大量测控装置组成的变电站自动化系统进行系统级的功能和性能检测,这不能满足变电站自动化系统发展的需要,所以在实验室中构建与实际变电站同等规模的测试仿真系统对于自动化系统合格入网、稳定运行意义重大[1]。

1 变电站自动化测试系统构建概述

1.1 测试系统构成说明

整个变电站自动化测试结构如图1所示,由测试仿真环境、自动化系统间隔层设备、自动化系统站控层设备、模拟调度主站、继电保护测试仪等组成。其中测试仿真系统包括:测试仿真环境、模拟调度主站、继电保护测试仪;被测试的自动化系统包括间隔层设备和站控层设备。测试仿真环境真实地模拟了一个国网公司典设A-7规模的220 k V变电站,共有3台主变、6条220 k V线路、10条110 k V线路[2]。测试仿真环境是用SIEMENS公司的PLC系统来实现的,主要功能包括:模拟一次设备的控制信号、位置信号和状态信号;模拟保护装置的动作、告警信号;实现全站的防误逻辑闭锁;实现电网故障状态序列等。继电保护测试仪的作用是提供测试所需要的电流电压模拟量。模拟调度主站是基于ET-2000规约分析仪构建的,主要用于模拟通过104通道(基于以太网)[3]和101通道(基于串口)[4]和自动化系统的通信及数据处理装置进行通信。自动化系统间隔层设备和站控层设备都属于被测试范围,间隔层设备是指按照A-7规模变电站配置的相关测控装置(共29台)。站控层设备如图1所示,包括:操作员站和通信及数据处理装置。测试仿真环境和自动化系统间隔设备通过电缆联系,进行遥控遥信量的交互。间隔层设备和站控层设备通过以太网进行信息交互。站控层通过通信及数据处理装置和模拟调度主站联系[5]。

1.2 测试系统功能说明

变电站自动化系统测试包括:系统构成测试、遥测量误差测试、系统功能测试、防误操作功能测试、系统性能测试[6]。其中系统构成测试,主要是对自动化系统结构和网络结构进行检查,比较简单。测试仿真系统主要是对遥测量误差、系统功能、防误操作功能、系统性能进行测试。其中系统测试包括正常运行时系统性能测试、电网故障时系统性能测试、雪崩故障时系统性能测试。由于测试仿真系统的PLC模块是可编程的,所以可以根据需要通过对PLC编程来实现不同的电网故障,例如220 k V母线故障等,同样也可以实现雪崩故障,具体过程下文将作详细说明。

2 测试仿真环境的硬件实现

通过基于PLC模块的仿真环境真实地再现了变电站实际运行环境,如图2所示,现作详细说明。

基于PLC的变电站仿真环境由三部分组成:PLC I/O模块、PLC控制单元、PLC后台。PLC I/O模块和PLC控制单元之间通过Profibus总线进行连接,PLC控制单元通过以太网和PLC后台连接[7],PLC I/O模块和测控装置之间通过光耦进行连接。

PLC I/O模块根据功能主要分成三类:模拟变电站一次设备的遥控遥信量,例如开关、刀闸的控制信号、位置信号和本体信号;模拟变电站二次设备的遥控遥信量,例如保护的动作信号和告警信号;公共开入开出量模拟,用于触发GPS时间测试仪对时和触发保护测试仪的状态序列。

PLC控制单元主要有通信接口模块和CPU模块组成。通信接口负责和PLC后台进行数据交换。CPU模块运行PLC主程序,负责对遥控量的处理、遥信量的产生、全站闭锁逻辑的实现和电网故障中断的处理。

3 测试仿真环境的软件实现

变电站仿真环境软件主要由两部分组成:PLC控制单元程序、PLC后台程序(基于Win CC编程)。

(1)PLC控制单元程序说明

PLC控制单元程序简称主程序,采用了面向过程的编程方式,没有人机对话界面,使用了PLC的STL程序语句。PLC仿真系统只有开关量输入/输出模块(即I/O模块),没有模拟量输入输出模块。每个I/O模块有8个I/O端口。每个I/O端口都有对应的I/O全局量,例如Q0.0即表示第0个输出模块的第0个端口(PLC模块和端口从0开始计数),I0.0即表示第0个输入模块的第0个端口。I/O端口和I/O全局变量之间通过映像缓冲区关联。

主程序的基本流程如图3所示。

当PLC的CPU模块上电启动时,自动进入初始化程序,对PLC的I/O模块进行初始化设置,同时将“案例选择”全局变量赋值为“系统正常运行案例”,以保证上电启动后的第一次程序循环进入正常系统运行程序。然后读取输入映像区,将其状态赋值给输入全局变量。输入映像区和输入端口实时关联,当输入端口为高电平,则映像区临时变量为1;输入端口为低电平,则映像区临时变量为0。主程序的案例主要分为两类:循环案例和中断案例。循环案例顾名思义就是循环执行的案例,中断案例是靠定时器进入中断执行程序,一旦定时器开启,则每过一个定时器间隔时间即进入一次中断程序,直到关闭定时器。

系统正常运行案例属于循环执行案例,主要实现的功能有:(1)输入端口和输出端口的关联,即遥控量和遥信量的关联,例如当接收到开关分闸命令(遥控量),则相应的开关位置信号要处于分闸位置(遥信量),真实的模拟开关接到分闸命令到开关分开这个过程。(2)实现全站的防误闭锁逻辑。为了防止电气误操作,在技术上提出了闭锁逻辑,即隔刀、地刀等一次设备的操作必须满足一定的条件,如果条件不满足,则闭锁相应操作,例如:母线地刀操作的条件就是母线上所有隔刀处于分闸位置[8]。系统正常运行案例当接到来自测控装置的遥控命令时,首先对其相应的闭锁逻辑进行判断,符合条件则改变相应遥信量的输出,以模拟设备的动作过程,不符合条件,则闭锁遥控命令,并报警。

中断案例主要是指自动化系统测试所需的测试案例,包括雪崩测试案例、220 k V母线故障案例、#1主变故障(高压侧开关失灵)案例。这三个案例实现方法是类似的,都是采用了PLC系统中的定时器中断来完成。现以雪崩测试为例进行详细说明:

主程序每次循环都判断“案例选择”这个全局变量,当“案例选择”为“雪崩测试案例”时,则开启定时器中断,中断时间设为100 ms(雪崩测试要求每500 ms,相关遥信量变位一次),同时将雪崩测试计数器请0(该计数器为一个全局变量)。至此,每隔100 ms,进入一次定时器中断,每进入一次定时器中断,则计数器加1。在中断程序中,对计数器进行判断,当为5的整数倍时(因为要求每500 ms,变位一次,而定时器定时设为100 ms),则对相应遥信量进行状态改变。当变化次数满足要求时(要求变化20次),则在中断程序中,关闭定时器,结束这次雪崩测试。这里需要说明的是:案例选择是在PLC后台人机界面中选择的,即在后台程序中,对“案例选择”变量进行赋值的。

(2)PLC后台程序说明

PLC后台程序基于Wincc编程,类似与VB的窗体编程。后台程序主要包括:(1)实现一次主接线图的界面,在此界面上对一次设备强制分合和电气解锁,强制分合是指直接对一次设备的位置信号进行变位,而不是通过遥控命令来对一次设备位置信号进行变位。电气解锁就是对接受的遥控命令不进行闭锁逻辑判断。(2)进行案例选择,目前可以选择的案例有:系统正常运行案例、雪崩测试案例、220 k V母线故障案例、#1主变故障(高压侧开关失灵)案例。案例是在PLC控制单元程序中实现的,这一点上面已经做了详细说明。

这里还需要说明的是:PLC后台程序是如何与PLC控制单元程序进行数据交互的。在PLC后台编程工具Win CCExplorer中,可以建立PLC控制单元程序中全局变量的映射。通过读取映射即可知道全局变量的值,对映射赋值即可对全局变量进行赋值。正是通过这种方法,后台程序才得以提供人机界面让测试人员选择需要执行的测试案例[9]。

4 测试仿真系统在模拟电网故障测试中的应用

对于自动化系统性能测试分为两个层次:正常运行下的性能测试、电网故障下的性能测试。用测试仿真系统模拟的电网故障下性能测试属于非常规测试,主要包括:电网故障下的遥信SOE性能测试、遥信COS性能测试、变化遥测到后台画面显示延时测试、变化遥测到远动机发送报文延时测试、变化遥信到远动机发送报文延时测试、通信网络负荷率测试等。借此对自动化系统在恶劣情况下是否可以稳定可靠运行作出客观、准确的评价,这也正是测试仿真系统的优势和价值所在。现以220 k V母线故障为例对测试仿真系统如何模拟电网故障进行阐述。

由第3节的介绍可以得出,母线故障状态序列是用测试仿真环境的PLC控制单元中执行的,但是每次状态序列是由PLC后台程序来触发的。电网故障时电流电压的变化是通过继电保护测试仪的状态序列来实现,该状态序列是由测试仿真环境的PLC公共模块来触发的。

如图4所示,初始状态时继电保护测试仪提供正常电压电流给自动化系统的间隔层设备(即测控装置);由PLC后台程序开始母线故障的模拟,进入状态1(0 ms):PLC控制单元程序进入定时器中断,输出两路开出量,一路触发继电保护测试仪改变状态,提供故障时的电流电压量,一路触发GPS时间校验仪记录故障开始时刻;在第30 ms时,PLC控制单元程序进入定时器中断执行状态2:模拟相关保护动作,同时输出一路开出量来触发保护报文模拟装置,上送保护动作事件报文;在第50 ms时,PLC控制单元程序进入定时器中断执行状态3:模拟一次设备动作,同时输出两路开出量,一路触发继电保护测试仪改变状态,提供故障后的电流电压量,一路触发GPS时间校验仪记录故障结束时刻。通过这三个状态的执行,真实地模拟了母线故障时遥信遥测量和保护报文信息的产生,从而在此情况下,对自动化系统性能进行测试。

5 总结

基于PLC模块的测试仿真系统从根本上提高了变电站自动化测试的水平:(1)由于仿真环境真实地模拟了变电站运行情况,所以使得自动化测试更加真实、客观;(2)将自动化测试提升到系统级的高度,尤其是对电网故障情况下的系统性能进行测试,这是以前所没有的。因此测试仿真系统为自动化系统入网测试,为自动化系统的稳定运行打下坚实的基础。在江苏省公司的要求下,对南京中德公司的自动化系统进入入网测试,在此基础上编制的《变电站自动化系统入网检测方案》初稿已提交省公司进行讨论。此外PLC系统提供用户开发界面,为测试仿真系统的后续开发提供了便利,具有一定的灵活性和可扩展性。

参考文献

[1]姜思卓.集中控制中心的建设与应用[J].农村电气化,2008,(2).

[2]刘振亚.国家电网公司输变电工程典型设计220kV变电站分册[M].北京:中国电力出版社,2005.

[3]DL/T634.5101-2002,《远动设备及系统第5部分:传输规约第101篇:基本远动任务配套标准》[S].

[4]DL/T634.5104-2002,《远动设备及系统第5部分:传输规约第104篇:基本远动任务配套标准》[S].

[5]柳永智,刘晓川.电力系统远动(第二版)[M].北京:中国电力出版社,2006.

[6]杨洪涛,卜一凡,梁志成,等.基于Hypersim的变电站自动化系统闭环测试环境的建立[J].电力自动化设备,2007,(11):83-86.YANG Hong-tao,BU Yi-fan,LIANG Zhi-cheng,et al.Hypersim-based Closed-loop Test Environment for Substation Automation System[J].Electric Power Automation Equipment,2007,(11):83-86.

[7]廖常初.S7-300/400PLC应用技术[M].北京:机械工业出版社,2005.

[8]邱涛.电气二次防误闭锁与微机监控闭锁共同运行的必要性[J].电气应用,2008,(1):55-56.

【PLC模块】推荐阅读:

直流模块05-15

通用模块05-19

读写模块05-20

三模块05-21

数学模块05-25

通知模块06-09

网站模块06-13

模块式06-23

模块开发06-23

模块架构07-01

上一篇:石化项目管理下一篇:失地农民职业规划