S7—400系统温度测量显示异常的解决方案

2022-12-10 01:09:12   第一文档网     [ 字体: ] [ 阅读: ] [ 文档下载 ]
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。下载word有问题请添加QQ:admin处理,感谢您的支持与谅解。点击这里给我发消息

#第一文档网# 导语】以下是®第一文档网的小编为您整理的《S7—400系统温度测量显示异常的解决方案》,欢迎阅读!
测量,温度,异常,解决方案,显示



S7400系统温度测量显示异常的解决方案

【摘 要】日益先进的PLC控制器技术,在大型火电机组辅机系统自动化控制中占有着巨大的份额。尤其是S7-400H冗余系列PLC控制器,解决了传统PLC控制不能实现控制器冗余的问题,大大提高了PLC控制的安全性和可靠性。本文中所论述温度故障修复,成功得将此缺陷进行了修复,使得该控制器的可靠性得到了进一步的完善与加固。



【关键词】S7-400;温度显示故障;补码;类型转换

1 引言

随着计算机技术和通讯技术的飞速发展,大型火电机组辅机控制系统的自动化水平已有了飞速的发展。在目前阶段,PLC控制将是辅机控制系统的主要实现方式。德国西门子公司生产的S7-300S7-400系列PLC产品因其优越的性价比在全球PLC市场取得了巨大的份额。近年来S7-400H冗余系列不但在辅机程控项目中得到广泛应用,而且在中小型发电机组也开始代替DCS实现主控系统的控制功能,莱城电厂二期脱硫系统即是S7-400H系列在这方面应用的成功范例。美中不足的是莱城电厂二期脱硫系统自投运以来#1#2机组所有温度测点在测量零下温度时显示异常。给运行人员监控设备带来极大的不便。



2 故障时系统运行方式

莱城电厂二期脱硫硬件方面cpu采用s7-414-4H,温度测量卡件全部使用模拟输入模块SM 331 AI 8 x RTD6ES7 331-7PF01-0AB0该卡件有以下特点:14个通道组中8点输入;2)在每个通道组,测量类型可编程;3)每个通道组的分辨率均可编程15 + 符号位)4每个通道组的任意测量范围;5)可编程诊断和诊断中断;68 个通道的可编程限制值监视;7)越限时的硬件中断可编程;8)高速更新多达 4 个通道的测量值;9)周期结束时的硬件中断可编程;10)对 CPU 的电气隔离。



此卡件在系统配置方面,测量类型选择RTD-3L,测量范围选择PT100标准型,温度系数选择0.003850IPTS-68。编程模式是组织块OB33循环调用负责采样转换的FC6FC6是当时厂家自定义的FC。当被测温度低于零摄氏度时,系统监视画面显示10000摄氏度。



3 故障处理过程及原因分析

在西门子S7-400系列产品中,温度的显示过程是首先测量卡件将就地热电阻的电阻值转换为工程值以二进制代码的形式放在cpu的内存中,然后cpu通过内部的转换FC将工程值的二进制代码转换为对应的可以识别的十进制数。通过查阅西门子资料可知热电阻 Pt 100 0.003850 标准型在SM 331 AI 8 x RTD卡件的额定量程应该是-200850摄氏度。而此系统自投运以来如果温度变为负




数时,系统显示10000度。为了找出故障原因,我们首先用电阻箱对此卡件的一个通道加阻值,将在线查出的热电阻输入测点的实时工程值与输入的阻值相对应,发现卡件工作是正常的。例如当外输入温度为-10摄氏度时对应的工程值二进制代码是16#ff9c所以原因就出在热电阻信号转换的FC模块上。此模块为厂家自定义模块。其内部负责转换的代码内容如下图1所示。



输入点#AI 定义为word类型,它还使用了一个数据块DB1中的32DB1.DBD24作为数据转换中间量的临时存储。通过研究西门子内部材料发现,负数在cpu中以补码的形式存在。负数的补码等于其源码的符号位不变,数值部分的各位取反,然后整个数加1同一个数字在不同的补码表示形式里是不同的。比方说-15的补码,在82进制里头是11110001,然而在162进制补码表示的情况下,就成了1111111111110001



接下来我们分析这个FC的主要代码;AIword类型,所以其长度只有16位。为了能进行转换运算首先要将16位的#AI转换为32位,然后再转换为实型以方便运算。热电阻信号转换功能块代码中的前两句 L #AI T DB1.DBD 24#AI直接传送给了DB1.DBD24。完成了16位到32位的转换。然后通过L DB1.DBD 24DTRT DB1.DBD 24直接将DB1.DBD24作为一个长整型转换为实型。



s7-400系列cpu中,不论#AI的数据类型是INT还是WORD,在cpu都是以补码的形式存在的,所以在进行16位到32位的转换时,要进行符号扩展,int型数的16位送到Dint型低16位中,如果int型数据位正值(符号位为0Dint型变量的高16位补0,如果int型变量为负值(符号位为1,则Dint变量的高16位补1,以保持数值不改变。而此功能块中只是进行了传送,所以不管#AI是正数还是负数,cpu对高16位的处理都是补0。所以会导致当温度是负数是无法正常显示。举例说明:如果此时外部温度是零下10摄氏度,则#AI的工程值为-100-100的补码形式:因为给定数是负数,则符号位为“1”。后十五位:-100的原码1000 0000 0110 0100按位取反1111 1111 1001 1011(负11111 1111 1001 1100-1002#1111_1111_1001_1100。执行L #AI T DB1.DBD 24后实际cpu只是传送了16160DB1.DBD 242#0000_0000_0000_0000_1111_1111_1001_1100符号位已经改变,此时再执行L DB1.DBD 24DTRT DB1.DBD 24进行Dint型到real型的转换时,cpu将其作为正65436来进行处理。超出了设定量程,此FC中定义了当超出设定量程时温度显示10000。所以导致不能正常显示。



4 故障的处理方法

为了使零下的温度能正常显示,就要对这个FC进行改动。要解决的首要问题是数据类型的转换 WORD型只有16位没有直接转换成32位的指令。原FC就是因为通过DB块直接把16位的WORD型转换成32位的DINT型才使系统出现问题。所以我们要另辟蹊径,对于一个模拟量的输入点IW或者PIW,我们可以将其声明为INT型,它们虽然类型不同,但其本质是一样的,其内部都


本文来源:https://www.dywdw.cn/14d3a2c51ae8b8f67c1cfad6195f312b3169ebd2.html

相关推荐
推荐阅读