技术中心|乔科化学
您好!欢迎阁下光临乔科化学!帮助中心 |网站导航 | 新浪微博

首页>技术中心>技术资讯>VC++6・0在液压缸泄漏量检测数据处理中的应用

VC++6・0在液压缸泄漏量检测数据处理中的应用

发布时间:2017-09-01

引言

液压缸是将液压能转换为机械能的转换装置,在液压设备中占用重要的地位。在实际工程中,液压缸一般比较大,拆装都不方便,发生泄漏故障时难已被察觉,因此成为设备故障诊断中的难点。液压缸产生故障的主要原因是泄漏,同时它又是影响安全、污染环境的重要因素,所以应引起足够的重视。液压缸泄漏分为内泄和外泄,外泄可在外部直接观察到;而内泄漏不能直接观察到,是液压缸泄漏的主要原因。国内检测泄漏量通常采用的方法有:流量计法,保压法,水下收集气泡法,涂肥皂水法等。这些方法操作繁琐、准确性差、难以满足实际生产的需要。

根据流体力学原理,如能在密闭容腔内检测到一定时间内压力的变化量,便可求出泄漏量。

压力变化值与泄漏量之间的关系为:

其中:Δp为压力变化值, E0为介质的体积弹性模数(N/m2)。

由此可见,泄漏量与压差成正比例关系。

本文是以某钢厂轧机机架液压缸的泄漏量检测为设计对象的。

1系统设计

本系统采用下位机(液压缸泄漏检测仪)向上位机(PC)传送检测数据,由上位机进行数据处理、显示的方案(见图1)。下位机是针对现场测试而设计的专用检测工具,主要检测液压缸内泄漏。在保证其它管路无泄漏情况下,在液压缸进油口通入压力油,再将活塞停在某一处,然后检测进油腔内的压力变化情况。它可同时检测两路压力信号,以每秒记录一组数据的方式,按照所设置的记录时间,记录工作过程中的压力值。数据存放时每一个有效数据由2个字节表示。检测记录的传输是单方向的。

2接口设计

(1) RS-232C简介

串行口是计算机的一个标准接口,特点是它的数据和控制信息是一位接一位串行的传送下去。虽然速度会慢一些,但传送距离较并行口更长,因此适合于长距离通信。RS-232C是目前已在微机通信接口中广泛采用的一种串行通信接口标准,是美国EIS (电子工业联合会)与BELL公司一起开发并于1969年公布的通信协议。它适合于数据传输速率在0~20000bit/s范围内的通信。RS-232C的连接距离可达15~30m。

(2)通信协议

为使上位机与下位机能正常通信,上下位机制定了共同遵守的通信协议。这包括对数据格式,同步方式,传送速度,传送步骤,检错方式等问题的统一规定。由于异步传输方式比较简单,双方时钟可以有一定误差,因此采用起止式异步传输协议,规定如下:波特率9600,无奇偶校验位, 8位数据位, 1位停止位,采用二进制方式;校验方式采用求和校验码,即通信双方在通信过程中均计算传输数据之和,传输完成后由上位机比较双方计算结果是否相等,若相等则说明传输正确,下位机可继续传;否则传输有误,上位机提示下位机重新传送。

(3)通信设置

传输介质采用二芯屏蔽电缆,接口用DB-9连接器,采用最简单的“3根线”-接收线RxD (引脚2),发送线TxD (引脚3),信号地线SG (引脚5)连接方式见图2。

3端口编程

在Windows中实现串口通信通常采用以下3种方法。

(1) Win32 API函数。此方法应用起来比较复杂,专业化程度高。

(2)直接嵌入汇编法。此方法利用C/C++汇编嵌入功能,直接对串行口进行操作。但不能在Win-dows NT操作系统下使用。

(3)使用现有的ActiveX控件实现。VC++6・0提供的MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。此控件在使用时非常方便,程序员不必了解较为复杂的API函数。它提供了两种处理通信问题的方法:一是事件驱动方法,一是查询法。

①事件驱动方法:每当有新的字符到达,或端口状态改变或发生错误时, MSComm控件触发On-Comm事件,从而获取并处理这些通信事件。这种方法的好处是程序相应及时,可靠性高。

②查询法:实质上也属于事件驱动方法。在程序的每个关键功能之后,通过检查CommEvent属性值来查询事件和错误,只要CommEvent属性值发生变化,就表明一个通信事件或一个错误发生。这种方法适合于较小的应用程序。

MSComm控件具有丰富的与串口通信密切相关的属性及事件,提供了一系列标准通信命令的接口,可用于创建全双工、事件驱动、高效实用的通信程序。MSComm控件提供了27个关于通信控制方面的属性和5个标准属性。下面介绍MSComm控件的几个常用属性。

(1)初始化并打开串口

下面利用OnInitialUpdate ()函数来说明。

void CTerminalView:: OnInitialUpdate ()

{…

CMSComm m_Com;

m_Com. SetCommPort (1); //选择COM1

m_Com. SetInBufferSize (1024); //设置输入缓冲区的大小, Bytes

m_Com. SetOutBufferSize (100); //设置输出缓冲区的大小, Bytes

if (! m_Com. GetPortOpen ()) //打开串口

m_Com. SetPortOpen (TRUE);

m_Com. SetInputMode (1); //设置输入方式为二进制方式

m_Com. SetSettings (”9600, n, 8, 1”); //设置波特率等参数

m_Com. SetRThreshold (1); //为1表示有一个字符引发一个事件

m_Com. SetInputLen (1); //每次取一个字符

}

(2)串口读写

完成读写的函数很简单,分别为GetInput ()和SetOutPut ()。两个函数的原型是: VARIANT Get-Input (),及void SetOutput (const VARIANT& new-Value)。因为串口读写比较简单,只要注意数据类型为VARIANT即可,故在此不做过多介绍。

(3)关闭串口

使用完MSComm通信对象后,需要将端口关闭。当然如果窗体注销时, MSComm控件注销同样可以完成这一功能。用下面的语句可以完成这一功能。

m_Com・SetPorOpen (false);

如果要了解所有通信事件和通信错误的列表,请参阅CommEvent属性。

4数据处理

数据处理也就是将接收到的数据存入磁盘文件中。此系统利用CFile类实现文件读写。下面以将数据存入文件为例说明。

void CTerminalView:: copedata () //存储接收到的数据

{……

m_filename =”e: \ \ new\ \ file1. txt”;

charbuf [6]; CFile file; //创建可读可写文件

file. Open ( (LPCTSTR) m_filename, CFile::modeCreate|CFile:: modeReadWrite);

for (m_length1=1; m_length1<= (2*m_dtl);m_length1++)

{de = sdata. GetAt (len); gao = sdata.GetAt (len1);

data= (gao<<8) +de; //将数据低位和高位合并存在data中

_itoa ( data, buf, 10 ); //将整形转换成字符型

ms=buf; ms+=”\ r\ n”;

file. WriteString (ms); len+=2; len1+=2; //存储到e盘new文件夹中

}

file. Close ();………

}

5结束语

本文对在Windows下在VC++6・0程序中使用MSComm通信控件编程做了较为详细的介绍,说明MSComm控件具有强大功能和很大的灵活性和易用性。在此基础上设计的检测液压缸泄漏量软件,具有操作简单,人机对话方便的特点,可以很方便的移植到其它的机电控制系统中,成本低,使用范围广,而且为液压缸定期维护、检修提供了重要的参考依据。

摘自:中国计量测控网



本文由乔科化学&云试剂商城整理编辑,如有侵权请联系删除

 
联盟委员交流群
156018797
统一服务热线
400-6226-992
全国化工行业净网倡议书