Windows CE设备与PLC串行通信的实现
Windows CE操作系统是微软公司针对嵌入式系统的特点如内存容量小、运行速度低、实时性要求高等,而设计出的一种紧凑、高效、模块化的嵌入式实时操作系统。 Windows CE可以提供桌面Windows绝大多数系统服务与功能,同时又保持系统体积很小的特点并可以支持应用程序的实时应用。它还支持数据库、 COM(Component Object Model)、Internet等功能的开发,可以使用标准的Windows控件来完成界面设计。支持众多的标准设备接口,并能够移植到多种嵌入式CPU 架构中。选择Windows CE作为嵌入式产品的操作系统较之现有嵌入式系统中软件结构上多采用DOS系统或者无操作系统而言,可以极大的提升了产品的功能,增加用户界面的美观程度,并大大减少了程序开发的工作量。基于上述优点在数控切纸机控制系统设计中可以把Windows CE的设备与PLC相结合使用,构成上下位机系统。如图1所示,上位机由PC104构成,通过在PC104上移植Windows CE系统使其成为Windows CE设备,这样就可以充分利用Windows CE强大的系统功能来完成控制系统中的控制功能程序开发和用户界面设计。下位机通过使用PLC来完成的各种电气控制功能。上下位机之间通过通信的方式来实现控制信息和机器状态信息的交换。高速、实时、稳定的通信是保证系统稳定运行、工作可靠的关键,在结合PLC的特点基础之上,具有普遍性高、编程简单、实时性好等特点的串行通信是上下位机通信形式的一种理想选择方案。下面就Windows CE下如何与PLC实现串行通信的这一问题进行详细的分析。
图1 上下位机系统结构
1 WINDOWS CE下实现串行通信的特点
Windows CE的设计目标就是为了满足嵌入式系统和移动设备的使用需要,所以其系统本身的通信功能比较强大。市场上主流的Windows CE的5.0版本主要提供了三种主要的通信形式:串行通信、网络(其中包括WinSock和TCP/IP)、电话API (TAPI)[1]。在工业控制领域串行I/O和网络通信的使用较多,其中串行通信几乎在所有嵌入式的设备中提供物理器件的支持,硬件电路实现也比较简单。通过研究TCP /IP网络通信和串行通信在ISO通信模型中的描述,如图2所示,可以看出串行通信模型比网络通信模型的实现要简单的多。操作系统只需要实现Data- link layer中的驱动程序和Serial API函数的封装即可,不需要其它的协议支持,这样就使串行通信应用程序的开发要相对简单,系统调用也较少。对于嵌入式环境来说,意味着需要更少的软、硬件资源的开销,也就等于提高了系统的快速性和实时性。
图2 Windows CE通信的ISO模型
1.1 Windows CE提供了完善的串行通信API支持
在Windows CE平台下提供了与桌面Windows平台一致的串行通信操作API[2]。使用这些API可以用于打开、关闭和操作串口,传输和接收数据,以及管理串行连接等。掌握和使用好下面的API函数是串行通信程序设计成败的关键,其中主要使用有API函数及功能如下表所示:
函数名 | 功能 |
CreateFile | 用于打开串口 |
SetCommState | 按定义的DCB结构配置通信设备 |
SetCommTimeOuts | 设置通信设备上所以读写操作的超时参数 |
ReadFile | 向串口读数据 |
WriteFile | 向串口写数据 |
SetCommMask | 设置通讯设备的事件掩码值 |
WaitCommEvent | 等待通信设备发生指定的事件 |
PurgeComm | 清空通信缓存及通信错误 |
CloseHandle | 关闭打开的串行口 |
表1 Serial Communication API
评论