Windows CE设备与PLC串行通信的实现

发布者:caoda143最新更新时间:2012-03-26 来源: 微计算机信息关键字:WindowsCE  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[page]

1.2 使用多线程和通讯事件来的编程方法

对于桌面Windows来说,串行通信有查询、重叠I/O、及事件驱动的三种编程方法可供选择,由于Windows CE不支持重叠I/O方式,并且考虑到对于接收串口数据来说,由于串行通信数据到来的时刻通常是随机的,采用查询方式来读取串口的内容将非常浪费嵌入式系统宝贵的CPU时间和系统资源。所以需要采用多线程与通讯事件结合的方法,以提高程序的执行效率并减少系统的资源消耗。

当串行通信建立起来之后,创建一个线程专门进行串口的读操作。在该线程内部通过调用Windows CE平台提供的API函数WaitCommEvent来等待通信事件的发生,当串口上没有数据到来时,WaitCommEvent的内部操作会使该线程被操作系统挂起,从而不占用系统运行时间。当串行通信上有数据到来时,该线程又会被系统调度,转到运行模式接收串行的数据。这样从而实现自动高效的接收串行数据。

对于发送串行数据来说,发送什么数据和什么时刻进行发送都是根据使用的要求来设计,可以把串行通信设计成半双工或者全双工式。要在Windows CE下实现全双工通信需要再建立一个发送线程直接进行向串口发送数据即可,这就在桌面Windows平台下实现全双工通信的方式有所不同,在桌面 Windows下串行通信的全双工通信不能直接使用两个线程同时进行接收,只能通过重叠I/O的方式进行,否则会因为读“线程”的对串口资源的等待而造成 “写线程”发生“死锁”的现象。但在Windows CE下由于其线程调度机制的不同,不需要使用也不支持重叠I/O的方式,读写两个线程可以同时“并行”而并不会发生“死锁”[5]。具体的分析可以参考文献5的关于Windows CE线程调用的分析,在这里由于篇幅的关系就不做详述。通过上面的分析可以看出在Windows CE下实现串行通信全双工通信比桌面Windows 平台下编程更为简单,通信的实时性、效率也更高。

1.3 在Windows CE内部全部使用Unicode 编码,发送字符串时要进行编码转换

由于Windows CE的内核全部是采用Unicode编码来编写的,即不同于ANSI的单个字节进行编码的方式,所以通过串行通信发送字符串时,需要在两种编码之间进行转换。对于ASCII字符可以把单个字节的字符通过在高字节补零直接扩展为两个字节,对于非ASCII字符则可以通过调用Windows CE的API函数MultiByteToWideChar及WideCharToMultiByte来实现非Unicode字符向Unicode字符的转换。

2 Windows CE系统设备与PLC组成的串口通信的实现

由上面的分析可知,Windows CE系统对串行通信提供了强有力的支持。通过在应用程序中使用多线程并结合其串行通信API就可以很方便的实现全双工或半双式形式的串行通信。针对PLC 提供的串行通信功能较简单,编程不方便的特点,需要在Windows CE设备一端设计出更灵活并适合于PLC通信的通信方式来完成其的通信要求。具体到数控切纸中应用中,PC104是上位机即Windows CE设备,当与PLC进行通信时,由于操作命令和用户输入都由是上位机发起的,通过实现一种PC104发起PLC应答的半双工的串行通信方式就可以满足对数控切纸机的电气和运动控制的需要,并且较之全双工的通信方式也更节约系统资源。下面就对PLC端的串行通信形式和特点做一下说明。并对Windows CE设备与PLC结合进行通信的程序流程和通信协议进行详细的分析。

2.1 PLC端的通信协议的分析

对于PLC来讲,市场上主流PLC的都提供基本相近的通信功能,本文就举三菱公司的FX2n系列PLC对其的串行通信进行说明。根据使用的通信模块与协议不同FX2n系列PLC的串行通信可以有分为以下两种通信模式[3][4]:

1)专有协议的串行通信方式

在这种通信方式下,无须使用梯形图,通信发起端可以直接读写操纵PLC内部的单元,但必须通过PLC指定的通信协议(dedicated protocol),通信的效率较低,实时性不够,上下位机的独立性不够好。

2)无协议串行通信方式(RS指令方式)

这种通信方式使用专用通信模块FX2N-232-DB与PLC连接,在PLC的梯形图程序中采用RS指令方式来驱动串行通信。RS指令举例如下表所示:

RS

D200

D2

D100

D1

通信指令

发送数据地址

发送个数

接收数据地址

接收个数

通过RS指令可自定义通信协议,通信过程简单,系统实时性高。对嵌入式系统来说通常要采用在该协议下完成的串行通信。[page]

2.2 双方通信程序的设计

根据对数控切纸机控制系统的机械、电气、开关量等控制要求,上下位机之间要就多种不同的数据、指令进行交互。并且这些数据、指令的数据位的长度不同。举其中的机器状态、机器参数、控制命令三种常见的指令为例。机器状态要求下位机不间断发送的机器的实时状态,一般包含数据量不大。机器参数往往是在开机发送或者重新设置了机器的参数时发送,机器参数的数据个数较多,但发送的次数较少。控制命令,只有操作者通过控制面板上的操作时才会发送,它发送的内容也不多,发送频率也较低。但由于使用Fx2n PLC的RS数据通信时,在每次进行通信时,必须知道本次要接收内容的个数。如果把不同类型的数据采用定长结构的发送方式,程序设计起来较为简单,但是其中包含了大量的无用数据,发送的效率较低。所以在进行PLC通信时,定义了下面的通信的协议形式:

本次通信标志

下次发送的个数

本次发送内容

结束标志

其中协议中具体含义如下表所示:

协议内容

含义

本次通信标志

AA:机器状态

AF:机器参数

AC:控制命令

下次发送的个数

用于PLC确定下次接收的个数

本次发送内容

DATA

结束标志

FF

表2 通信协议的格式

这样,通过在本次通信中加入下次通信的个数,在PLC端可以通过程序判定确定下次发送内容的个数,进行处理。这样可以提高发送的效率,保证数据的实时性。具体的发送流程如下图所示。

图3 通信流程图

2.3 对数据接收缓冲区的处理

通过研究Windows CE提供的驱动程序代码可以看出,驱动程序通过维护内部的软件缓冲区来保障当应用程序不能及时响应数据到来时,数据会先保存在驱动程序的数据缓冲区中,而不会发生数据丢失的现象。但是对于实时响应要求很高系统来说就是有害的。这样最新到来的数据不能被应用程序及时处理,而被堆放到了缓冲区的后部等待前面的数据处理完成后才能被处理,降低系统的实时性。为了减少驱动程序数据缓冲区对系统实时性的影响,可以通过在串行通信的程序中加入对串行API函数 PurgeComm的调用来及时清除缓冲区的内容,以保证新到的数据及时被应用程序处理,提高通信的实时性。

3 总结

本文详细分析了在Windows CE下进行串行通信的特点,并设计了Windows CE与PLC进行串行通信的程序流程和通信格式。实现了通过串行通信连接的由Fx2n PLC与PC104模块组成的上下位机控制系统,整套系统已经成功的应用到了高档数控切纸机的电气和运动控制。产品经过了用户的长期检验和国家的技术鉴定,合作企业三年内已经取得近600多万元的经济效益。充分证明了整个系统结构的可行性和可靠性。并且可以通过借助Windows CE的可移植性和强大的网络功能以及PLC通用性等特点,把这种通过串行通信连接构成的上下位机结构方式应用推广到其它类似的机电一体化产品中的控制系统应用之中。

参考文献:

[1] Microsoft Corporation, Platform Builder for Windows CE 5.0 Help [OL], 2004.

[2] Douglas Boling, Programming Windows CE [M], 2001.

[3] Mitsubishi Electric Corporation, FX2n series Programmable Controller User's Manual [M], 2001.

[4] 田书峰,李欣.单片机与三菱PLC无协议串行通讯的实现[J],微计算机信息,2005,(10).

[5] 陈向群,王雷等,Windows CE.NET 系统分析及实验教程[M],机械工业出版社,2002.
关键字:WindowsCE  PLC  串行通信  数控切纸机 引用地址:Windows CE设备与PLC串行通信的实现

上一篇:嵌入式Linux实时技术改进与实现
下一篇:嵌入式实时操作系统PetOS设计与实现

推荐阅读最新更新时间:2024-05-02 21:58

PLC中模拟量信号的处理方法
自动化项目开发过程中,对模拟量的处理是经常遇到的应用场景。如温度测量、压力测量、液位测量、流量测量等,均为模拟量信号传输。在这些信号形式上,又区分为电流信号和电压信号;在信号的范围上,又有-5V~+5V、0V~5V、-10V~10V、0V~10V、0mA~20mA、4mA~20mA等。然在PLC上又是如何处理这些不同类型的信号的?下面就给大家分享在PLC中是如何处理这些模拟量信号的。 压力变送器-模拟输出 PLC与模拟量变送器的接线如下图所示: 台达PLC的模拟量模块接线图 在以上图片中,可以看到PLC的一个通道既可以接收电压输入信号亦可以接收电流输入信号(绝大部分的PLC均是这样)。在进行接线设计的时候,依照变送器的
[嵌入式]
<font color='red'>PLC</font>中模拟量信号的处理方法
浅谈PLC编程容易忽略的延时问题
PLC在机械加工类的专用设备中有很大的应用,然而有一个问题常常被初入门的编程人员忽略,即延时问题。 简单的说,以气缸为例,PLC判断动作有没有完成是依靠限位开关的(有些不重要的地方也有靠延时的),而限位开关如磁环检测开关,有一定测量范围,换句话就是说,PLC判断动作已经完成而事实上机构动作还没有完成。如果在机械加工中不重视这个问题,那么加工的精确性会大打折扣,出现残次品。 每一步的动作完成,需要加一个延时,以保障动作的完成,一般就200-500ms吧,气缸特别大的可以增大。
[嵌入式]
浅谈<font color='red'>PLC</font>编程容易忽略的延时问题
如何消除变频器对PLC模拟量的干扰
在控制系统中,使用PLC的模拟量控制多台,由于变频器本身产生强干扰信号的特性和模拟量抗干扰能力不与数字量抗干扰能力强的特性;因此为了最大程度的消除变频器对模拟量的干扰,在布线和接地等方面就需要采取更加严密的措施。     一.关于布线   1.信号线与动力线必须分开走线  使用模拟量信号进行远程控制变频器时,为了减少模拟量受来自变频器和其它设备的干扰,请将控制变频器的信号线与强电回路(主回路及顺控回路)分开走线。距离应在30cm以上。即使在控制柜内,同样要保持这样的接线规范。该信号与变频器之间的控制回路线最长不得超过50m。   2.信号线与动力线必须分别放置在不同的金属管道或者金属软管内部   由于水系统的两台富士变频器离控制柜
[嵌入式]
50个经典的西门子300PLC问题
1:使用CPU 315F和ET 200S时应如何避免出现“通讯故障”消息? 使用CPU S7 315F, ET 200S以及故障安全DI/DO模块,那么您将调用OB35 的故障安全程序。而且,您已经接受所有监控时间的默认设置值,并且愿意接收“通讯故障”消息。 OB 35 默认设置为100毫秒。您已经将F I/O模块的F监控时间设定为100毫秒,因此至少每100毫秒要寻址一次I/O模块。但是由于每100毫秒才调用一次OB 35,因此会发生通讯故障。要确保OB35的扫描间隔和F监控时间有所差别,请确保F监控时间大于OB35的扫描间隔时间。 S7分布式安全系统,一直到V5.2 SP1 和 6ES7138-4FA00-0AB0,6 ES
[嵌入式]
50个经典的西门子300<font color='red'>PLC</font>问题
使用用三菱小软件读取三菱PLC数据的方法
在有些工程中,三菱PLC处理的一些数据要求能保存下来,可以以后查询,这样可以实现的方法有在电脑中做一些界面和三菱PLC通讯,读取数据,这样做的方式比较费时、费力,但做出的界面可以很好看,但无为拉简单的应用,可以选用三菱提供的两个小软件很容易实现在电脑上读取保存PLC的数据,或是可以向PLC写入设定的数据。 三菱提供了MX Sheet软件,MX Sheet是一种通讯支持软件,无须程序,只通过简单的设置即可使用Excel收集。安装好MX Sheet,就会在Excel中多出一个MX Sheet的工具栏,通过设置,就可以把PLC的数据读到Excel表格中。 MX Sheet工具栏如图 通过设置后可以把PLC数据读出的效果如图,也
[嵌入式]
PLC和触摸屏在低封炉控制系统的应用
1 引言 低封炉是CRT生产过程中重要环节之一,主要用于通过焙烧使屏锥封接。它一般包括炉体、驱动装置、置换装置及炉上栏杆踏台等几部分。炉体包括炉本体、网带导轨、RC风机以及加热器等几部分。炉本体由优质碳素钢及不锈钢组成,内填保温棉,循环风道由不锈钢内腔板组成。RC风机起搅拌作用,使炉内温度均匀性好。加热器由优质电热丝和不锈钢框架组成,起到恒温作用。驱动部设有自动张紧装置及网带跑偏调节机构,主要是通过变频器实现网带速度连续可调,使工件在炉体内匀速移动。 下面以BMCC5L低封炉延长为例说明其控制系统部分的实现,它主要包括低压受电柜,3个加热柜和温控柜。其工作原理是:低压受电柜提供炉上风机、热丝等电源,通过温控柜内的控温器设定温度,用
[嵌入式]
数控系统和台达PLC在某刀具研磨机之项目应用方案
本文主要介绍了中达电通H4数控系统和台达PLC,在客户上海某五金刀具有限公司的使用情况,并用两种产品的巧妙组合,实现了五轴专用磨刀机的特殊需求。 某刀具研磨机主要是用来加工铣刀和钻头的高精度工具磨床,是由五个轴组成的。其中X,Y为机台的横向和纵向运动轴,Z为棒料分度轴是个旋转轴,这三个轴控制刀具的加工。X1为料盘移动轴控制料盘的左右移动,Y1为机械臂上升轴控制机械臂升降。     图一 中达H4数控系统及专用磨刀机 一、工艺要求和精度要求 分度要求,当加工时分度轴旋转分度主要有两个工艺要求,一是在加工过程中不允许改变分度方向,只能单向旋转用以消除机械设备的反线误差;二是分度加工时对沟槽加工的顺序有特殊要求
[嵌入式]
如何选择PLC 选择PLC要考虑什么
PLC存储器容量的估算存储器容量是指可编程序控制器本身能提供的硬件存储单元大小,各种PLC的存储器大小可以从该PLC的基本参数表中找到,例如:西门子的S7-1214C的用户程序存储器为100KB,S7-1215C的用户程序存储器为125KB。用户存储器是用户程序所使用的存储单元的大小,因此存储器容量应大于程序容量。设计阶段,由于用户应用程序还未编制,因此,需要对程序容量进行估算。如何估算程序容量呢?一般情况都是按数字量I/O点数的10~15倍,加上模拟量I/O点数的100倍,以此数为内存的总字数(16位为一个字),另外再按此数的25%考虑余量。 PLC通讯功能的选择现在PLC的通讯功能越来越强大,很多PLC都支持多种通讯协议(
[嵌入式]
小广播
热门活动
换一批
更多
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved