PLC模拟量通道品质判断(西门子、施耐德)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
诊断字含义解释如右:
示例:%IW9.5=1表示此模块第5个通道断线或电压不足。
系统还自带系统字对模块进行诊断,系统字%SW160到%SW167分别与机架0到7关联。其中每个字的位0至15分别与这些机架的位置0至15处的模块相对应。如果模块出现故障,则相应位为0;如果模块操作正确,则为1。示例:%SW163.5=0机架3位置5处的模块出现故障。
系统自带诊断功能缺省一般默认为+/-12.5%的溢出,且不需要专门进行配置,较为简单实用,所以我们只需在这个故障点上再或上模拟量自身的跃变故障判断即可。下附Unity Pro中模拟量通道品质判断代码:
IF PV_N-PV_O<>0.0
THEN
PV_TMP:=ABS(PV_N-PV_O);
PV_O := PV_N;
NETWORK1:
A(
L #AI_IN‘AI经过标幺后的本周期工程量
L #MD_IN‘AI经过标幺后的上周期工程量
-R
T #AI_TEMP1
AN OV
SAVE
CLR
A BR
)
A(
L #AI_TEMP1
L 0.000000e+000
<>R
)
JNB _001
L #AI_IN
T #MD_IN
_001: NOP 0
综上我们应该根据模块型号的不同采用转换后输出等于32767或则-32768来进行短路及断线判断保护。但是有时模拟量信号不可避免的会受到外部环境干扰而产生较大的波动,导致设备误动作,有些人会采用滤波方式来对模拟量进行处理,但是这样在对实时性保护要求高的地方也不适用。我一般会比较俩次扫描周期之间差值的绝对值,根据实际情况做一个速率限制,超出则认为是干扰进行过滤,不参与保护动作。下附S7-300中模拟量通道品质判断代码:
COME[4] = 16#00表示无字节3中标示的故障信息;
COME[5] = 16#71表示模拟量输入;
COME[6] = 16#08表示模板的每个通道有8个诊断位;
COME[7] = 16#08表示模板的通道数;
COME[8] = 16#03表示0通道错误和1通道错误,其它通道正常;
COME[9] = 16#10表示0通道断线;
对于三线制的热电阻信号,模块是通过电桥将阻值转换为电压进行测量,所以外部断线时,AI模块接受到的电压为0或则等于源电压,短路时电压信号为0。
西门子AI模块对于电流信号是将4~20mA信号转换为0~27648的数字量。在允许范围内最大值为32767,对应电流22.96mA,最小为-4864,对应电流为1.185mA。对于S7-300的模块当输入电流大于21.81mA时,转换后的输出值为32767,当输入电流小于1.185mA时,转换后输出值为-32768.而S7-400的AI模块在电流值大于21.81mA或小于1.185mA时输出值都为32767。
2.在新项目中插入一个S7-300的站SIMATIC 300(1);
3.做硬件配置,CPU为CPU315-2DP(6ES7 315-2AG10-0AB0),模拟量模块为6ES7 331-7KF02-0AB0;
4.配置SM331-7KF02模块的inputs选项,选择0-1通道组为2线制电流(2DMU),其他通道组为电压,并注意模板的量程卡与设置的相同。选中Enable框中的Diagnostic Interrupt选项,选中Diagnostics选项中的0–1通道组中的Group Diagnostics和with Check for Wire Break选项,配置完成的画面如下:
*)
注:西门子PLC中M、MB、MW、MD共用一个存储区,即MD0 = MW0 +MW2 = MB0 + MB1 + MB2 + MB3 = M0.0~M3.7
施耐德PLC中%M单独使用一个存储区,%MW与%MD共用一个存储区,%MD1 = %MW1 + %MW2
END_IF;
IF PV_TMP>PV_SP OR AI_DX
THEN
AI_QC_T:=TRUE;
ELSE
AI_QC_T:=FALSE;
END_IF;
RS_1(S1:=AI_QC_T, R:=RST AND (NOT AI_QC_T), Q1=>AI_QC);
PV_TMP := 0.0;
(*
PV_N本周期值,PV_O上周期值,PV_SP速率限制值,AI_DX通道断线故障,RST复位,AI_QC通道故障输出
11.打开DB13数据块,在线监控,具体画面如下:
因为通道断线是一到来事件,所以诊断信息存储到COME数组中,本例中COME数组字节的含义解释如下:
COME[1] = 16#0D表示通道错误,外部故障和模板问题;
COME[2] = 16#15表示此段信息为模拟量模板的通道信息;
COME[3] = 16#00表示CPU处于运行状态,无字节2中标示的故障信息;
COME[10] = 16#10表示1通道断线;
COME[11] = 16#源自文库0表示2通道正常,其它通道与2通道相同;
此方法实用性不强,且配置里面是2个通道为一组配的,如果有一个通道为备用,为免一直调用OB82报故障,还需将俩路模拟量的点串接起来,比较麻烦,故很少有人会采用。
对于2线制及4线制变送器,短路时AI模块接受到的电流会大于20mA,断路时电流是0mA。
8.此时在Blocks中自动生成OB1,OB82,DB13和SFC51;
9.打开OB82的程序并做简单修改,将19和20行拷贝到go:后面并保存,具体变化如下:
10.将整个S7-300站的程序和硬件组态下载到CPU中,下在完成后将CPU的模式选择开关切换到RUN位置,此时CPU运行,CPU的SF灯亮,SM331的SF灯亮,查看CPU的诊断缓冲区Hardware\Online\选择CPU并双击\Diagnostic Buffer,可获得相应的故障信息;
NETWORK2:
A(
L #AI_TEMP1
ABS
T #AI_TEMP1
SET
SAVE
CLR
A BR
)
A(
L #AI_TEMP1
L #SP‘工程量波动速率限定值
>=R
)
O(
L #PIW_IN‘AI通道地址
L 32767‘AI通道短路
==I
)
O(
L #PIW_IN
L -32768‘AI通道断线
==I
)
1.在Unity Pro XL中创建一新项目Test_wire_break,CPU选择Quantum (140 CPU67160);
2.做硬件配置,在本地总线机架背板140CRP93X00远程I/O模块,在下面出现的RIOBUS背板上插入140 ACI 030 00模拟量输入模块如下:
3.双击模拟量输入模块在弹出的画面中选中配置选项卡可看到如下图,8通道的模块占用了9个字长度的地址,前面8个字%IW1~%IW8分别对应8个通道的输入,最后一个字%IW9即为模块自诊断字:
5.硬件组态完成后,保存编译;
6.接下来完成诊断程序,在SIMATIC 300(1)\S7 Program(1)\Sources下面插入STL Source文件STL Source(1),此时文件为空;
7.打开空的OB1程序,然后选中Libraries\Standard Libraries\System Function Blocks\SFC51 RDSYSST DIAGNSTC,按F1键,出现SFC51的在线帮助信息,然后在信息的最底部点击Example for module diagnostics with the SFC 51,然后选择点击STL Source File,选中全部STL Source源程序拷贝到STL Source(1)中,存盘编译此源程序,提示没有错误;
电压信号与电流信号类似:对于S7-300的模块当输入电压小于0.296V时,系统输出-32768,当电压大于5.704V时,系统输出32767。S7-400的AI模块统一输出32767。
目前我们大多数是以0~27648为界限对模拟量进行断线或短路判断,但是很多仪表使用一段时间后会出现零点漂移现象,经过传感器转换后的信号会小于4mA或大于20mA,此时再用0~27648来判断会产生误判断或误动作。
项目中部分模拟量涉及到比较重要的连锁,当出现断线、短路、严重干扰或仪表故障时会造成误动作,引发比较严重的后果,所以一般在模拟量连锁跳机条件上应该与上该通道无故障判断。
首先以S7-300为例介绍下西门子本身自带的通道断线判断功能如下:
1.在STEP7 SIMATIC Manager中创建一新项目Test_wire_break;
= L 5.0
A L 5.0
BLD 102
= #QC_TEMP
A L 5.0
A(
L #PIW_IN
L 0
<>I
)
S #QC‘AI通道故障
NETWORK3:
AN #QC_TEMP
A #QC_RST‘AI通道故障复位
R #QC
应用示例如下,如有不当之处请指正!
对于施耐德系列PLC
以昆腾系列为例介绍下施耐德本身自带的通道断线判断功能如下:
示例:%IW9.5=1表示此模块第5个通道断线或电压不足。
系统还自带系统字对模块进行诊断,系统字%SW160到%SW167分别与机架0到7关联。其中每个字的位0至15分别与这些机架的位置0至15处的模块相对应。如果模块出现故障,则相应位为0;如果模块操作正确,则为1。示例:%SW163.5=0机架3位置5处的模块出现故障。
系统自带诊断功能缺省一般默认为+/-12.5%的溢出,且不需要专门进行配置,较为简单实用,所以我们只需在这个故障点上再或上模拟量自身的跃变故障判断即可。下附Unity Pro中模拟量通道品质判断代码:
IF PV_N-PV_O<>0.0
THEN
PV_TMP:=ABS(PV_N-PV_O);
PV_O := PV_N;
NETWORK1:
A(
L #AI_IN‘AI经过标幺后的本周期工程量
L #MD_IN‘AI经过标幺后的上周期工程量
-R
T #AI_TEMP1
AN OV
SAVE
CLR
A BR
)
A(
L #AI_TEMP1
L 0.000000e+000
<>R
)
JNB _001
L #AI_IN
T #MD_IN
_001: NOP 0
综上我们应该根据模块型号的不同采用转换后输出等于32767或则-32768来进行短路及断线判断保护。但是有时模拟量信号不可避免的会受到外部环境干扰而产生较大的波动,导致设备误动作,有些人会采用滤波方式来对模拟量进行处理,但是这样在对实时性保护要求高的地方也不适用。我一般会比较俩次扫描周期之间差值的绝对值,根据实际情况做一个速率限制,超出则认为是干扰进行过滤,不参与保护动作。下附S7-300中模拟量通道品质判断代码:
COME[4] = 16#00表示无字节3中标示的故障信息;
COME[5] = 16#71表示模拟量输入;
COME[6] = 16#08表示模板的每个通道有8个诊断位;
COME[7] = 16#08表示模板的通道数;
COME[8] = 16#03表示0通道错误和1通道错误,其它通道正常;
COME[9] = 16#10表示0通道断线;
对于三线制的热电阻信号,模块是通过电桥将阻值转换为电压进行测量,所以外部断线时,AI模块接受到的电压为0或则等于源电压,短路时电压信号为0。
西门子AI模块对于电流信号是将4~20mA信号转换为0~27648的数字量。在允许范围内最大值为32767,对应电流22.96mA,最小为-4864,对应电流为1.185mA。对于S7-300的模块当输入电流大于21.81mA时,转换后的输出值为32767,当输入电流小于1.185mA时,转换后输出值为-32768.而S7-400的AI模块在电流值大于21.81mA或小于1.185mA时输出值都为32767。
2.在新项目中插入一个S7-300的站SIMATIC 300(1);
3.做硬件配置,CPU为CPU315-2DP(6ES7 315-2AG10-0AB0),模拟量模块为6ES7 331-7KF02-0AB0;
4.配置SM331-7KF02模块的inputs选项,选择0-1通道组为2线制电流(2DMU),其他通道组为电压,并注意模板的量程卡与设置的相同。选中Enable框中的Diagnostic Interrupt选项,选中Diagnostics选项中的0–1通道组中的Group Diagnostics和with Check for Wire Break选项,配置完成的画面如下:
*)
注:西门子PLC中M、MB、MW、MD共用一个存储区,即MD0 = MW0 +MW2 = MB0 + MB1 + MB2 + MB3 = M0.0~M3.7
施耐德PLC中%M单独使用一个存储区,%MW与%MD共用一个存储区,%MD1 = %MW1 + %MW2
END_IF;
IF PV_TMP>PV_SP OR AI_DX
THEN
AI_QC_T:=TRUE;
ELSE
AI_QC_T:=FALSE;
END_IF;
RS_1(S1:=AI_QC_T, R:=RST AND (NOT AI_QC_T), Q1=>AI_QC);
PV_TMP := 0.0;
(*
PV_N本周期值,PV_O上周期值,PV_SP速率限制值,AI_DX通道断线故障,RST复位,AI_QC通道故障输出
11.打开DB13数据块,在线监控,具体画面如下:
因为通道断线是一到来事件,所以诊断信息存储到COME数组中,本例中COME数组字节的含义解释如下:
COME[1] = 16#0D表示通道错误,外部故障和模板问题;
COME[2] = 16#15表示此段信息为模拟量模板的通道信息;
COME[3] = 16#00表示CPU处于运行状态,无字节2中标示的故障信息;
COME[10] = 16#10表示1通道断线;
COME[11] = 16#源自文库0表示2通道正常,其它通道与2通道相同;
此方法实用性不强,且配置里面是2个通道为一组配的,如果有一个通道为备用,为免一直调用OB82报故障,还需将俩路模拟量的点串接起来,比较麻烦,故很少有人会采用。
对于2线制及4线制变送器,短路时AI模块接受到的电流会大于20mA,断路时电流是0mA。
8.此时在Blocks中自动生成OB1,OB82,DB13和SFC51;
9.打开OB82的程序并做简单修改,将19和20行拷贝到go:后面并保存,具体变化如下:
10.将整个S7-300站的程序和硬件组态下载到CPU中,下在完成后将CPU的模式选择开关切换到RUN位置,此时CPU运行,CPU的SF灯亮,SM331的SF灯亮,查看CPU的诊断缓冲区Hardware\Online\选择CPU并双击\Diagnostic Buffer,可获得相应的故障信息;
NETWORK2:
A(
L #AI_TEMP1
ABS
T #AI_TEMP1
SET
SAVE
CLR
A BR
)
A(
L #AI_TEMP1
L #SP‘工程量波动速率限定值
>=R
)
O(
L #PIW_IN‘AI通道地址
L 32767‘AI通道短路
==I
)
O(
L #PIW_IN
L -32768‘AI通道断线
==I
)
1.在Unity Pro XL中创建一新项目Test_wire_break,CPU选择Quantum (140 CPU67160);
2.做硬件配置,在本地总线机架背板140CRP93X00远程I/O模块,在下面出现的RIOBUS背板上插入140 ACI 030 00模拟量输入模块如下:
3.双击模拟量输入模块在弹出的画面中选中配置选项卡可看到如下图,8通道的模块占用了9个字长度的地址,前面8个字%IW1~%IW8分别对应8个通道的输入,最后一个字%IW9即为模块自诊断字:
5.硬件组态完成后,保存编译;
6.接下来完成诊断程序,在SIMATIC 300(1)\S7 Program(1)\Sources下面插入STL Source文件STL Source(1),此时文件为空;
7.打开空的OB1程序,然后选中Libraries\Standard Libraries\System Function Blocks\SFC51 RDSYSST DIAGNSTC,按F1键,出现SFC51的在线帮助信息,然后在信息的最底部点击Example for module diagnostics with the SFC 51,然后选择点击STL Source File,选中全部STL Source源程序拷贝到STL Source(1)中,存盘编译此源程序,提示没有错误;
电压信号与电流信号类似:对于S7-300的模块当输入电压小于0.296V时,系统输出-32768,当电压大于5.704V时,系统输出32767。S7-400的AI模块统一输出32767。
目前我们大多数是以0~27648为界限对模拟量进行断线或短路判断,但是很多仪表使用一段时间后会出现零点漂移现象,经过传感器转换后的信号会小于4mA或大于20mA,此时再用0~27648来判断会产生误判断或误动作。
项目中部分模拟量涉及到比较重要的连锁,当出现断线、短路、严重干扰或仪表故障时会造成误动作,引发比较严重的后果,所以一般在模拟量连锁跳机条件上应该与上该通道无故障判断。
首先以S7-300为例介绍下西门子本身自带的通道断线判断功能如下:
1.在STEP7 SIMATIC Manager中创建一新项目Test_wire_break;
= L 5.0
A L 5.0
BLD 102
= #QC_TEMP
A L 5.0
A(
L #PIW_IN
L 0
<>I
)
S #QC‘AI通道故障
NETWORK3:
AN #QC_TEMP
A #QC_RST‘AI通道故障复位
R #QC
应用示例如下,如有不当之处请指正!
对于施耐德系列PLC
以昆腾系列为例介绍下施耐德本身自带的通道断线判断功能如下: