2022年电机上位机控制及界面设计 .pdf
1 电机上位机控制及界面设计吴牛俊(自动化与电气工程学院指导教师:周克宁 )摘要: 随着计算机、电子、通讯技术的飞速发展,人们对于车间现场设备的运行管理控制,可视化操作等综合水平提出了新的要求。为了满足这新的要求,本毕业设计本着“ 不在现场,远离现场” 的原则,以C 语言作为开发语言, VC 为开发环境,针对某充电机产品编写了应用程序,将充电机的现场设备界面通过串口通信技术,与上位机界面有机的结合起来,以实现计算机的远程监控功能。此外,该上位机应用软件还实现了查看充电机存储在U 盘中的运行记录文件的功能。在本毕业论文通过这个项目的开发过程,阐述了编程环境的选择,串口通讯实现远程测试的方法,通过文件操作读取U 盘数据的技巧。探讨如何在PC 平台与工控机平台间建立远程测试和历史数据读取和分析的一般方法。关键词: 人机界面;串口通信;Visual C+6.0 ;文件操作Abstract: With the development of computer, electronics, communications technology, the people are requiring that the the operation and management of the equipment control,and the Visualization operation must develop too. To meet these new requirements, the design of the graduates base on that not on the scene, the scene away from the principle of and use the C language and VC environment programming the charger procedures. The design uses the communications technology to put the charger field equipment interface and PC interface combination.And it can be achieved RMON. In addition, the PC application software also can view the test records stored in the U disk. This paper through the project development process describes the following points.First is The choice of programming environments.Second is Serial Communication remote test method.Third is the skills of reading the test records stored in the U disk.Discussion on general methods that through the PC platform with the establishment of industrial computer platform for remote testing and reading historical data and analysisKeywords: Human-machine interface ; Serial Communication; ; Visual C+6.0 ;File 1 绪论1.1 背 景随着计算机、电子、通讯技术的飞速发展,人们对于车间现场设备的运行管理控制,可视化操作等综合水平提出了新的要求。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 37 页 - - - - - - - - - 2 随着计算机的运算速度不断升级功能日渐强大,在车间现场测控中扮演了越来越重要的角色。利用计算机软件通过运用先进的通讯技术监控远程现场设备的运行状况和运行参数。这将大大提高生产效率,保证生产安全。出于节省人工,提高效率或者安全生产方面的考虑很多环节需要远程监控车间设备的运行情况,这就离不开通讯技术的应用。这里所说的通信是只计算机与远程设备之间的信息交换。由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,并且可以借助现成的电话网进行信息传送,因此,特别适合于远距离传输。对于那些与计算机相距不远的人机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式交换数据也很普遍。同时,随着人们对车间现场设备智能化的要求的提高,越来越多的设备采用了外存储器对生产测试过程中的数据进行存储,监控人员通过定期对存储了历史数据记录的分析,可以清楚得了解到设备的动态运行情况,这些数据对设备排错和参数设置提供依据都有很高的价值。随着PC端 USB 接口技术的普及,以U 盘作为设备外存储器存储运行数据,具有实现简单,读取方便的特点, 应用也越来越广泛。如何高效, 方便的通过最常用的PC 机来读取设备外存储器中的数据,为数据的快速分析提供了保证。因此研究计算机通过串行通信对远程车间设备的监控,读取 U 盘历史数据文件并显示具有一定的现实意义。1.2 任务和目标本毕业设计本着“ 不在现场,远离现场” 的原则,为导师研制的某型号充电机产品编写PC 端应用程序将充电机设备界面通过串口通信技术,与上位机界面有机的结合起来,以实现计算机的远程监控功能。 按要求在上位机中打开并查看充电机设备运行过程中的存储在U 盘中的历史数据文件,以便于分析测试。另外还要编写下位机微型打印机数据打印程序,为用户提供多种查看选择。我在认真分析以上设计要求之后,以C 语言作为开发语言,VC 为开发环境,在MFC 框架上编写完成一个应用程序。这个应用程序采用MSCOMM 控件来实现串口通讯,以 C 语言文件操作实现 U 盘历史数据文件的读写和显示操作。并且在此基础上,我还对上位机软件的界面进行了美化和优化,还添加了现场测试数据自动生成WORD 文档,使得软件更人性化和操作更简单。在本毕业论文通过这个项目的开发过程,阐述了编程环境的选择,串口通讯实现远程测试的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 37 页 - - - - - - - - - 3 方法,通过文件操作读取U 盘数据的技巧。探讨如何在PC 平台与工控机平台间建立远程测试和历史数据读取和分析的一般方法。2 总体设计方案2.1 系统总体结构系统总体结构如下图所示,下位机是一台试用在变电所等电力部门的充电机设备,采用工控机作为核心处理器。PC 机端的应用程序通过RS232 串口与设备实现通讯。充电机设备带有USB接口,用于接入U 盘存储充电机历史数据。当用户需要查看历史记录数据时,将U 盘从设备中拔下,接入PC 端可以利用应用程序通过文件操作打开查看。图1. 系统总体结构图另外, 该充电机设备通过工控机打印口连接一台微型打印机用于运行参数和测试数据的即时打印,供用户查看。2.2 上位机用户操作界面结构主 界 面登 录 界 面现 场 测 试放 电 测 试电 压 稳 定 精 度 测 试电 流 稳 定 精 度 测 试效 率 测 试限 流 特 性 测 试历 史 数 据 查 询放 电 测 试电 压 稳 定 精 度 测 试电 流 稳 定 精 度 测 试效 率 测 试限 流 特 性 测 试参 数 设 置名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 37 页 - - - - - - - - - 4 图2. 软件组织结构3 上位机用户操作界面的建立3.1 编程语言及编程环境3.1.1 C+ 语言介绍C+是脱胎自C 语言的一种中级语言。从计算机角度看, 它可以嵌入ASM 等低端语言 ; 从面向对象的程序设计角度看, 它有具备OOP 的三个基本特征 抽象, 封装和继承。C 语言是结构化和模块化的语言,它是面向过程的。C+保留了 C 语言原有的所有优点,增加了面向对象的机制。C+与 C 完全兼容。 C+是对 C 的扩充,是C 的超集。它既可用于结构化程序设计,又可用于面向对象的程序设计,功能强大。C+性能良好,因为它被编译为机器代码。对于VBScript 和 Java 等语言,代码在运行时由程序解释,而且每次运行程序时都要将代码转换为机器码,这样做效率比较低,不仅仅是已编译过的 C+程序运行得较快,而且微软C+编译器已存在多年。这意味着微软的编译器程序员已经把许多优点集中到编译器上,以致于它能产生非常高效的机器码。因为C+是编译语言,而且非常自然, 比 VB 更接近机器代码,所以由 C+编译器产生的代码一定比VB 的编译代码效率更高。C+是一种编译语言,即C+代码在执行之前已转换为机器码。只要此代码不依赖于外部的动态链接库 (DLL) ,C+就可以在不需要安装额外程序的情况下移动到运行同样操作系统的其他机器和微处理器上,而移动Java 程序时需要先安装Java 运行期库。因此,使用C+语言相比其他语言具有最小的依赖性由于 C 和 C+已经存在许多年了,现在有许多可利用的代码,我们的服务器组件可以使用现有的 C/C+代码或库。鉴于上述特点,我在本设计中选择C+作为主要编程语言。3.3.2 Visual C+6.0 编程环境介绍本次设计中使用的Visual C+6.0 是一个基于C+语言,基于Windows 操作系统的功能强大的可视化软件开发工具。这不仅表现出在应用程序界面编辑和代码的编写中,还表现为数据处理上的高可视化和高面向对象性。Visual C+6.0 不仅是一个C+编译器, 而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE ) 。它由许多组件组成,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 37 页 - - - - - - - - - 5 包括编辑器、 调试器以及程序向导AppWizard 、类向导 Class Wizard 等开发工具。这些组件通过一个名为Developer Studio 的组件集成为和谐的开发环境。另外,Visual C+6.0 还提供了一个无所不包 的应用框架MFC,并且可以非常方便的使用MSCcomm 控件进行串口编程。使用Visual C+6.0 的向导可以生成大量的使用代码,而不必人工地编写代码。从编写程序的难易程度和程序的性能综合考虑,这些特点完全能够满足我在本次课题设计中的各种需求。3.3.3 MFC 程序框架介绍MFC 就是一个程序的框架。这个框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法。使用者只要通过预定义的接口把具体应用程序特有的东西填入这个轮廓就可以了。在它基础上来建立Windows 下的应用程序,相对SDK 来说更为简单。Visual C+6.0 提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard 用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。在本设计中要求通过编写代码来建立必要的用户界面,控制并定制其外观。同时还要响应用户的操作行为。例如,如果用户单击了现场测试按钮,就需要有代码来响应这一动作。而使用MFC 框架,则会自动添按钮的响应消息,只需在对应位置添加事件处理动作就能完成控制任务。为此采用了Visual C+6.0 的 MFC 单文档程序框架作为上位机软件的基本框架。3.4 基本界面的建立3.4.1 单文档一个典型的应用程序应该活动在称为“ 框架窗口 ” 中。一个框架窗口是一个全功能的主窗口,用户可以改变尺寸、最小化、最大化等。本设计方案中主要涉及单文档窗口,和对话框窗口。整个上位机界面的底层是单文档,而上层使用的使对话框,并在对话框上添加主要控件,从而构成了完整的界面外观。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 37 页 - - - - - - - - - 6 图3. 单文档结构图使用 MFC 的向导即可生成如上所示的单文档窗口。这是整个界面的基础框架部分。3.4.1 对话框在基础的单文档框架上面添加了两个无(标题栏)对话框将单文档窗体分为两部分。上一部Dialog1 分为工具条按钮,下一部分Dialog2 为具体功能显示区。此两部分窗口均为非模态化对话框。首先在资源里插入新建对话框,修改其属性;然后添加相应的类,如CUDiskDlg ;再使用以下代码分别创建模态化对话框和非模态化对话框。CUDiskDlg m_CUDiskDlg; /定义对象m_UDHisDlg.Create(IDD_UDISKHIS,this); /创建非模态化对话框m_UDHisDlg.ShowWindow(TRUE); /显示对话框m_UDHisDlg.DoModal(); /创建模态化对话框名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 37 页 - - - - - - - - - 7 3.4.1 控件介绍Button控 件 : Button控 件 是 按 钮 控 件 , 可 以 响 应 单 击 ( BN_KLICKED) 和 双 击(BN_DUBLEKLICKED)事件。其使用方法是:在资源标签的相应窗体下,从Controls 对话框中将 Button 控件拖至对话框的相应位置,修改属性及ID 号后,在其对应的事件处理函数中添加事件代码即可。在本设计中使用颇多,如U 盘历史数据查询按钮,现场测试按钮等。Edit 控件: Edit 控件是文本编辑控件,在本设计中主要用于U 盘查询界面中详细数据的参数显示,和现场测试中参数设置部分的数据输入和测试结果表格中的数据显示及测试结论、处理意见的输入。将Edit 控件在类向导中与一变量(如m_edit8)以 value 的形式相关联。当用于数据显示时,使用语句m_edit8 =str;将值赋予变量m_edit8,再用语句UpdateData( FALSE) ;将变量内容显示。当用于数据输入时,应用语句UpdateData ( TRUE ) ;将控件中的数据读入赋予相关变量。ListContrl 控件: ListContrl 控件主要用于显示列表式的数据显示。在本设计中,历史信息,详细数据,现场测试数据的显示均使用了ListContrl 控件。该控件使用前需进行风格设置。即通过以下语句获得原有风格:DWORD dwStyle = :GetWindowLong(m_listctrl.m_hWnd, GWL_STYLE); dwStyle &= (LVS_TYPEMASK); dwStyle &= (LVS_EDITLABELS);通过以下语句置新风格:SetWindowLong(m_listctrl.m_hWnd, GWL_STYLE,dwStyle,|LVS_REPORT|LVS_NOLABELWRAP|LVS_SHOWSELALWAYS); 通过以下语句设置扩展风格DWORD styles = LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES; ListView_SetExtendedListViewStyleEx(m_listctrl.m_hWnd, styles,styles );。进行风格设置后,先插入列头,后才可以逐行添加数据信息。插入列头时,应用InsertColum方法,而逐行添加信息时,第一列的信息应该用InsertItem 方法,而后几列则应用SetItem 方法。ListContrl控 件 也 可 以 响 应 双 击 事 件 , 其 函 数为OnDblclkListHis(NMHDR* pNMHDR, LRESULT* pResult) 。并且能获得双击时鼠标所在的Item 号。由此来实现双击历史信息记录后,显示对应的详细数据。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 37 页 - - - - - - - - - 8 Picture 控件: Picture 控件是一个静态控件,用于插入图片等功能。而图片的插入,有静态插入和动态插入两种方法。静态插入是指, 直接在 Picture 控件属性中, 将将 “ 类型 ” 选项改为 Bitmap,然后再在 “ 图像 ” 选项中选择合适的位图即可。动 态 插 入 是 指 , 在 程 序 中 定 义HBITMAP类 型 变 量m_Brown_h1 , 用 语 句m_Brown_h1=:LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BROWN_H1)将变量 m_Brown_h1 与位图资源IDB_BROWN_H1关联起来。然后再将Picture 控件与变量m_h1关联,再通过语句m_h1.SetBitmap(m_Blue_h1); 就可以将图片动态插入。3.5 历史数据察看功能3.5.1 历史数据察看功能介绍历史数据察看功能主要是用于察看直接通过下位机,以文件形式存储在USB 可移动存储设备上的历史检测数据纪录的。该纪录由历史信息和历史信息对应的详细数据信息两部分。每条历史信息包括序号、日期、时间、整定电压(在放电测试项目中无该纪录)、整定电流、已放容量(只在放电测试项目中有该纪录)五项内容;每条历史信息对应得详细数据信息有各自不同的几项内容。各项测试的详细数据信息如下:放电参数测试包括序号、时、分、端电压、放电电流五项;电压稳定精度测试包括输入电压、电压最大值、电压最小值、稳压精度、纹波系数五项;电流稳定精度测试包括输入电压最大值、电流最大值、电流最小值、稳流精度四项;限流特性测试包括输入电压、-10%、100%、+10%、稳流精度五项。在用户进入该程序后,单击 U 盘历史查询按钮就会进入历史数据察看状态。按下各测试项目选择按钮,则进入不同的测试项目历史纪录查询状态。对应的历史信息就立刻显示在List 中。双击 List 条目,则将对应的详细数据信息显示在List 中,其参数也将显示在对应位置。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 37 页 - - - - - - - - - 9 图4. 历史数据查询界面3.5.2 历史数据察看功能实现的方法3.5.2.1盘符的确定由于每台 PC 的盘符划分不同,USB 移动存储设备连接后所在的盘符也将不同。而对文件的操作必须指定明确的文件路径,方能正确的打开文件,读取数据。因此,如何确定USB 移动存储设备的盘符是必须解决的问题。在本设计中,我采用了添加配置文件方式来解决该问题。即在可执行程序的根目录下添加一可读写的文件,用于保存指定的盘符。当用户在某一PC 机上第一次使用本软件时,将提示配置USB 可移动存储设备盘符。当用户输入该PC 机上 USB 可移动存储设备所在盘符,并按配置按钮后,盘符信息将写入配置文件,并一直保存至下一次配置前。按下推出按钮,则向主框架发出消息,要求其重新创建历史数据察看功能对话框,在对话框的初始化中重新装载配置文件,读入正确的盘符。其中配置文件的装载,采用函数GetCurrentDirectory(dirlen,sDir)获得可执行文件的根目录,再用函数strcat(sDir,con_set.ini) 生成完整的配置文件路径。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 37 页 - - - - - - - - - 10 图5. 第一次配置文件界面生成配置文件代码如下:UpdateData(); if(m_usb.GetLength()0&m_usb.GetLength()0)&m_com.GetLength()2) FILE* fp; fp=fopen(con_set.ini,wb); char Disk,Com; Disk=m_usb.GetAt(0); Com=m_com.GetAt(0); fputc(Disk,fp); fputc(Com,fp); fclose(fp); MessageBox(配置成功! ); else MessageBox(输入的参数格式错误,无法配置!); 配置文件的装载代码如下:FilePath=C:FHIST; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 37 页 - - - - - - - - - 11 FilePath.SetAt(0,Disk); l=FilePath.GetLength(); FileName=FileName_tmp; for(r=0;rl;r+) *(FileName+r)=FilePath.GetAt (r); *(FileName+l)=NULL; /打开文件并判断文件是否打开成功if(fp=fopen(FileName,rb)=NULL) MessageBox(文件不存在,请检查文件位置并重新配置); return; 3.5.2.2历史数据及对应的详细数据的读取和显示历史纪录在USB 移动存储设备中以文件的形式存储。各项历史信息和详细数据信息对应的文件名如下图:检测项目历史信息文件名详细数据文件名放电测试FHIST VDATA 电压稳定精度测试UHIST UDATA 电流稳定精度测试IHIST IDATA 效率测试EHIST EDATA 限流特性测试XHIST XDA TA 图6. 各项历史信息和详细数据信息实现历史信息的读取,首先从配置文件中读入盘符,获取到对应历史信息的文件路径,以二进制流形式打开对应文件,读取历史信息条数(即第一个二进制数据)到int 变量 mark 中。由于下位是 16 位操作系统,一个int 型占 16 位,而上位机是32 位操作系统,一个int 型占 32 位,一个 short int 型占 16 位。由文件存储格式可知,实际的标志位为16 位数,因此需将读取的二进制数强制转换为short int 型数据。然后根据各项历史信息数据的存储格式,移动指针,依次读取一条数据到数组data_tmp7 中,共读取mark 次。移动指针读取数据到数组data_tmp7中的代码如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 37 页 - - - - - - - - - 12 fseek(fp,(2+i*7*4),SEEK_SET); /移动指针到相应位置fread(data_tmp,4,7,fp); / 详细数据的读取是当鼠标双击list1 控件的某一条历史信息时,将响应list1 控件的双击事件,进入的其响应函数。在该函数中,通过switch 语句判断该条历史信息所属的测试项目,并由此打开相应的详细数据文件。当双击list1 控件的某一条历史信息时,nItem=m_listctrl.GetNextItem(-1, LVNI_FOCUSED); 将获取该行索引值,即该条历史信息在全部信息中排列的序号。根据此及对应测试项详细数据存储格式,可计算出该条历史信息所对应得详细数据的第一个数据的指针。然后移动指针,读取该详细数据信息到数组tem 。放电测试项详细数据读取时移动指针,读取数据到数组data_tmp7 中的代码如下:fseek(fp,(2+nItem*1240),SEEK_SET);/移动指针到对应日期的数据存储位置fread(data,4,310,fp);/ 读取数据流到tem, float *data 的指向 tem 的首地址历史信息和对应的详细数据的显示,主要是edit 控件的显示和listContrl 控件的信息插入。以放电测试为例,历史信息数据显示的主要代码如下:for(i=0;imark;i+) /插入数据 fseek(fp,(2+i*7*4),SEEK_SET); /移动指针到相应位置fread(data_tmp,4,7,fp); rewind(fp); itIndex=m_list_his.GetItemCount(); LV_ITEM lvitem; lvitem.mask=LVIF_TEXT; lvitem.iItem=itIndex; lvitem.iSubItem=0; itoa(i+1),ch1,10); lvitem.pszText =ch1; m_list_his.InsertItem(&lvitem); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 37 页 - - - - - - - - - 13 /日期str=; itoa(int)data_tmp0,ch1,10); str=str+ch1+.; itoa(int)data_tmp1,ch1,10); str=str+ch1+.; itoa(int)data_tmp2,ch1,10); str=str+ch1; int str_length; str_length=str.GetLength(); char *str_data; char s_data15; str_data=s_data; for(j=0;j=10) itoa(int)data_tmp3,ch1,10); else itoa(int)data_tmp3,ch1,10); ch11=ch10; ch10=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 37 页 - - - - - - - - - 14 ch2=0; str=str+ch1+:; if(data_tmp4=10) itoa(int)data_tmp4,ch1,10); else itoa(int)data_tmp4,ch1,10); ch11=ch10; ch10=0; ch2=0; str=str+ch1+:+00; str_length=str.GetLength(); char *str_time; char time_tem10; str_time=time_tem; for(j=0;jstr_length;j+)*(str_time+j)=str.GetAt (j); *(str_time+str_length)=NULL; lvitem.pszText =str_time; lvitem.iSubItem=2; m_list_his.SetItem(&lvitem); /已放容量chang(data_tmp5*0.01,str_da,h); lvitem.pszText =str_da; lvitem.iSubItem=3; m_list_his.SetItem(&lvitem); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 37 页 - - - - - - - - - 15 /整定电流chang_A(data_tmp6*0.01,str_da,A); lvitem.pszText =str_da; lvitem.iSubItem=4; m_list_his.SetItem(&lvitem); 以放电测试为例,详细数据显示的主要代码如下:for(i=0;i=10) itoa(int)data3,ch,10); else itoa(int)data3,ch,10); ch1=ch0; ch0=0; ch2=0; str=str+ch+:; if(data4=10) itoa(int)data4,ch,10); else itoa(int)data4,ch,10); ch1=ch0; ch0=0; ch2=0; str=str+ch+:+00; m_edit_u9 =str; /开始端电压chang_V(data5*62.5,str_da,V); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 37 页 - - - - - - - - - 18 m_edit_u10 =str_da; /整定放电电流chang_A(data6*0.01,str_da,A); m_edit_u11 =str_da; /已放容量chang(data7+i*6+5,str_da,h); m_edit_u12 =str_da ; m_edit_u13 = _T(); m_edit_u14 = _T(); UpdateData(FALSE); 3.4 现场测试功能随着计算机、电子、通信技术的飞速发展,人们对于车间现场设备的运行管理控制,可视化操作等综合水平提出了新的要求。本设计中的现场测试功能就是本着“ 不在现场,远离现场” 的原则,将充电机的现场设备界面通过串口通信技术,与上位机界面有机的结合起来,以实现计算机的远程监控功能。该功能的使用,可实现在非车间场地,通过简单、人性的操作界面,对充电机测试数据的进行实时监控以及历史数据的准确查询,并且能在实际的生产任务中,最大限度的降低人工成本,提高生产效率,保证生产安全。3.4.1 现场测试功能介绍本设计中的现场测试功能主要是指上位机和下位机间通过通信来实现上位机与下位机间的信息交换。将下位机检测到的数据实时上传给上位机,并在界面中显示,保存。由此实现在非车间场地,通过简单、人性的操作界面,对充电机测试数据的进行实时监控。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 37 页 - - - - - - - - - 19 图7. 现场测试功能界面(该图需表出参数设置部分,表格部分)上图为现场测试功能界面。该界面能实现对五个测试项目的测试数据进行实时监测。要求监测到的数据包括:放电参数测试包括序号、时、分、端电压、放电电流五项及测试日期、测试时间、开始端电整定放电电流、已放容量等五个参数;电压稳定精度测试包括输入电压、电压最大值、电压最小值、稳压精度、纹波系数五项及测试日期、测试时间、直流电压、负载电流、整定电压、交流电压、纹波峰值等七个参数;电流稳定精度测试包括输入电压最大值、电流最大值、电流最小值、 稳流精度四项及测试日期、测试时间、 直流电流、 直流电压、 整定电流、 交流电压、计算整定电流等七个参数;限流特性测试包括输入电压、-10%、100%、 +10%、稳流精度五项及测试日期、测试时间、直流电压值、交流电压、限流整定值等5 个参数。当用户按下现场测试按钮后,由单文档试图创建并显示一对话框,即现场测试界面。当按下不同的现场测试项目按钮后,通过标志位flag_Face 的置位及判断,进入到不同的现场测试状态。如图所示的参数设置图位置可进行各项测试的设备信息及参数设置。按下保存设置按钮,设置被禁用,并且设置的内容将被保存在测试结果表格中如图所示的表格设置。保存设置后,按准备测试按钮,则打开串口,进入通信等待状态。一但下位机向上位机发送数据,就会进入通信状态,根据预先定义的协议,进行数据通信。若要停止接收数据,则需按下停止接收数据名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 37 页 - - - - - - - - - 20 按钮,即关闭串口。测试结束后,可在Edit1,Edit2 中输入相应的测试论和意见。按保存按钮,则可以将测试结果导入word 中,并保存下来。各按钮功能及相关变量如下表:按钮名称按钮功能相关变量放电测试进入放电测试功能flag_Face=1 电压稳定精度测试进入电压稳定精度测试功能flag_Face=2 电流稳定精度测试进入电流稳定精度测试功能flag_Face=3 充电机效率测试进入充电机效率测试功能flag_Face=4 限流特性测试进入限流特性测试功能flag_Face=5 保存设置参数设置禁用, 将设置内容保存在测试结果表格中flag_IfParSave=1 修改设置参数设置可用flag_IfParSave=0 准备测试判断设置是否保存, 若已保存则打开串口无停止接收数据若串口打开,则关闭串口无保存结果根据标志位flag_nFormWord的值,将测试结果导入对应word 中无返回隐藏现场测试界面, 显示信息输入界面无图8. 各按钮功能及相关变量3.4.2 串行通信的建立及基本参数的设定所谓 “ 串行通信 ” 是指外设和计算机间使用一根数据信号线(另外需要地线,可能还需要控制线) ,数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。如图所示。而串行接口是微机应用系统常用的接口。在串行通信时,要求通信双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通信。目前 RS-232 是 PC 机与通信工业中应用最广泛的一种串行接口。它被定义为一种在低速率名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 37 页 - - - - - - - - - 21 串行通信中增加通信距离的单端标准。RS-232 采取不平衡传输方式,即所谓单端通信。收、发端的数据信号是相对于信号地,如从DTE 设备发出的数据在使用DB25 连接器时是2 脚相对7脚(信号地)的电平,DB25 各引脚定义参见图1。典型的RS-232 信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5+15V ,负电平在 -5-15V 电平。当无数据传输时,线上为 TTL ,从开始传送数据到结束,线上电平从TTL 电平到 RS-232 电平再返回TTL 电平。接收器典型的工作电平在+3+12V 与-3-12V 。 由于发送电平与接收电平的差仅为2V 至 3V 左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15 米,最高速率为20kb/s。 RS-232 是