新闻中心

EEPW首页 > 电源与新能源 > 设计应用 > 锂离子电池组监控系统研究与实现 ― 上位机程序设计

锂离子电池组监控系统研究与实现 ― 上位机程序设计

作者:时间:2018-08-28来源:网络收藏

在锂离子电池监控系统中,除了下位机单片机系统电路板及其程序设计外,还需要上位机程序对锂离子电池系统的进行各种监控管理设置。根据系统要求,上位机程序的主要功能有以下几个:

本文引用地址:http://www.eepw.com.cn/article/201808/387858.htm

1.接收并显示下位机采集的各路数据信息,包含16路锂电池电压、主回路充放电电流、4路温度、电量等数据信息;

2.设置下位机工作时需要配置的系统参数;

3.校正下位机上传的各路数据;

4.根据需要保存下位机上传的数据。

该上位机程序采用VC++6.0编程工具进行程序设计,本章对上位机程序的设计思想和内容进行了描述。

5.1上位机程序

开发平台及相关技术上位机程序采用非常流行的可视化编程工具VC++6.0进行开发,为完成相应的显示和设置功能,程序采用了许多VC++6.0自带的控件,同时应用了多线程编程技术。

5.1.1 VC++6.0简介

VC++6.0是微软公司开发的编程平台,具有强大的功能。本软件是基于Windows系统开发的,编程语言采用的是C++语言,并且微软给该软件提供了功能强大的MFC(Microsoft Foundation Class)类库。MFC中封装了大部分Windows API函数和Windows控件,它包含的功能涉及到整个Windows操作系统。MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。因此,使用VC++可以使程序员更加方便的进行应用程序开发。

5.1.2相关控件介绍

系统使用了Edit Box控件、Static Text控件、Button控件、Group Box控件、Check Box控件、Combo Box控件、Tab Control控件和MSComm控件八个控件,本部分对这些控件进行简单介绍。

1.Edit Box控件CEdit类提供了Windows编辑控件中的功能。编辑控件是一个子窗口矩形,用户可以向其中输入文本。可以通过对话模板或直接从代码中创建一个编辑控件。

在两种情形下,首先调用CEdit构造程序构造CEdit对象,再调用Create成员函数创建Windows编辑控件并将其与CEdit对象连接。

2.Static Text控件CStatic类提供了一个Windows静态控件的性能。一个静态控件用来显示一个文本字符串、框、矩形、图标、光标、位图或增强的图元文件。它可以被用来作为标签、框或用来分隔其它的控件。一个静态控件不接收输入,也不提供输出;但是,如果它是用SS_NOTIFY风格创建的,则它可以通知其父有关设备点击的消息。

3.Button控件类CButton提供了对Windows按钮控件的操作。按钮控件是一个小的矩形子窗口,可以通过单击选中(按下)或不选中。按钮可以单独使用,也可以成组使用,它还可以具有文本标题。在用户单击它的时候,按钮通常要改变显示外观。

典型的按钮控件有:复选框、单选钮和下压式按钮(push button)。一个CButton对象可以是它们中的一种,这由它的按钮风格和成员函数Create的初始化决定。

4.Check Box控件CheckBox控件就是我们一般所说的复选框,通常用于某选项的打开或关闭。

大多数应用程序的“设置”对话框内均有此控件。我们看到的可以打勾的就是CheckBox.该控件表明一个特定的状态(即选项)是选定(on,值为1)还是清除(off,值为0)。在应用程序中使用该控件为用户提供“True/False”或“yes/no”的选择。因为CheckBox彼此独立工作,所以用户可以同时选择任意多个CheckBox,进行选项组合。

5.Combo Box控件类CCombo Box封装了Windows组合框。组合框由一个列表框和一个静态控件(或编辑控件)组成。列表框部分可以是一直显示的,也可以是隐藏的,在用户单击编辑控件边上的按钮(下拉箭头)时下拉该列表框。列表框中当前选中的项(如果有的话)显示在静态控件或编辑控件中。如果组合框带有下拉风格,则当用户在编辑框中输入列表项的开始字符时,对应项(如果有的话)中的第一个将会加亮显示。

可以从对话框模板中建立一个CComboBox对象,也可以直接在代码中创建。

无论采用哪种方法,都要先调用CComboBox的构造函数构造一个CComboBox对象,然后调用成员函数Create创建控件并在CComboBox对象上应用它。

消息映射入口的格式如下:

ON_Notification( id,memberFxn )

其中id指定了发送通知的组合框控件的子窗口ID,而memberFxn是用于处理该通知的父成员函数的名字。

父窗口的函数原型的格式如下:

afx_msg void memberFxn( );

6.Tab Control控件一个“标签控件”类似于一个笔记本中的分隔器,或一个文件柜上的标签。通过使用标签控件,应用程序可以将一个窗口或对话框的相同区域定义为多个页面。

每一页包含了一套信息或一组控件,当用户选择了相应的标签时应用程序就会显示相应的信息或控件。一种特殊类型的标签控件把标签显示得像按钮一样。点击一个按钮将立即执行一条命令而不是显示一个页。

CTabCtrl类提供了Windows通用标签控件的性能。这个控件(也就是CTabCtrl类)只对运行在Windows 95和Windows NT 3.51或更新版本下的程序来说是可用的。

7.Group Box控件Group Box控件本质上确实是class CStatic的一个实例化对象。在一个对话框上布置好一个Group Box控件后,默认ID为IDC_STATIC,这时候是无法在代码里动态地控制它的隐藏/显示属性。必须给它一个新的ID号,比如IDC_GROUPBOX1,最后再给它关联一个CStatic控件变量(这个你应该自己会吧),然后就可以在必要时候(另一个控件被选择)调用ModifyStyle(0,SWP_HIDEWINDOW/*SWP_SHOWWINDOW*/);实现Group Box的隐藏/显示状态的动态切换。

8. MSComm控件Visual C++为我们提供了一种好用的ActiveX控件Microsoft Communications

Control(即MSComm)来支持应用程序对串口的访问,在应用程序中插入MSComm控件后就可以较为方便地实现对通过计算机串口收发数据。

使用VC++提供的串行控件MSComm进行编程,首先,在对话框中创建控件,若Control工具栏中缺少该控件,可通过菜单Project ——>Add to Project——> Components and Control插入即可,再将该控件从工具箱中拉到对话框中。此时,你只需要关心控件提供的对Windows通讯驱动程序的API函数的接口。换句话说,只需要设置和监视MSComm控件的属性和事件。

在ClassWizard中为新创建的控件定义成员对象(CMSComm m_Serial),通过该对象便可以对串口属性进行设置,MSComm控件共有27个属性,这里只介绍其中几个常用属性:CommPort设置并返回通讯端口号,缺省为COM1. Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。

PortOpen设置并返回通讯端口的状态,也可以打开和关闭端口。

Input从接收缓冲区返回和删除字符。

Output向发送缓冲区写一个字符串。

InputLen设置每次读入的字符个数,缺省值为0,表明读取接收缓冲区中的全部内容。

InBufferCount返回接收缓冲区中已接收到的字符数,将其置0可以清除接收缓冲区。

InputMode定义Input属性获取数据的方式(为0:文本方式;为1:二进制方式)。

RThreshold和SThreshold属性,表示在OnComm事件发生之前,接收缓冲区或发送缓冲区中可以接收的字符数。

打开所需串口后,需要考虑串口通信的时机。在接收或发送数据过程中,可能需要监视并响应一些事件和错误,所以事件驱动是处理串行端口交互作用的一种非常有效的方法。使用OnComm事件和CommEvent属性捕捉并检查通讯事件和错误的值。发生通讯事件或错误时,将触发OnComm事件,CommEvent属性的值将被改变,应用程序检查CommEvent属性值并作出相应的反应。

5.2上位机程序方案

上位机程序主要完成数据显示、参数设置、存储器读取、数据校正等功能。

该程序通过串口与下位机板进行通信,将需要显示的信息和设置的参数等信息进行传输。

上位机程序功能框图如下图5.1所示。


上一页 1 2 下一页

关键词: 测试 通信

评论


相关推荐

技术专区

关闭