基于PC/104的工业注塑机控制器设计
2010-08-23肖鼎新吴旭光冯欢欢侯京锋
肖鼎新,吴旭光,冯欢欢,侯京锋
XIAO Ding-xin, WU Xu-guang, FENG Huan-huan, HOU Jing-feng
(西北工业大学 航海学院,西安 710072)
0 引言
随着计算机及其控制技术的快速发展,工业制造加工技术与嵌入式系统的结合越来越紧密。注塑机是将热固性材料利用成型模具制成不同形状塑料制品的主要成型设备,目前市场上的注塑机多以单片机作为处理器或以工控机为基础开发而来,集成度不高,稳定性不好,操作不够直观,不能适应制造加工行业复杂的环境。
PC/104是专为嵌入式工业控制而定义的专业总线,在软件和硬件上与标准台式PC结构兼容,适合应用在具有高精度控制、高速注塑、大容量储存、人性化界面、良好扩展性特点的高档工业注塑机上。本系统上位机采用昭营公司PC/104结构的VDX-6354系统和Windows XPe 操作系统为硬、软件核心,下位机以MSP430F149和μC/OS-II操作系统为硬、软件核心,以工业注塑机为应用对象,重点研究了PC/104结构上层软件的开发,并对所涉及的硬件资源进行了描述,提供了一种基于PC/104的控制器设计方案。
1 系统总体结构设计
本系统具有高精度、可靠性的特点,设备可以对目标信号数据进行快速捕获、采集和反馈。系统的硬件结构主要包括基于Vortex86处理器的PC/104结构VDX-6354系统,8寸LCD显示器、CF储存器、专用64键键盘和下位机控制器的通信端口,另外为了方便控制器系统升级,预留了网口和USB接口。下位机控制器硬件结构主要包括处理器MSP430F149,A/D转换和D/A转换等。系统总体硬件结构如图1所示。
图1 硬件系统结构图
2 上位机应用层设计
PC/104采用ISA总线架构,在硬件与软件上与标准台式PC体系结构完全兼容,极大方便了外围硬件设备的扩展。LCD液晶模块、CF储存卡以及USB接口等设备无需底层驱动,系统开机即自检设备正常使用。在系统软件方面,Windows Xpe保留了Windows所需最小功能,并把相关硬件驱动编译进入系统内核,适合嵌入式开发和使用。系统首先安装Windows XPe系统到VDX-6354,以此为平台,扩展硬件外设及软件开发。
2.1 人机界面设计
利用Visual C++制作注塑机的人机界面窗口,主要包括:主监控界面、全自动操作界面、半自动操作界面、参数设定界面、系统设置界面等。可视化是VC编程开发的特点,在主监控界面中,_CMy1Dlg类包含的_OnPoint()函数和_OnTimer函数描述注塑机工作状态直观图,CMy1Dlg::DoDataExchange()函数显示发送和接收的数据,BOOL CMy1Dlg::OnInitDialog()函数初始化图形界面。作为图形界面的核心部分,CMy1Dlg:OnPaint()函数表达如下:
设置变量m_6=_T(5); m_10=_T(5); m_13=_T(5); 计算关模、座进、射出几项进程的时间,调用OnTimer(UINT nIDEvent)函数时被调用。当一个加工周期结束时,从缓冲区尾取走计时总和、数量总和返回变量m_47,进行相应处理,主监控界面如图2所示。
图2 主监控界面
2.2 键盘的连接
为适应注塑机的实际需要,配置了一块基于ZLG7289芯片的专用键盘,通过扩展Vortex86资源中的GPIO接口实现键盘功能,使键盘具有去抖、连击键处理、双键互锁等功能。芯片与VDX-6354的接口仅需4根信号线,方便了驱动程序的设计和应用层程序的编写。
通过winio函数库可以使32位Windows应用程序直接访问硬件I/O端口,方法是在Visual C++编译环境下将winio.lib添加到所建立的工程中,在使用winio函数时需要调用初始使化函数bool _stdcall InitializeWinIo( );和关闭函数void _stdcall ShutdownWinIo( )。读取键值的程序结构为:
2.3 串口通信
VDX-6354系统的COM2端口是RS232/422/485复合串口,串口类型和波特率参数可以在BIOS设置中选择,系统选用RS485串口与下位机通信。下位机系统基于MSP430F149芯片,通过MAX3485可以扩展RS485串口。
图3 MSP430F149扩展RS485串口电路图
在本系统中对串口的操作包括串口端口设置、波特率设置、校验位、数据位、停止位的设置。对端口初始化的函数定义如下:
在程序中设置m_ctrl_baudrate.GetCurSel()的值m_baude=115200,设置m_ctrl_databits.GetCurSel()值m_databits=7,指定停止位m_stopbits值为1。
串口接收和发送模块的通信协议功能包括:标志一次通信数据的开始,标志一次通信数据的类型,标志一次通信数据的长度,对一次通信数据进行校验。每一数据帧的格式如图4所示。
图4 数据帧格式
定义起始字节为0AAH,结束字节为0FFH,参数与数据字节均采用HEX码传送,累加校验和是对第二字节到第五字节进行累加和,取单字节并舍去第七位。若校验正确发回确认信号,若校验错误,发回重发信号。
2.4 系统软件主流程
系统开机后,首先启动VDX-6354引导进入Windows Xpe系统,启动上位机应用软件,把所涉及到的硬件驱动静态加载进内核中,以备系统主程序在运行时调用。系统主程序流程如图5所示。
图5 主程序结构流程图
系统主程序启动后,首先进行自检,通过后即调用监控函数,对从下位机传送过来的需要监控的数据进行循环监控。当达到或超越设置的阈值时启动报警。同时,不断进行键盘扫描,根据键值不同判断要执行的任务类型并执行。系统涉及到的相关功能还包括参数设定、关机等。
3 下位机应用层设计
下位机系统软件采用嵌入式μC/OS-II作为平台,对多路数据采集和发送以及电器驱动进行多任务调试,并完善添加了与多任务操作系统相关的一些系统服务。
3.1 任务划分与优先级确定
本系统中,µC/OS-II通过OSTaskCreate()建立4个优先级不同的任务。初始化任务TaskIint()的主要功能是系统自检,优先级定义为1,系统上电后执行此任务;第2个任务是TaskUartGet(),主要功能是通过串口接收上位机指令,为了防止接收命令时被其他任务打断,将其优先级定义为2;第3个任务是TaskWork(),优先级定义为3,此任务由主控模块完成,具有较强的实时性,它是一个无限循环,执行周期为20ms;第4个任务是TaskDataSend(),向串口发送数据,优先级定义为4,为程序中优先级最低的任务。
3.2 任务调度与通信
本系统中定义的3个任务调度和通信:系统上电后首先执行任务TaskIint(), 在初始化任务执行完成并返回正常的情况下利用OSTaskDel()函数将该任务返回并处于休眠状态。此时TaskUartGet()成为优先级最高的任务,执行此任务,通过串口接收来自上位机的指令参数,之后执行OSTimeDlyHMSM(0,0,0,50)函数延迟50ms, 在TaskUartGet()挂起中循环执行TaskWork()任务,使用OSTimeDlyHMSM(0,0,0,20)函数延时20ms,即任务TaskWork()将CPU的控制权交给其他任务。当任务TaskWork()执行20次后,向任务TaskDataSend()发送一次消息,消息中包含需要与上位机通信的数据,在TaskWork()挂起中的20ms中,TaskUartSend()运行,实现向上位机发送数据。任务调度与通信伪代码结构如下:
4 结束语
本系统以VDX-6354、MSP430F149、Windows Xpe、μC/OS-II操作系统为硬件及软件核心,提出了一种注塑机控制器的设计方法,并着重阐述了软件部分的设计过程。目前,系统已经基本调试完毕,通过了硬件性能检测。通过实验测定,表明系统符合功能上的预期要求,可以满足实际应用需要,同时预留了相关硬件接口,使系统具有良好的扩展性。系统实现了PC/104结构的嵌入式技术在工业注塑机控制器上的应用,同时也是其他工业控制器设计方案的参考。
[1]张武,张春华,唐劲松.基于PC104 Plus 总线数据采集系统设计与实现[J].微计算机应用,2006,(4).
[2]储世玉.基于PC104总线的检测仪研制[J].计算机仿真,2003,(12).
[3]Jean J.Labrosse,邵贝贝,等.嵌入式实时操作系统μC/OS-2(第2版)[M].北京:北京航空航天大学出版社,2003.
[4]张国雄,金篆芷.测控电路[M].北京:机械工业出版社,2001.
[5]李现勇.Visual C++串口通信技术与工程实践[M].北京:人民邮电出版社,2004.
[6]周立功公司.zlg7289串行接口8位LED数码管及64键键盘智能控制芯片[Z].
[7]ICOP Technology Inc. VDX-6354/VDX-6354-PLUS User's Manual[Z].
[8]Hur S H,Kim D W,Park G T.Building automation system via Lon Works and Linux based personal computer[J].Automation in Construction,2006,15(4).