基于MFC的单片机上下位机通信控制系统设计

2019-04-25 01:56吴雨川李红军
武汉纺织大学学报 2019年2期
关键词:下位控件上位

江 维,吴雨川,李红军



基于MFC的单片机上下位机通信控制系统设计

江 维,吴雨川,李红军

(武汉纺织大学 机械工程与自动化学院,湖北 武汉 430200)

随着现代信息技术的发展以及计算机的广泛应用,计算机与计算机、计算机与微处理器(MCU)等之间串口通信在数据采集、数据通信、故障检测、工业监控、实时控制系统等方面得到了广泛应用。本文以单片机为下位机,PC为上位机,利用可视化编程软件Visual C++6.0 MFC设计了友好的人机交互界面实现了PC与单片机之间的数据通信,其编程模块化、易于扩展、通用性强,适用于一般的工业控制系统。

MFC(微软基础类);单片机;上位机;通信控制

上位机[1-4]是指人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般为模拟量),转换成数字信号反馈给上位机。这种以上位机控制下位机的控制系统为计算机远程控制提供了技术基础,是目前计算机通信控制的一个重要方面。

1 上位机开发方案论证和选取

1.1 基于Matlab设计的调试平台

Matlab是Mathworks公司开发的面向理论分析研究和工程设计的一套具有强大功能的软件系统。Matlab不仅能解决控制系统中存在的大量数值计算和矩阵运算,其编程也简单并集图像、显示、处理等于一身。从Matlab6.0版本开始,其软件增加了设备控制箱(instrument control toolbox),提供了对串口通信的支持。利用该工具箱的serial类能可靠地进行串口通信。可利用单片机和Matlab的优点,利用Matlab GUI图形用户界面和设计友好的可视化上位机平台实现与PC串行通信及数据实时处理的方法。对数据的处理采用Matlab也能更好反映测试的性能,减少劳动强度,测试的结果十分明显,是有效的实时数据采集和处理方法。

1.2 基于LabVIEW开发调试平台

LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。LabVIEW应用于数据采集与控制、信号分析等方面,它为不熟悉文本语言编程的非计算机专业从业人员在测控领域建立计算机仪器系统——虚拟仪器,提供了一个便捷、轻松的图形化设计环境。由于其灵活、简单易用、开发效率高等特点,正逐渐成为科技工作者进行仪器应用与开发的得力工具。如果采用单片机作为前端数据采集,通过串口进行与LabVIEW的数据通信,就可实现低成本、灵活方便、接口简单的数据采集系统。这对于许多信号频率不是太高的场合,此方案无疑非常便利。利用LabVIEW对单片机的数据进行分析处理,并通过串口实现二者之间的数据交换、经济实用的数据采集及分析系统。

1.3 基于VC++开发的调试平台

Visual C++是一种由微软公司开发的包含协助开发环境的事件驱动编程语言,VC拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,程序员可以轻松的使用VC提供的组件快速建立一个应用程序。MSComm是Windows下串行通信编程控件,它为应用程序提供了通过串行接口收发数据的简便方法。MSComm控件[5-6]在串口编程时非常方便。开发人员不必花时间去了解较为复杂的API函数,而且在Visual C++等语言中经常使用。

1.4 方案选择和论证

用Matlab设计调试平台,所编写的软件不能脱离Matlab编程环境在Windows平台下直接运行,对上位机(PC机)的配置要求比较高,代码执行效率较低,界面编写功能简单,不能达到某些用户的需求。LabVIEW使用的是图形化环境,对数据文档的显示及处理方面效率不高,而且对上位机(PC机)的配置要求比较高,以及考虑到现阶段知识的储备情况,所以不选择这种方案。综合上面三种方案,本课题选择的是第三种方案,即基于VC++(Visual C++)开发的调试平台,它界面明晰、操作方便,同时对于后期的扩展推广也很容易实现。

2 下位机串口通信设计

以单片机为下位机设计串口接收上位机发送来的数据,其中单片机P1口接LED,串行通信波特率设定为9600BPS,在KEILC中编写的C语言程序如下:

#include

unsigned char flag;

unsigned char w,i;

unsigned int j;

void main()

{

TMOD=0x20;

TH1=0xfd;

TL1=0xfd;

TR1=1;

SCON=0x50;

PCON=0x00;

EA=1;

ES=1;

while(1);

}

void ser() interrupt 4

{

RI=0;

flag=SBUF;

if(flag=='1')

{

w=0xfe;

for(i=0;i<8;i++)

{

w=~((~w)<

P1=w;

for(j=0;j<10000;j++);

}

}

else if(flag=='2')

{

w=0x7f;

for(i=0;i<8;i++)

{

w=~((~w)>>i);

P1=w;

for(j=0;j<10000;j++);

}

}

else if(flag=='3')

{

P1=0xff;

for(j=0;j<10000;j++);

P1=0x00;

for(j=0;j<10000;j++);

}

}

图1 基于VC++设计的通信控制界面

3 上、下位机通信的实现

(1)在Visual C++6.0中新建工程添加串口通信控件设计上位机通信控制界面如图1所示:

(2)添加串口初始化代码:

if(m_ctrlComm.GetPortOpen())

m_ctrlComm.SetPortOpen(FALSE);

m_ctrlComm.SetCommPort(2); //选择com2

if( !m_ctrlComm.GetPortOpen())

m_ctrlComm.SetPortOpen(TRUE);//打开串口

else

AfxMessageBox("cannot open serial port");

m_ctrlComm.SetSettings("9600,n,8,1"); //波特率9600,无校验,8个数据位,1个停止位

m_ctrlComm.SetInputMode(1); //1:表示以二进制方式检取数据

m_ctrlComm.SetRThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件

m_ctrlComm.SetInputLen(0); //设置当前接收区数据长度为0

m_ctrlComm.GetInput();//先预读缓冲区以清除残留数据

(3)分别为信号1和信号2两个按钮控件添加事件处理函数:

char i= '1';

CString str;

str.Format("%c",i);

m_ctrlComm.SetOutput(COleVariant(str));

char i= '2';

CString str;

str.Format("%c",i);

m_ctrlComm.SetOutput(COleVariant(str));

(4)联机调试现象:将单片机通过串口线和PC相连,把下位机串口通信程序下载到单片机中,用鼠标在PC上分别点击界面上的信号1信号2两个按钮控件,可以观察到单片机P1口上的8个LED顺序流水灯、反序流水灯现象,编辑框可以接收下位机发过来的数据,清空接收区按钮可以将接收区的数据清空,点击退去系统按钮控件可以退出控制界面。

4 结语

针对本文的设计要求,较好的完成了方案的选择和任务,有效的实现了上位机和下位机的通信,设计出了友好的可视化界面和上位机下位机编程模块,通用性强,推广价值高,可运用于实际的工业控制系统之中。

[1] 樊新乾,潘存海.基于Modbus/TCP协议台达PLC与上位机VB软件之间的通信[J].制造业自动化,2012,34(20):33-35.

[2] 陆嘉,孟文,李常辉.基于VB的PLC与上位机通信软件的设计[J].自动化技术与应用,2007,26(9):79-81.

[3] 李志宏,杜娟,张平.基于VB的PLC和上位机通信的实现方法[J].控制工程,2002,9(1):35-37.

[4] 胡昊,刘建华,侯云辉.基于冗余S7-400H的通信系统在热媒炉项目中的应用[J].化工自动化及仪表,2017,44(8):774-777.

[5] 张素萍,李朝强.基于MSComm和队列技术的LabVIEW数据采集系统设计[J].国外电子测量技术,2016,35(6):86-91.

[6] 龚建伟.VisualC++/TurboC串口通信编程实践(第2版)[M].北京:电子工业出版社,2007.9.

Design of Communication Control System for Upper and Lower SCM based on MFC

JIANG Wei, WU Yu-chuan, LI Hong-jun

(School of Mechanical Engineering and Automation, Wuhan Textile University, Wuhan Hubei 430200, China)

With the development of modern information technology and the wide application of computers, serial communication between computers and computers and computers and microprocessors (MCUs) have been used widely in data acquisition, data communication, fault detection, industrial monitoring, real-time control systems, etc. In this paper, the single-chip microcomputer is used as the lower computer, and the PC is the upper computer. The visual programming software Visual C++6.0 MFC is used to design a friendly human-computer interaction interface to realize the data communication between the PC and the single-chip microcomputer. The soft programme is modular, easy to be expanded and strong universal, which is suitable for general industrial control systems.

Microsoft Foundation Class; SCM; Host computer; Communication control

江维(1983-),男,讲师,博士,研究方向:智能控制与嵌入式系统.

2018年武汉纺织大学教学研究项目(2018JY019).

TP273

A

2095-414X(2019)02-0077-04

猜你喜欢
下位控件上位
使用“填表单”微信小程序 统计信息很方便
基于UDS协议的CAN BootLoader的开发与验证
基于.net的用户定义验证控件的应用分析
基于STM32和Zigbee的mini宠物智能喂养系统的设计
发射机房监控系统之下位机
关于.net控件数组的探讨
特斯拉 风云之老阿姨上位
基于ZigBee和VC上位机的教室智能监测管理系统
围观党“下位”,吐槽帝“登基”
基于VC的PLC数据采集管理系统