万伟锋,许锦标,黄建杰
广东工业大学自动化学院
基于VC++的串口通信方案在智能炒菜机器人中的应用
万伟锋,许锦标,黄建杰
广东工业大学自动化学院
针对智能炒菜机器人控制系统的上位机与下位机的通讯,拟以VC++为平台开发出串口通信网关,从而实现上位机对下位机的各种控制以及上位机对后台数据库的访问与维护。
智能炒菜机人;串口通信;VC++
本项目的智能炒菜机器人是一台可编程控的通用中式菜肴烹饪机器,用户可以自己编写菜谱程序、也可以直接调用炒菜机器人内部数据库己存的大量中式菜肴菜谱程序、或者通过网络接受外部的菜谱程序1。本文针对的是当前智能炒菜机器人的上位机程序进行的改进,采用串口通信方案对下位机与上位机进行通信。本文密切结合科研课题进行研究与设计,针对支持vmmda1.0通用菜谱指令的智能炒菜机器人的改进采用EIA RS-232C标准,在vc++6.0平台开发出上位机与下位机进行交互通信的设计方案。本文着重介绍其中的串口通信部分。
在Windows上开发串口通信软件通常有两种方案,一种是基于利用Microsoft的MSComm控件,另一种是采用Windows的通信函数AIP函数。相对比较简单的是利用MSComm控件,MSComm控件不仅有丰富的与串口通信协议密切相关的属性和事件,而且还提供了对串口的各种操作事件,不过它的灵活性比较差,其最不利的是最多只支持16个串口2。而对于利用Windows通信函数API编写串口通信程序时就必须掌握大量关于通信的知识,对于没有经过学习通信方面知识的科学工作者而言较为复杂,它的优点是应用广泛,可实现的功能更强大,非常适合编写较为复杂的通信程序3。
表1 为MSComm控件与WINAPI函数的区别。
表1MSComm控件与W IN API函数的区别
本文设计的串口通信方案是用于在上位机选用WIN CE6.0的操作系统下位机选用PLC作为控制核心的通信4。由于智能炒菜机人的串口通信信息量比较小,不需要复杂的通讯控制,通过对比两种方案,本文选择Microsoft的MSComm控件的解决方案。
使用控件惊醒串口程序设计,主要分为加载控件,初始化以及打开串口,串口处理以及关闭串口等。
2.1 加载以及使用控件
首先,在对话框中创建通信控件,拖动控件图标到窗口上,创建控件ID,他的ID默认为IDC_MSCOMM1,要查看或修改该ID值,可右击MSComm控件图标,弹出MSComm控件的快捷菜单,在属性单击【General】选项卡,在【ID】右侧的文本框内显示控件ID为IDC_MSCOMM1,可在此处修改ID值,改为IDC_MSCOMM2。在对话框头文件vccommDlog.h第一行中,加入引用该控件类代码如下:
2.2 对串口初始化并打开串口
对串口的初始化是对串口的各种参数进行设置,它包括使用的端口、奇偶校验、数据位数、通信波特率、停止位数等参数。
m_ctrl1Comm.Settings(“19200,N,8,1”);
m_ctrl1Comm.SetInBufferSise(4096);
m_ctrl1Comm.SetInBufferCount(0);
m_ctrl1Comm.SetInputLen(0);
m_ctrl1Comm.SetInputMode(1);
m_ctrl1Comm.SetRThreshold(20);
m_ctrl1Comm.SetPortOpen(1);
m_ctrl1Opencom.EnableWindow(FALSE);
m_ctrl1Closecom.EnableWindow(TRUE);
m_ctrl1Setupcom.EnableWindow(FALSE);
m_ctrl1Exit.EnableWindow(FALSE);
AfxMessageBox“(串口打开成功!”);
}
本文中串口号设置为COMM2,波特率设置为9600,缓冲区大小设置为4096。
2.3 对串口事件的处理和关闭串口
串口事件的处理包串行数据的接收、发送串行数据及对错误通信进行处理等操作。这部分程序通常是一个选择分支结构,常常用switch语句。利用CommEvent的值来确定是执行哪个case分支。
本文详细介绍了VC++下用MSComm控件来编程串口通信的网关,通过MSComm控件用户十分便捷可以地写出灵活性高,移植性强的串口通信程序,避免了去了解一些复杂的Windows API函数6。因此,在智能炒菜机器人的上位机与下位机通信中选用MSComm控件编程串口通信程序。而且在下位机为PLC的炒菜机内部,有比较复杂的电磁环境、高温、油烟和水汽等恶略环境下,系统的稳定性也是一个考验。选用简单,使用稳定的串口通信就成为了一种必要。
[1]许锦标.可编程智能炒菜机[P].中国:201310064095.9, 2013.02.28.
[2]王华,岳丽全,岳志高.MSComm控件在VC++6.0串口通信中的应用[J].长春工程学院学报(自然科学版),2009,10(1):72-73
[3]陈常祥,王强,佟树成,张天桥.MSComm与API函数实现PLC串口通信比较[J].工业控制计算机,2006,19(10):9-10
[4]刘书智.VisualC++串口通信与工程应用实践[M].北京:中国铁道出版社,2011.109-121
[5]张颖超,黄刚.基于VC++的PC机与Avantes光谱仪串口通信的实现与应用[J].南京信息工程大学学报,2013,5(5):421-425
表2 各评价因子对易发性程度的权重
4.1 单元信息的提取及数字化
利用MAPGIS软件将研究区进行剖分。将剖分的网格与已数字化地质灾害图件进行单要素叠加,并将灾害划为:地质灾害高易发区;地质灾害中易发区;地质灾害低易发区;地质灾害不发育区。
4.2 隶属度的确定
本文采用定量指标赋值。评判结果是通过权重矩阵W和模糊关系矩阵R的复合运算得到的。首先通过二级评判求出该单元格滑坡的稳定性分级模糊向量,组成一个10×4阶矩阵,作为一级评判的模糊关系矩阵;然后再通过一级评判,最后确定单元格滑坡的最终评价结果。通过计算机程序运算,算出该单元格滑坡对评价等级的隶属度,根据最大隶属度原则,确定该单元的易发等级。
1)滑坡地质灾害高易发区:本区出露的地层岩性主要有三叠系上统涅如组(T3n)、修康群(T3x)、元古界念青唐古拉岩群(An∈Nq)和第四系(Q4)及软硬相间岩层。
2)滑坡地质灾害中易发区:本区出露地层为南迦巴瓦组(Anε~PtN1)甲不拉组(K1j)。地区岩体多为破碎的页岩、板岩等软弱岩类工程地质岩组,水系发育。且该区地形较陡峻,河流切割较深;受断裂构造影响,岩体结构破坏较严重。
3)滑坡地质灾害低易发区:本区出露岩层为侏罗系日当组(J1r)、白垩系甲不拉组(K1j)。岩性为钙质页岩含硅质结核、酸性凝灰岩及页岩、细砂岩、泥灰岩等。人类工程活动较轻微。
4)滑坡地质灾害不易发区:本区人烟稀少,生态坏境质量良好,地表出露的岩体较坚硬完整,滑坡地质灾害不发育。
总体来说研究区的滑坡地质灾害发育较集中,主要受地形地貌、地层岩性、地质构造等因素的控制。其中修康群、日当组和念青唐古拉群是本区的“易滑地层”;6°—30°的坡度范围是易发生滑坡;灌木林和天然草地滑坡发育率最高;滑坡易发区高程集中在2500—3000m。
参考文献:
[1]董立强,祁生文,刘春玲.喜马拉雅山东南地区地质灾害发育规律初步研究,工程地质学报,2007,15(06).
[2]王哲,易发成.基于层次分析法的绵阳市地质灾害易发性评价[J].自然灾害学报,2009,18(01)