APP下载

基于LabWindows/CVI的轴承试验机数据采集系统

2019-07-23王虎强李旭明吴强张振潮朱博文

轴承 2019年5期
关键词:试验机字节上位

王虎强,李旭明,吴强,张振潮,朱博文

(1.洛阳轴承研究所有限公司,河南 洛阳 471039;2.洛阳铁路信息工程学校,河南 洛阳 471900)

随着现代工业的不断进步,轴承的类型大幅增加,主机厂家对轴承在不同工况下的性能要求也在提高,因此,轴承试验的重要性越来越得到重视。

轴承试验机中数据采集软件的性能差异直接影响测试数据的准确性。现代数据测试技术大多通过在前端数据传感器与计算机之间增加接口电路实现,数据采样频率及精度由两者共同决定。现有的轴承试验机数据采集系统较多采用以下2种方式进行数据通信:1)上位机与伺服控制系统串口通信,受传输距离限制,不便于系统的远程控制与拓展;2)通过控制系统厂家自带的标准接口程序,但需要授权的软件与硬件设备,费用较高。

针对上述问题,采用以下设计方案改进轴承试验机的数据采集系统:上位机基于LabWindows/CVI开发数据采集系统,对试验数据进行采集、存储及分析;下位机采用S7-200 PLC 控制驱动系统并记录轴承位置,同时读取伺服驱动器数据并进行存储;上位机与下位机之间通过网口进行通信,通信基于TCP/IP协议,采用LIBNODAVE开源驱动库,无需在工控机部署任何第三方软件,仅需要一根网线即可通信,开发、维护难度较低,且在通信速率与可扩展性等方面有较大提升。

1 LabWindows/CVI概述

LabWindows/CVI 是以ANSIC为核心的开发平台[1],其将前端仪器硬件的数据采集处理和测量控制与功能强大、兼容性好的C语言高效结合在一起,可提供强大的函数库功能,兼容的开发环境,直观的函数面板,为原有了解C语言的开发设计人员提供了一个很好的开发环境[2]。

在LabWindows/CVI开发环境中,可以通过已有的库函数实现软件的开发编辑、链接、编译。在设计测试软件时,可调用外部已编译好的动态链接库(DLL)、驱动程序、静态库等。因此,尝试通过LabWindows/CVI平台开发数据采集和仪器控制的应用程序,充分利用其提供的函数库完成数据的采集、分析和显示。

2 数据采集系统总体架构

轴承试验机数据采集系统的拓扑结构设计如图1所示。

图1 数据采集系统拓扑结构图Fig.1 Topology diagram of data acquisition system

下位机系统采用的伺服电动机自带速度反馈,可通过PLC实现调速和速度监控,保证长时间的运转和控制精度,并可同时实现电动机电流的实时监测,当被试轴承摩擦力矩出现异常波动,会引起电流的变化,设备自动进行报警或停止运行。

电气部分主要包括驱动控制系统、摩擦力矩测量系统、振动测量系统和温度测量系统。驱动控制系统由交流伺服电动机及其驱动器组成,实现被测轴承的驱动及其他控制功能。摩擦力矩、振动、温度测量系统由相应的传感器、变送器及A/D转换电路组成,实现试验机的实时数据采集功能。温度、振动与扭矩等物理信号由PLC数据采集模块实现采集,通过A/D转换为PLC可读的数字量并存储到指定的存储地址。PLC控制器通过读取指定存储位置的数据,对伺服驱动器进行调节控制。

上位机系统的数据读取与写入基于TCP/IP协议与PLC进行通信,直接调用相关的接口函数读取或写入指定存储模块的数据,即完成系统的数据采集与控制。

3 LabWindows/CVI与PLC间的通信

西门子生产的S7系列PLC具有体积小、速度快、标准化等优点,但与上位机的通信相对较弱[3-5]。常见的西门子上位机形式有:西门子 HMI、西门子 PRODAVE、第三方组态软件和OPC Server;通信接口形式为 MPI,PROFIBUS 或工业以太网[6-7]。这些数据通信结构方式都需要特定授权的软件和硬件设备,整体成本较高。LIBNODAVE具有比PRODAVE 更强大的接口程序, 其具有的接口函数、支持的硬件以及连接方式都比 PRODAVE 多,且其具有免费、配置简单等优点。

3.1 LIBNODAVE库函数导入

试验机监控系统中需导入libnodave.lib,libnodave.lib及nodavesimple.h文件,并在程序主文件中定义增加define BCCWIN 语句。nodavesimple.h文件为库函数头文件,主要包含所定义的通信接口函数等。

3.2 常量定义

1)char ip[200]=″10.0.0.24″;

定义PLC地址。

2)_daveOSserialType fds;

定义结构体。

3)daveInterface * di;

定义结构体指针。

4)daveConnection * dc.

定义结构体指针。

3.3 库函数连接PLC控制器

1)fds.rfd= openSocket( 102,ip);

fds.wfd=fds.rfd;

打开指定IP地址的PLC控制器通信接口,并将返回的句柄存储到结构体_daveOSserialType 的变量中。

2)di=daveNewInterface(fds,″IF1″,0,122,2);

将结构体指针传递给新生成的结构体,PLC的硬件连接信息可通过daveNewConnection 传递,实现功能函数调用的不相关性。

3)res=daveInitAdapter(di);

对设备适配器进行初始化。

4)dc=daveNewConnection(di,2,0,1);

res=daveConnectPLC(dc);

与PLC进行连接。

3.4 释放PLC控制器连接

在程序调用结束后,需要将PLC控制器释放,防止程序重新启动后出现错误。

1)res=daveDisConnectPLC(dc);

关闭PLC控制器连接。

2)res=daveDisconnectAdapter(di);

关闭PLC设备适配器。

3)res=closeSocket(ph);

关闭对应的设备通信端口。

3.5 PLC设备数据写入与读取

3.5.1 数据写入

1)daveWriteBytes(daveConnection * dc,int area, int DB, int start, int len, void * buffer);

该命令用于数据写入,表示向PLC中写入len字节;Area表示数据是否要写入FLAG,DATA BLOCKS,INPUTS或OUTPUTS等;DB表示所使用数据块的位置;start为确定第1个字节; buffer是指向要写入数据的缓冲区。当Area为其他区域类型时设置为0,在S7-200 SMART中会将整个V区默认为数据块DB1。

2)daveWriteManyBytes(daveConnection * dc,int area, int DB, int start, int len, void * buffer);

对于要写入多个连续性的数据,可以调用该函数进行一次性处理。

3)daveWriteBits(daveConnection * dc,int area, int DB, int start, int len, void * buffer);

与daveWriteBytes函数功能类似,表示要向PLC写入一位的数据。

3.5.2 数据读取

1)daveReadBytes(daveConnection * dc, int area, int DB, int start, int len, void * buffer);

该命令用于数据读取,表示从PLC中读取 len字节;Area表示数据是否来自FLAG,DATA BLOCKS,INPUTS或OUTPUTS等;DB表示要使用的数据块位置,其他区域类型设置为0;start表示要读取第1个字节位置;缓冲区buffer指向调用程序提供的内存块指针,如果指针不为空,结果数据将被复制到其中。

2)daveReadManyBytes(daveConnection * dc, int area, int DBnum, int start, int len, void * buffer);

从PLC读取len字节。start确定第1个字节。与daveReadBytes()不同的是,这个函数可以读取对于单个事务来说太长的块。要实现这一点,需要将数据与多个后续的对CPU的读请求一起获取。

3)daveReadBits(daveConnection * dc, int area, int DB, int start, int len, void * buffer);

从PLC中读取一位的数据。

4 数据存储

数据库用于存储采集软件所采集的试验数据,以便用于后期的设计分析。利用结构化查询语言(Structured Query Language,SQL)是关系型数据库管理系统的标准语言,可实现对数据库的各种交互式操作,如对数据的查询、导入、删除等。在本项目中,采用的MariaDB数据库管理系统是MySQL的一个分支,基于LabWindows的版权限制,数据库操作采用MariaDB原有的数据库接口函数。

4.1 常量声明

1)MYSQL conn;

定义数据库连接。

2)MYSQL_RES *res;

定义数据结果集结构体指针。

3)MYSQL_ROW row;

定义用于存储数据行信息的结构体常量。

4.2 数据库连接与释放

1)mysql_library_init(0, NULL, NULL);

初始化MYSQL数据库。

2)mysql_init(&conn);

初始化连接句柄。

3)mysql_real_connect(&conn, ″127.0.0.1″, ″root″, ″123456″, ″data″, 0, NULL, 0);

连接MYSQL数据库服务器。

4)mysql_close(&conn);

关闭MYSQL服务器的连接。

5)mysql_library_end();

终止使用MYSQL库。

4.3 数据库数据的写入与读取

1)mysql_real_query(&conn,sql,strlen(sql));

执行查询或者写入语句。

2) mysql_store_result(&conn);

获得整个查询语句的查询结果。

3)mysql_num_rows(res);

获取查询结果条数。

4)mysql_num_fields(res);

获取查询结果行数。

5) mysql_fetch_row(res);

获取查询结果每一行的具体数据。

5 系统运行情况

安装有基于LabWindows/CVI开发平台所设计数据采集系统的某型试验机已进行了7 000 h的轴承寿命试验,模拟了轴承工况,考核了轴承在寿命期内的振动、摩擦力矩和温升指标,并且一台试验机可以精确试验和检测多套轴承,操作简单。轴承试验过程中,试验数据、报警信息、试验状态等数据及时准确的上传到数据服务器中。数据采集系统上位机控制界面如图2所示,轴承运行状态的相关数据如图3所示。在轴承试验过程中,该系统可实时的将轴承的试验状态、报警信息、试验机运行状态等数据准确的采集到数据服务器中。查询客户端可调用数据服务器接口程序,通过局域网或互联网实时查看相关数据。

图2 上位机的软件界面Fig.2 Software interface of host computer

图3 轴承运行数据截图Fig.3 Screenshot of bearing operation data

猜你喜欢

试验机字节上位
No.8 字节跳动将推出独立出口电商APP
高速铁路轴箱轴承寿命试验机的研究
铁路轴承试验机
接触疲劳试验机伺服电动缸加载系统设计
No.10 “字节跳动手机”要来了?
特斯拉 风云之老阿姨上位
简谈MC7字节码
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
以新思路促推现代农业上位