资源描述
基于PC的测控系统综合设计说明书
题 目:基于研华1710数据采集卡的温度测量系统设计
专 业: 测控技术与仪器
班 级: 10测控1班
学 号: 1010131103
姓 名: 张春峰
指导教师: 何涛、吴庆华
目录
1.设计背景和意义.....................................................................................1
2.温度采集系统原理.................................................................................1
3.硬件系统设计.........................................................................................1
3.1温度传感器......................................................................................1
3.2温度变送器......................................................................................3
3.3数据采集卡......................................................................................4
3.4温度标定..........................................................................................6
4. 软件系统设计.........................................................................................6
4.1关键代码分析..................................................................................6
4.2程序流程图.....................................................................................10
5.设计结果...............................................................................................11
5.1系统相片....................................................................................11
5.2人机界面屏幕拷贝....................................................................11
5.3采集结果屏幕拷贝....................................................................12
6. 设计体会...............................................................................................13附:主要参考资料
1.设计背景和意义
温度是日常生活中一种常见的测量数值,人们的生产与日常生活的温度有着很密切的联系,在工业生产时序中离不开温度的测量,在农业生产过程中也需要时时刻刻关注温度的变化,所以温度检测的重要性不容忽视。
近些年来,伴随着信息技术的不断提高,采用计算机测量控制系统在很多场合得到了深入且长远的应用。在计算机检测系统中温度是测量过程中的一个必测的物理量,较为突出的事对于粮库的检测、日常写字楼、无人职守的基站等地点,温度的控制盒测量尤为关键。本文提出的温度检测系统技术是利用温度传感器和危机实现数据采集、数据传输和数据分析处理的新技术。检测到的数据可被显示为图表或数字,可以更加直观准确的反映温度的情况,具有较高的理论和实用价值。
2.温度检测系统方案设计
基于PC机的温度检测系统实用数据采集卡改造传统的测温仪,使其具有更强大的功能系统框架如图所示,仪器系统通过前段感温装置的传感元件,将被测对象的温度转换为电压或电流等模拟信号,经信号调理电路进行功率放大滤波等处理后,变换为可被数据卡采集的标准电压信号由接线端子通过电缆线传入数据采集卡。在数据采集卡被将模拟信号转换为数字信号,并在数据采集指令下将其送入计算机总线,在PC机内利用已经安装的程序软件对采集的数据进行各种所需的处理。其系统框图如图1:
计算机系统
数据采集卡
接线端子板
温度变送器
温度传感器
被测物
图1
LED灯
3.硬件系统设计
3.1 温度传感器 PT100
①传感器原理:PT100是铂热电阻,它的阻值跟温度的变化成正比。PT100的阻值与温度变化关系为:当PT100温度为0℃时,它的阻值为100欧姆,在100℃时它的阻值约为138.5欧姆。它的工业原理:当PT100在0摄氏度的时候他的阻值为100欧姆,它的阻值会随着温度上升而成匀速增长的。
PT100温度传感器是一种用白金做成的电阻式温度检测器,属于正电阻系数,其电阻和温度变化的关系如下:
R=R0(1+αT)
α=0.00392 R0为100Ω(在零度的电阻值)
T为摄氏度
V0=2.55mA*100(1+0.00392)=0.225+T/1000.
PT100铂电阻温度传感器有三条引线,可用A,B,C(红黑白)来代表。
三根线之间有以下规律:
A与B或C之间的阻值常温下在110欧姆左右,B与C之间为0欧姆。B与C在内部是直通的,原则上B与C没什么区别,
仪表上接传感器的固定端子有三个:A线接在仪表传感器的一个固定的端子,BC接在另外两个。BC的位置是可以互换的,但都要接。三个导线的长度,规格必须相同。
②传感器技术指标
我们选择的是STT-C系列铂电阻温度传感器,STT-C系列温度传感器的测温探头部分由标准连接件,螺纹过程连接和测温保护管三部分构成。采用标准连接件可以很方便将信号线与传感器连接与拆卸,产品非常适合为便携仪器仪表配套,方便现场维护与安装。
STT-C A B C D M E P T S
C 连接器类别
1=C1 圆形连接器
2=C2 矩形连接器
A 传感器类型,双支加D
1=Pt100 5=Pt500 10=Pt1000
B 直径D (mm)
2=2.0 3=3.0 4=4.0 5=5.0
6=6.0 8=8.0 指定
C 插入深度EL(mm)
30=30 40=40 50=50
100=100 200=200 指定
D 不锈钢保护管材质
1=sus321 4=sus304 6=sus316 指定
M 螺纹规格M(详见附录二)
图2
5=M5X0.8 8=M8X1.25 10=M10X1.5 12=M12X1.5
16=M16X1.5 指定
E 引线结构
线制
2=两线
3=三线
4=四线
P 精度
A=A级 B=B级 1/3B=1/3B级
T 温度范围 (℃)
1=-200~100 2=-50~100 3=-50~200 4=-50~250 指定
S 特殊要求
0=无 2=可弯曲铠装结构 3=特氟龙涂层防腐 4=特氟龙包覆防腐 指定
图3
3.2温度变送器
①温度变送器的工作原理:
是采用热电偶、热电阻作为测温元件,从测温元件输出信号送到变送器,经过稳压滤波、运算放大、非线性校正、和恒流及反向保护等电路处理以后,转换成与温度成线性关系的电流或电压信号输出。
②技术参数:
我们选用的事智能隔离变送器STWB系列,它以单片机为核心,配合传感器信号调理和高精度数据转换等低功耗设计,采用先进的隔离解决方案,实现智能化变送功能:输入信号和量程自由选择,非线性校正,测量自校准,数字滤波, 零点迁移,量纲转换,RS485 通讯等。
特性:
——隔离工作方式,输入、输出、电源三方完全隔离
——采用智能化设计,具有环境温度自动补偿、零点自动校准,线性化处理,
数字滤波,量纲转换,模拟变送输出及 RS485 通讯等功能
——可与多种工业热电偶,热电阻,变阻器等直接配用
——电压,电流输入量程可选
——高精度 16 位 A/D 转换器
——输出最大电流限制,电源反接保护功能
——35mm 标准导轨安装
——可通过编程器或计算机 232 通讯口进行功能设置
输入:
热电偶:E,J,K,S,T,B,N(均含冷端补偿功能)
热电阻:PT1000,PT100,Cu100,Cu50,BA1,BA2,G53 等
图4
电压量程:±100mV,0~1V,0~5V,1~5V,0~10V
电流量程:0~10mA,4~20mA
输出:
电流输出:0~10mA,0~20mA,4~20mA,负载能力为 450Ω
电压输出:0~5V,0~10V,负载能力≥100kΩ
通 讯:通讯地址 0~99 可设定 ,通讯速率 4800,9600,19200 可选
技术指标:
工作电源: 24VDC±10% 纹 波: 0.02%FS
功 率: <2W 隔离电压: 1000VDC 或交流峰值
误 差: 0.1% 0.2% 0.5%FS 质 量: 130 克
工作温度: 0~50℃ 湿 度: ≤90%RH
选型代码:STWB-I X R F S P S
I 智能隔离型 X 输入信号 见表1 R 量程 见表2 F 输出1 见表3 S 输出2 见表3
P 精度:5=0.5% 2=0.2% 1=0.1% S 特殊要求 :0=无 9=12V 指定
图5
3.3数据采集卡
数据采集(DAQ),是指从传感器和其它待测设备等模拟和数字被测单元中自动采非电量或者电量信号,送到上位机中进行分析,处理。数据采集系统是结合基于计算机或者其他专用测试平台的测量软硬件产品来实现灵活的、用户自定义的测量系统。 数据采集卡,即实现数据采集(DAQ)功能的计算机扩展卡,可以通过USB、PXI、PCI、PCI Express、火线(1394)、PCMCIA、ISA、Compact Flash、485、232、以太网、各种无线网络等总线接入个人计算机。
我们此次设计用的研华1710数据采集卡。如图6,连接方式如图7.
PCI-1710/1710HG 是一款 PCI 总线的多功能数据采集卡。其先进的电路设
计使得它具有更高的质量和更多的功能。这其中包含五种最常用的测量和控制功
能:12 位 A/D 转换、D/A 转换、数字量输入、数字量输出及计数器/定时器功能。
图7
图6
电缆采用PCL-10168型,是两端针型接口的68芯SCSI-II电缆,用于连接板卡与ADAM-3968接线端子板。如图8
接线端子板采用ADAM-3968型,是DIN导轨安装的68芯SCSI-II接线端子板,用于各种输入输出信号线的连接。如图9
图9
图8
图10
接线端子板管脚图(如图11)
图11
3.4温度检测系统的标定
①标定时电压与温度的对应值(如表4):
电压(V)
2.05
5.35
温度(℃)
0
表4
100
②根据图表数据拟合的线性关系:y=30.303x-62.121(见图12)
图12
4.软件设计
4.1关键代码
DEVFEATURES m_DevFeatures; // structure for device features //初始化,各变量的定义
PT_AIConfig m_ptAIConfig; // structure for AIConfig table
PT_AIVoltageIn m_ptAIVoltageIn; // structure for AIVoltageIn table
PT_DeviceGetFeatures m_ptDevFeatures;
float m_high;
float m_low;
float m_k;
float m_b;
m_usDevice=0; //赋初值
m_usSubDevice=0; // Device index
m_usChannel=0; // input channel
m_usGain=0; // gain index
m_sNumOfDevices=0;
m_sNumOfSubdevices=0; // number of installed devices
m_usScanTime=1000; // scan time
m_dwStartTime=0; // start time
m_dwElapseTime=0; // elapse time
m_usOverrunCount=0; // overrun count
m_fVoltage=0.0f;
m_uiTimer=0;
m_high=0.0f;
m_low=0.0f;
m_k=0.0f;
m_b=0.0f;
// ------------------------------------------------------------
// Initialize Input Range List Combobox, it needs to get device features for gain list 关于数据采集与通道建立
// ------------------------------------------------------------
// first : Open Device
if (m_sNumOfSubdevices == 0)
{
m_ErrCode = DRV_DeviceOpen(m_DeviceList[m_usDevice].dwDeviceNum, //根据设备句柄打开设备,建立连接
(LONG far *)&m_lDriverHandle);
}
else
{
m_ErrCode = DRV_DeviceOpen(
m_SubDeviceList[m_usSubDevice].dwDeviceNum,
(LONG far *)&m_lDriverHandle);
}
if (m_ErrCode != SUCCESS)
{
strcpy(m_szErrMsg,"Device open error !"); //通道连接不成功,显示Device open error !
// MessageBox((LPCSTR)m_szErrMsg,"Driver Message",MB_OK);
}
// second: get device features
m_ptDevFeatures.buffer = (LPDEVFEATURES)&m_DevFeatures;
m_ptDevFeatures.size = sizeof(DEVFEATURES);
if ((m_ErrCode = DRV_DeviceGetFeatures(m_lDriverHandle,
(LPT_DeviceGetFeatures)&m_ptDevFeatures)) != SUCCESS)
{
DRV_GetErrorMessage(m_ErrCode,(LPSTR)m_szErrMsg);
MessageBox((LPCSTR)m_szErrMsg,"Driver Message",MB_OK);
DRV_DeviceClose((LONG far *)&m_lDriverHandle);
}
// third: initialize Input Range List Combobox with device features
if (m_DevFeatures.usNumGain != 0)
{
pComboBox=(CComboBox*)this->GetDlgItem(IDC_INPRANGE);
pComboBox->EnableWindow(TRUE);
pComboBox->ResetContent();
for (i = 0; i < (int)m_DevFeatures.usNumGain; i ++)
pComboBox->AddString((LPSTR)m_DevFeatures.glGainList[i].szGainStr);
pComboBox->SetCurSel(0);
}
else
{
pComboBox=(CComboBox*)this->GetDlgItem(IDC_INPRANGE);
pComboBox->EnableWindow(FALSE);
pComboBox->ResetContent();
}
// fourth: close device
DRV_DeviceClose((LONG far *)&m_lDriverHandle);
}
void CChildView::OnSetting()
{
// TODO: Add your command handler code here
CSettingDlg* pDlg=new CSettingDlg(this); //定义Setting对话框的类名
if(pDlg->DoModal() == IDOK)
{
memcpy(&m_DeviceList,&pDlg->m_DeviceList,sizeof(m_DeviceList)) ;
memcpy(&m_SubDeviceList,&pDlg->m_SubDeviceList,sizeof(m_SubDeviceList)) ;
m_usDevice=pDlg->m_usDevice ;
m_usSubDevice=pDlg->m_usSubDevice ; // Device index
m_usChannel=pDlg->m_usChannel ; // input channel
m_usGain=pDlg->m_usGain ; // gain index
m_sNumOfDevices=pDlg->m_sNumOfDevices ;
m_sNumOfSubdevices=pDlg->m_sNumOfSubdevices ; // number of installed devices
m_high = pDlg->m_high; //数据交换
m_low = pDlg->m_low;
m_k = pDlg->m_k;
m_b = pDlg->m_b;
}
delete pDlg;
}
void CSettingDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX); //将对话框中控件ID号与程序变量关联起来
//{{AFX_DATA_MAP(CSettingDlg)
DDX_Text(pDX, IDC_ECHANNEL, m_usChannel);
DDV_MinMaxInt(pDX, m_usChannel, 0, 100);
DDX_Text(pDX, IDC_K, m_k);
DDX_Text(pDX, IDC_B, m_b);
DDX_Text(pDX, IDC_High, m_high);
DDX_Text(pDX, IDC_Low, m_low);
//}}AFX_DATA_MAP
}
void CChildView::OnPaint()
{
RECT rect;
float temperature = m_k * m_fVoltage + m_b;
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
if(m_bRun)
{
GetClientRect(&rect);
PT_DioWriteBit m_ptDioWriteBit;
m_ptDioWriteBit.port = 0; //指定输出通道为通道0
m_ptDioWriteBit.bit = 0; //指定输出位为第0位
if (m_bTimerOverrun == FALSE)
{
sprintf(m_szBuffer, "data = %10.6f \ntemperature is %10.6f", m_fVoltage, temperature);//正常状态下输出
}
else
sprintf(m_szBuffer, "Timer Overrun! data = %10.6f", m_fVoltage);
dc.DrawText(m_szBuffer, &rect, DT_CENTER); //输出格式定义,文本水平居中
if((temperature > m_high) || (temperature < m_low)) //报警条件,温度高于上限或低于下限
{
unsigned long oldColor = dc.SetTextColor(RGB(255, 0, 0)); //报警,更改画笔颜色,全红
dc.DrawText(m_szBuffer, &rect, DT_CENTER);
m_ptDioWriteBit.state = 1; //报警时端口输出高电平,将灯点亮
dc.SetTextColor(oldColor); //恢复上一步状态,为下次判断和报警做准备
DRV_DioWriteBit(m_lDriverHandle,(LPT_DioWriteBit)&m_ptDioWriteBit); //按指定通道号和位号输出指定状态,按初始化值为在通道0的第0位输出高电平
}
else //未超限
{
m_ptDioWriteBit.state = 0; //端口输出低电平,灯灭
DRV_DioWriteBit(m_lDriverHandle,(LPT_DioWriteBit)&m_ptDioWriteBit);
}
}
定义通道,菜单栏各项ID,并与变量一一对应
4.2程序流程图(如图13)
开始
N
Y
N
Y
通道不正常:Device open error !
是否确定开始运行系统,m_bRun=1?
参数保存,按照所选择的扫描时间,触发方式进行数据采集
数据交换
弹出对话框,进行参数设置,输入完毕是否点OK
扫描Setting,Scan各变量值是否有变化
显示采集电压,并根据设置k和b计算出温度值
N
温度是否超出设定范围?
m_lDriverHandle——设备句柄,代表数据采集卡在计算机中分配到的地址
m_bRun——布尔量,对应菜单栏中启动选项
m_usChannel——对应数据采集卡的输入通道,设为0
m_usScanTime——对应菜单栏中设置的扫描时间,初始化为1000
PT_AIVoltageIn——结构体数据类型,包含输入电压的通道号、输入值、内触发方式
PT_DioWriteBit——结构体数据类型,包含输出数据的通道号,位号,输出状态
CSettingDlg——类数据,包含菜单栏中Setting对话框的全部内容
CScanDlg——类数据,与CSettingDlg类似,包含菜单菜单栏中Scan对话框全部内容
m_fVoltage——对应数据采集卡所采集到的电压值,是PT_AIVoltageIn的一个成员
m_high——浮点数据类型,对应Setting中设置的温度上限,初始化为0
m_low——浮点数据类型,对应Setting中设置的温度下限,初始化为0
m_k——浮点数据类型,对应Setting中标定的电压/温度曲线的斜率,初始化为0
m_b——浮点数据类型,对应Setting中电压/温度曲线的截距,初始化为0
图13
结束
Y
报警完毕,恢复上一步状态
报警:改变显示字体颜色
按照设定输出通道号,位号将预定状态输出
根据设备句柄建立与设备的连接
打开通道
句柄不正确:Invalid driver handle failed!
连接是否成功
12
5.设计结果
①温度检测系统相片:如图14所示
STWB TR温度变送器
STT C1温度传感器
研华1710数据采集卡
接线端子板
计算机
图14
②人机界面如图15所示
图15
③采集结果:
A.正常工作状态:显示采集的数据,字体为黑色,LED灯不亮;如图16所示
图16
B.超限报警状态:显示采集的数据,字体为红色,LED灯亮;如图17所示
图17
6.设计体会
一个星期的课程任务很快就结束了,我收获了很多。
1. 首先学会了数据采集卡的使用方法和安装方法。这次的课程设计,部分课题的软件编程涉及到了我们刚学习的labview虚拟仪器技术,整个数据采集和处理过程全部使用图形化的编程语言来实现的,正好将理论知识与实际应用结合了起来,对我们运用专业知识解决实际问题的能力是一次很好的锻炼和提升。
2. 设计过程中,我们在用MFC编程实现系统所要求的功能方面遇到了很大阻碍。因为以前完全没有接触过,对它的编程规则,变量定义及其含义等都不熟悉,起初我们都不知道该如何着手。但是通过不断地摸索、自主学习和求教老师,我们最终一步一步完成了设计要求的数据采集、超限报警、温度标定等一系列功能。所以我觉得面对陌生的事物时,敢于尝试并保持虚心求教、不断追问的态度很重要,这有助于我们更快更准确发现问题、解决问题。
3.这次任务的分配是以小组为单位来进行的。在与其他同学的互相交流共同完成任务的过程中,我感受到了团队协作,分工配合的重要性;同时也学习到了他们身上的优秀品质和认真负责的态度,让我受益匪浅。
附:主要参考资料
1.研华1710DAQ卡使用说明书
2.STT-C系列温度传感器技术参数说明;
3.STWB系列温度变送器技术参数说明;
4. VC++程序设计指南;
展开阅读全文