关于施耐德昆腾PLC“算法或溢出错误”的分析处理方法

(整期优先)网络出版时间:2019-11-21
/ 2

关于施耐德昆腾PLC“算法或溢出错误”的分析处理方法

胡卫军1谌普业2刘杰2

五凌电力有限公司五强溪水电厂湖南省怀化市419642

摘要:本文主要介绍了施耐德昆腾系列PLC在大中型水力发电厂的机组控制应用中,当“算法或溢出错误”发生时,分别从外在现象、数据传递原理、运算过程等方面进行分析的一种方法。

关键词:PLC;溢出;寄存器;有功功率

引言

五强溪水电厂位于湖南省怀化市沅陵县境内,电厂总装机容量1200MW,安装5台250MW的混流式机组(额定水头44.5m),是沅水流域骨干电厂,也是华中电网骨干调峰调频电厂。1号~5号机组的现地控制单元(LCU)均采用施耐德昆腾系列PLC,编程软件为UnityProV5.0。

1概述

2016年4月8日10:29:05~10:29:07,2号机组带有功功率250MW,监控系统上位机操作员站突发如下报警:

检查情况:

(1)2号机组LCU为CPUB主用,CPUA备用,工况正常。

(2)2号机组LCU触摸屏报“PLC溢出或运算错误动作”,未复归。

(3)2号机组LCU触摸屏无扫查开入量信号变位报警。

(4)使用维护终端检查CPUB中“PLC溢出或运算错误”地址%s18为1,检查CPUA中“PLC溢出或运算错误”地址%s18为0,判断“PLC溢出或运算错误”为瞬时报警,实际已复归。

2原因分析

2.1扫查开入量异常变位分析

五强溪电厂计算机监控系统上位机使用北京中水科的H9000V3.0a系统,下位机使用施耐德昆腾系列PLC,采用分层分布式结构布置。信号传递过程大致为①PLC数据采集模块→CPU模块中PLC程序→现地LCU触摸屏;②PLC数据采集模块→CPU模块中PLC程序→CPU中虚点寄存器→上位机系统。

2.1.1PLC扫查开入量上送原理

DI模块共9个,每个模块含32个通道,共288通道,通道号为%I001~%I228,上送过程如下:

%I001~%I288*/送触摸屏

经IEC_BMDI功能块转换为:

==>%MW111~%MW128*/每个%I占用1bit,每个%MW占用16bit

经内部封装功能块X4_4X_64转换为:

==>%MW1762~%MW1779

注:%MW为系统内部虚点寄存器地址,此类地址主要用于通信量存储,包含上位机指令下达、触摸屏指令下达、振摆通信数据寄存、百抄表数据寄存、送上位机量寄存等,根据H9000_PLC_V3.0规约,通过使用不同的地址段完成各类数据寄存。

2.1.2根据上述原理,本次发生异常变位的扫查开入量与虚点寄存器的对应关系如下:

由以上可知,所有异常变位信号均集中于%MW1776与%MW1777两个地址。将二进制换算为十进制为:%MW1776正常时为896,异常时为128;%MW1777正常时为0,异常时为60235。

根据2.1.1与2.1.2中相关原理及现象分析,因扫查开入量未实际动作,故所对应的%I类地址未发生变位,所以触摸屏未产生相应报警。而上位机产生异常变位报警是因虚点寄存器地址%MW1776与%MW1777被异常占用或异常写入,引起数值变化而导致。

2.2“PLC溢出或运算错误”分析

2.2.1“PLC溢出或运算错误”信号上送原理

“PLC溢出或运算错误”属PLC综合信息量,由PLC内部判断产生。“PLC溢出或运算错误”为PLC的系统位,位符号为%s18,上送过程如下:

%s18

经MOVE模块转换为:

==>%m455

经IEC_BMDI功能块转换为:

==>%MW161:10

经内部封装功能块X4_4X_64转换为:

==>%MW1804:07

2.2.2“PLC溢出或运算错误”产生原理

正常情况下,%s18设置为0,如果存在以下情况,当发生容量溢出事件时,此位将设置为1:

结果大于+32767或小于-32768(单精度长度)

结果大于+65535(无符号整数)

结果大于+2147483647或小于-2147483648(双精度长度)

结果大于+4294967296(双精度长度或无符号整数)

实际值超出限制

被零除

负数的平方根

在鼓上强制执行不存在的步

试图占用已满的寄存器,试图清空已空的寄存器

2.2.3根据2.2.1与2.2.2中相关原理分析,“PLC溢出或运算错误”在上位机与触摸屏中均有报警,且实际系统位%s18为1,故排除虚点寄存器%MW1804:07被异常写入或占用,是实际发生了“PLC溢出或运算错误”。查看PLC状态寄存器得到以下信息:

系统报警算术错误2016/4/810:43:28

故障任务:MAST

CPU故障类型(%SW125):溢出缺省值

程序戳记:WQX_F2\程序\任务\MAST\段

\P_Power(l:2,c:1)

可见溢出发生在“WQX_F2\程序\任务\MAST\段\P_Power(l:2,c:1)”中,该段程序为有功给定与实发值做差值运算,程序段如下:

*/运算方法:P_X=INT_TO_REAL(P_Given-P_Field);

REAL:P_X

INT:P_Given@%MW1400

INT:P_Field@%iw54|‘有功功率’

*/功能描述:定义上位机有功给定%MW1400为整型的P_Given,定义实采有功功率(变送器)%iw54为整型的P_Field,定义P_X为浮点型,做如下运算:

P_Given-P_Field

将结果由整型转换为浮点型,并赋值给P_X。

2.2.4小结

由以上分析,P_Given、P_Given数据类型为int,整型,数值范围为(-32767,+32767),运算结果超过其数值范围,就会产生“PLC溢出或运算错误”报警。

正常运行时,P_Given、P_Given均不可能在(-32767,0)区间内赋值,运算符为减法,所以不会溢出。在当时上位机给定有功是250MW,实际对应于P_Given值为13333,如果当时P_Field@%iw54|有功功率产生瞬间故障(准确的说,只有在断线情况下,才会赋值-32767,其他情况均不可能出现负数),PLC检测到P_Field@%iw54|有功功率为负的最大值,即-32767,这样13333-(-32768)=46101,超出一个整型字的最大值32767,就会发生PLC溢出或运算错误故障报警。

P_Given(有功实发)为模拟量输入值,PLC无法直接修改,且正常情况下P_Field值为(0-300MW,plc值0-16000),P_Given值范围为(0-255MW,0-13600),故该报警反应出二次回路可能存在接触不良导致瞬时断线故障。

3优化处理过程

3.1瞬时故障,系统位%s18必须手动设置为0。

3.2检查二次回路是否存在接触不良。

3.3增加判断P_Given、P_Field值有效性(0-32767),有效则参与计算,无效则弃之。

4结束语

如今,PLC在工控系统中的应用已越来越广泛,其中施耐德昆腾系列PLC有很大的市场占有率。本文以五强溪水电厂2号机组LCU发生的“算法或运算错误”为例,详细阐述了该“错误”发生后的分析处理过程,可为业内发生类似问题时提供一种问题分析处理方式的参考。

参考文献

[1]《规约H9000_PLC_Unity3.0》.

[2]《五强溪水电厂监控系统LCU使用手册》.

[3]《五强溪水电厂H9000监控系统上位机维护手册》.

[4]《五强溪水电厂H9000监控系统上位机集成手册》.

[5]《UnityPro的系统功能块库》.

[6]《UnityPro语言和程序结构参考手册》.

作者简介

胡卫军,男,汉族,湖南宁乡,助理工程师,大学本科,主要从事水电厂电气设备维护管理工作。