发布于 2010-04-05 11:58:17
2楼
题目:用PT100电阻温度传感器测量温度并监视温度
***概述***
本例讨论如下内容:用模拟量扩展模块EM235测量温度和监视指定温限,在该模拟量模块的一个输入通道上连接PT100温度传感器。
为了把PT100的温度变化的电阻转换成电压,模拟量输出作为恒电流源而使用,即输出12.5mA恒电流供给PT100传感器。在这个电路中,产生了5mV/C(摄氏度) 的线性输入电压。
EM235把这个电压转换成数字量,程序周期地读这些数字量,并将所读的这些数,利用下面的公式计算出温度C
T[C]=(温度数字量-0C偏置量)/1C数字量
温度数字量=存储在AIWx(x=0,2,4)中的值。
0C偏置量=在0C测量出的数字量,该值为4000
1C数字量=温度每升高1C的数字量,本例中为16
程序计算出带一位十进制小数点的温度值,并把该值写入信息1所属的变量单元中,信息1为"Temperature=***.xC"再用TD200显示这些信息。在程序的初始化阶段中,用户可以输入高限和低限温度。如果测量温度超出所选范围,那么TD200温度监视器的第二行显示警告信息.若测量温度超过高限,那么TD200的第二行显示信息2,即"Temperature>***.xC";如果测量温度低于温度低限,那么TD200的第二行显示信息3,即"Temperature<***.xC"
硬件描述温度传感器:PT100是铂电阻温度传感器,它适用于测量-60C到+400C之间的温度。
计算PT100所需电流
PT100在0C时电阻为100欧姆,随着温度的变化电组成线性变化,大约是每摄氏度0.4欧姆为了产生5mV/C的电压系数,需要提供12.5mA电流。由于模拟量输出精度为10微安/数,为了得到12.5mA输出电流所需的输出数必须为1250。因为AQW数据字向右移4位,因此输出数必须乘以16。这样,为了初始化模拟量输出Io位12.5mA电流,在AQW0中必须设置20000输出数。
等式为:(32000/20mA*12.5mA=20000)
LD First_Scan_On:SM0.1 // 首次扫描周期 SM0.1=1
MOVD +0, VD196 // 清除 VW196 和 VW198.
MOVW +16, VW250 // 再VW250中装入1C数字量=16
MOVW +4000, VW252 // 0C偏置量=4000.
MOVW +300, VW260 // 温度高限为30C
MOVW +200, VW262 // 温度低限为20?C.
MOVW +20000, AQW0 // Io输出数=20000
LD Always_On:SM0.0 // SM0.0总为1
MOVW AIW4, VW200 // 把测量温度数字量装入VW200
-I VW252, VW200 // 减去0C偏置量
DIV VW250, VD198 // 除以1C数字量
MUL +10, VD196 // 余数乘以10
DIV VW250, VD196 // 10*余数/16=一位小数点的数
MOVW VW198, VW160 // 保存一位小数点的数,即温度小数值*10
MOVW +0, VW198 // 删除VW198中的值
MUL +10, VD198 // 温度整数值乘以10
+I VW160, VW200 // 温度整数值*10+温度小数值*10
MOVW VW200, VW116 // 传送结果到VW116以供显示
S V12.7, 1 // 显示信息1的使能位V10.7=1
LDW>= VW200, VW260 // 如果温度超过高限
= V12.6 // 则显示信息2的使能位V10.6=1
R Q0.0, 1 // 停炉
MOVW VW260, VW136 // VW136里的高限供信息2显示
LDW<= VW200, VW262 // 如果温度低于低限
= V12.5 // 则显示信息3的使能位V10.5=1
S Q0.0, 1 // 开炉,即输出端Q0.0=1
MOVW VW262, VW156 // VW156里的低限共信息3显示
欢迎技术交流和探讨 邮箱:bai.guoxian@163.com