随着信息技术的发展,智能化、信息化、网络化成为现代工业控制的发展潮流。20世纪80年代以来,开放的工业控制总线迅速发展,彻底改变了世界的技术面貌,在此基础上通过网络连接到分散控制和嵌入式设备的控制技术逐步发展成熟,远程I/O就是在这种条件下发展的一类产品,可以分散配置在现场,连接当地的输入输出信号,实现要求的配置。

在工业控制领域,现场总线技术将控制功能彻底下放到现场。MODBUS是现场总线的国际标准之一,符合IEC物理层标准,有冗余的物理总线网络和严格的控制信息传输机制。

实时工业现场开关量数据的采集给开发者提出了广泛的要求,包括较高的处理性能,低功耗,高速数据I/O,较高的存储能力,高可靠性等。而种类繁多的ARM处理器具有成本低、功耗低、易开发和性能好等特点,可开发出较佳性能的控制采集系统。S3C2440就是其中的一种工业级ARM微处理器,具有性价比高,可靠性高等特点,因此选用它做为系统开发的硬件平台。

Linux操作系统由于其开源、精简而高效的内核,丰富的网络性能以及对多种处理器结构的支持,使其在嵌入式工业控制领域得到了广泛的应用,而实时处理工业现场开关量数据是工业控制领域的主要应用之一。

本文“基于现场总线的开关量I/O模块的设计”实现了一个完整的通用嵌入式系统开发平台。介绍了基于MODBUS现场总线的开关量I/O模块,此模块连接了MODBUS现场总线和传统的开关量控制设备。首先简要介绍了系统总体方案设计,在此基础上,把系统设计分为硬件设计和软件设计两大部分。

系统硬件首先对A RM处理器和S3C2440微处理器进行了简单的介绍,重点论述了S3C2440处理器与存储器(Nand和SDRAM)、RS485、GPIO等接口的设计,对开关量输入输出电路进行了深入分析,可同时进行16路开关量的输出和采集,并对硬件做了相关的调试。

系统软件分为上位机和下位机两部分:上位机以Windows XP为开发平台,采用VC++软件设计界面,利用MSComm控件进行MODBUS串口编程,具有操作简单,配置灵活的特点;下位机以嵌入式Linux为核心平台,首先构建嵌入式Linux,主要包括bootloader、内核的编译与移植以及嵌入式Linux下文件系统的构建。接着对MODBUS协议的移植和字符设备驱动程序(串口、GPIO )做了深入分析,重点用C语言实现了基于RS485接口的MODBUS串口编程,给出了软件流程图及核心代码,并对软件进行了调试。

1.1引言

近几十年来,工业控制系统从传统的集中控制系统,过渡到分散控制(DCS)系统,但DCS仍是集中与分散相结合的控制体系。进入90年代,随着计算机技术及计算机网络技术的飞速发展,出现了现场总线,现场总线与传统DCS相比具有更多优势,并能带来巨大的经济效益。根据国际电工委员会IEC61158标准的定义:安装在制造或生产过程区域的现场装置与控制室内的自动控制装置之间的数字式、串行、双向、多点通信的数据总线称为现场总线。由现场总线与现场智能设备组成的控制系统称为现场总线控制系统FCS(Fieldbus Control System )。

衡量一个控制系统是否为真正的现场总线控制系统FCS有三个关键要点,即:核心、基础和本质。FCS的核心是总线协议,只有遵循现场总线协议的控制系统,才能称为现场总线控制系统;FCS的基础是数字智能现场仪表,是FCS的硬件支撑;FCS的本质是信息处理现场化,这是FCS的系统效能体现。

FCS与DCS的本质差异在于现场级设备的数字化、网络化,实现了控制装置与现场装置的双向通信,消除了生产过程监控的信息“盲点”。

与DCS相比FCS有如下显著优点:

●DCS有I/O模件控制柜,FCS很少。这样就省去了中间环节,降低了系统成本,节省电缆及相关的材料和安装费用。

●FCS使用数字通信,传输数据更准确,信息量更大。

●DCS就像PC机,设备越多,性能越差,FCS就像PC机构成的网络,总线上的设备越多,在总线通信速率足够快的情况下,FCS功能越强。

●具有可互操作性、可互换性,克服传统DCS和PLC等含有专利性技术的控制系统所带来的封闭性问题,降低工程项目的建造和运营成本。

但是在生产力发展到一定阶段之前,并不是先进的技术就一定要完全取代落后的技术。不同层次的技术有它应用的领域,可以允许FCS ,DCS ,PLC等技术共同存在,一些场合并不一定非要先进的技术。只要其能在特定的地方发挥相应的功能就行。所以讨论谁取代谁并没有实际的意义。从这个角度讲,本论文的基于现场总线的开关量I/O模块并不是一个过渡产品,在现场总线技术深入到仪表之后,开关量I/0模块还可在适当的地方使用。

1.2研究背景

技术的发展和更新换代是一个缓慢和逐步接受的过程,FCS不可能很快取代现有控制系统。在FCS逐步推广的过程中,将所有设备全部采用FCS的可能性不大,这样就不可避免地要与已有的设备进行连接。

唯有比较才可体现FCS的优越性,将传统仪表集成到FCS系统也可以说是FCS发展中的一种策略。在比较中可以体现出FCS控制系统的优越性,这样能够促进用户使用FCS的积极性。

从生产现场实际情况来讲,生产现场有许多需要开关量控制和开关量显示的设备。如电机启动停止控制、电机行程反馈、变频器控制和变频器反馈、温度开关、压力开关、逆止门电磁铁指令和电磁铁状态反馈等。而现场总线设备可能暂时还没有相应产品,或者客户有传统设备的库存,这就需要将己有的设备集成到FCS.

另外,从成本考虑,现有的FCS设备成本大大高于常规仪表。有些设备的控制并不一定需要FCS设备,这样就要用常规设备实现控制功能。这就需要把常规设备集成到FCS中来。因此采用开关量I/O装置就成为一个很好的选择。

本文要设计的现场总线的开关量I/O模块是完成MODBUS现场总线与传统开关量设备互连的控制装置。尤其适合将传统工业的控制系统与FCS控制系统结合,在所有现场设备未全部与现场总线融合之前,对企业原有设备与现场总线连接方面有很大的现实意义。

因此,基于以上考虑,有了市场和技术的巨大需求开发基于MODBUS的开关量I/O模块成为必然。

1.3研究路线及内容结构

现场总线技术的研究,是目前工业控制领域的重要前沿,是当前国内外都非常热门的研究方向。针对这种情况,本论文从现场总线上一个开关量输入输出模块的设计着手,对其进行设计与实践,并对MODBUS现场总线技术做了初步的接触。

MODBUS的开关量I/O模块放在现场,实现传统仪表、执行器与FCS的连接。本论文的目的是制作一个实现基于MODBUS的开关量输入、开关量输出的模块。

1.3.1研究路线

本文主要是研究和实现一种基于现场总线的开关量I/O模块。根据需求,本模块采用基于ARM9的S3C2440微处理器作为硬件开发平台,嵌入式Linux2.6作为系统软件开发平台,通过串口RS485,应用MODBUS现场总线协议,实现与上位机控制中心PC机与I/O模块间的远程通信,从而使控制中心能够得到所需要的数据;通过可用的G PI O来控制传统开关量的采集与控制,并通过控制中心来配置输入输出的个数,键盘用来做本地测试。

1.3.2内容结构

本文的章节安排如下:

第一章绪论:概述了课题研究的背景以及应用领域,阐述了本论文研究的目的和意义、研究路线以及论文的架构安排。

第二章MODBUS现场总线技术综述:简单介绍了MODBUS现场总线的特点,详细阐述了MODBUS现场总线的通信原理。

第三章总体方案设计:重点阐述了系统硬件和软件的设计方案。

第四章开关量I/O模块硬件结构设计:采用ARM S3C2440作为系统微处理器,设计了存储电路、电源电路、RJ45网口,JTAG接口、键盘模块、输入输出模块、RS485接口、复位电路、时钟电路,完成系统硬件设计。

第五章操作系统移植与驱动开发:完成了嵌入式Linux操作系统的构建,移植了MODBUS总线协议,实现了字符设备驱动程序。

第六章开关量I/O模块软件结构设计:分上位机和下位机两部分,介绍了基于MODBUS的串口编程,完成应用程序的开发。

第七章结论:总结了本文的工作,指出了进一步研究的重点。

1.4关键技术分析

1.4.1现场总线技术现场总线的概念是随着微电子技术的发展,数字通信网络延伸到工业过程现场成为可能后,于1984年左右提出的。现场总线是面向工厂底层自动化及信息集成的数字化网络技术。现场总线类型主要有:FF、ProfiBus、ControlNet、P-NET、InterBus、CANModbus等。这些总线各有各的规范,互不兼容。

现场总线控制系统有如下主要优点:

(1 )全数字化。在采用现场总线控制系统的企业中,用于生产管理的局域网能够与用于自动控制的现场总线网络紧密衔接。此外,数字化信号固有的高精度、抗干扰特性也能提高控制系统的可靠性。

(2 )全分布。在现场总线控制系统中,各现场设备有足够的自主性,它们彼此之间相互通信,完全可以把各种控制功能分散到各种设备中,实现真正的分布式控制。

(3 )双向传输。对于传统的4-20mA电流信号,一条线只能传递一路信号。现场总线设备在一条线上则可以向上传递传感器信号,也可以向下传递控制信号。

(4 )自诊断。现场总线仪表本身具有自诊断功能,而且这种诊断信息可以送到中央控制室,以便于维护,而这在只能传递一路信号的传统仪表中是做不到的。

(5 )节省布线及控制室空间。传统的控制系统每个仪表都需要一条线连到中央控制室,在中央控制室装备一个搭配线架。而在FCS系统中多台现场设备可串行连接在一条总线上,只需较少的线进入中央控制室,这样就大量节省了布线费用,同时也降低了中央控制室的造价。

(6 )多功能仪表。数字双向传输方式使得现场总线仪表可以摆脱传统仪表功能单一的制约,可以在一个仪表中集成多种功能,做成多变量变送器,甚至集检测、运算、控制于一体的变送控制器。

(7 )开放性。1999年底现场总线协议已被IEC批准正式成为国际标准,从而使现场总线成为一种开放的技术。

(8 )互操作性。现场总线标准保证不同厂家的产品可以互操作,这样就可以在一个企业中由用户根据产品的性能、价格选用不同厂商的产品,集成在一起,避免了传统控制系统中必须选用同一厂家的产品限制,促进有效的竞争,降低控制系统的成本。

(9 )智能化与自治性。现场总线设备具有很高的智能,能处理各种参数、运行状态信息及故障信息,甚至能在部件、网络故障的情况下独立工作,大大提高了整个控制系统的可靠性。

现场总线突破了DCS系统中因专用通信网络的封闭造成的缺陷,采用开放化、标准化的解决方案,把来自不同厂商而遵守同一协议规范的自动化设备连接成控制网络,组合成各类控制系统,实现综合自动化的各种功能。其突出特点是开放性、分散性与数字通信。

1.4.2嵌入式技术

●嵌入式系统

根据IEEE (国际电气和电子工程师协会)的定义,嵌入式系统是“以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能”。在当前数字信息技术和网络技术高速发展的后PC时代,嵌入式系统已经广泛地渗透到科学研究、工程设计、军事技术、工业控制等方方面面中,而且工业控制是嵌入式系统重要的应用领域。

嵌入式系统的主要特点:

(1 )系统内核小。嵌入式系统通常是面向特定应用的嵌入式CPU,通常都具有低功耗、体积小、集成度高等特点,系统资源相对有限,所以内核较之传统的操作系统要小得多,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强。

(2 )专用性强。嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植。

(3 )系统精简。嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余。

(4 )具有实时性的系统软件(OS)是嵌入式软件的基本要求。软件代码要求高质量和高可靠性。

(5 )支持多任务。嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。

嵌入式系统的应用程序可以没有操作系统而直接在芯片上运行:但是为了合理的调度多任务。利用系统资源、系统函数以及专家库函数接口,用户必须自行选配RTOS( Real-Time Operating System )开发平台,这样才能保证程序执行的实时性、可靠性并减少开发时间。

(6 )嵌入式系统开发需要专门的开发工具和环境。由于嵌入式系统本身不具备自主开发能力,即使设计完成后,用户通常不能对其中的程序功能进行修改,因此必须有一套开发工具和环境才能进行开发。开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发是需要交替结合进行。

●嵌入式操作系统

嵌入式操作系统就是支持嵌入式系统工作的操作系统,是嵌入式应用软件的基础和开发平台。它是一段嵌入在目标代码中的软件,用户的其他应用程序都建立在操作系统之上,它在知识体系和技术本质上与通用操作系统没有太大的区别,一般用于比较复杂的嵌入式系统软件开发中。由于大多数嵌入式系统应用在实时环境中,因此嵌入式系统一般具有实时特点。

嵌入式操作系统是嵌入式系统的灵魂,它的出现大大提高了嵌入式系统开发的效率,减少了系统开发的总工作量,而且提高了嵌入式应用软件的可移植性。为了满足嵌入式系统的需要,嵌入式操作系统必须要包括操作系统的一些最基本的功能,如中断处理与进程调度,用户可以通过应用程序接口(API)来使用操作系统。

●嵌入式开发过程

在嵌入式开发过程中有宿主机和目标机之分:宿主机是执行编译、链接、定址过程的计算机;目标机指运行嵌入式软件的硬件平台。首先须把应用程序转换成可以在目标机上运行的二进制代码。这一过程包含三个步骤:编译、链接、定址。编译过程由交叉编译器实现。所谓交叉编译器就是运行在一个计算机平台上并为另一个平台产生代码的编译器。常用的交叉编译器有GNUC/C++ (gcc)。编译过程产生的所有目标文件被链接成一个目标文件,称为链接过程。定址过程会把物理存储器地址指定给目标文件的每个相对偏移处。该过程生成的文件就是可以在嵌入式平台上执行的二进制文件。常用的集成开发工具有ADSl.2等。

嵌入式开发过程中另一个重要的步骤是调试目标机上的应用程序。嵌入式调试采用交叉调试器,一般采用宿主机-目标机的调试方式,它们之间由串行口线或以太网或BDM线相连。交叉调试有任务级、源码级和汇编级的调试,调试时需将宿主机上的应用程序和操作系统内核下载到目标机的RAM中或直接烧录到目标机的FLASH中。目标监控器是调试器对目标机上运行的应用程序进行控制的代理( Debugger Agent),事先被固化在目标机的Flash、ROM中,在目标机上电后自动启动,并等待宿主机方调试器发来的命令,配合调试器完成应用程序的下载、运行和基本的调试功能,将调试信息返回给宿主机[5 ]。