基于嵌入式操作系统的Modbus通信卡设计

(整期优先)网络出版时间:2022-09-22
/ 2

基于嵌入式操作系统的Modbus通信卡设计

郭胜芳,董红旗,布少帅

天津海服机电服务有限公司,天津市 266012

摘  要:针对传统嵌入式系统软件设计中采用的前/后台系统实时性、安全性较差的情况,引入嵌入式实时多任务操作系统,并设计了系统监视任务,提高了系统的可靠性和实时性;较详细地给出系统软件的设计思路,以及软件中各任务的具体运行过程。

关键词:  嵌入式操作系统  实时  多任务

1. 引言

以前我们一般所使用的系统,称为前/后台系统(foreground/background)或超循环系统(super-loops)。在这种系统中,应用程序是一个无限的循环,循环中任务函数按在代码中的顺序运行,处理相应的事务,这部分看成后台行为,中断服务程序处理异步事件,这部分称为前台行为。时间相关性强的关键操作靠中断服务来保证,但是当系统比较复杂、中断资源有限时,中断程序只能将处理该任务的信息条件准备好后返回,等到后台程序按顺序执行到该任务时,任务才得以执行,所以任务每次的执行时间间隔是不定的,系统的实时性和可靠性较差。

嵌入式操作系统是一种实时操作系统,它具有良好的实时性和可靠性,用户只需添加所需的任务到操作系统中即可,既可节省开发时间,又提高了程序的实时性、可靠性[1]

2. 硬件系统设计

    Modbus通信卡采用PHILIPS公司的P89C51RD2HBP作为处理器该终端从功能上可分为数据采集部分,液晶显示及键盘阵列部分,通信部分及微处理器小系统部分。数据采集部分用来对电压、电流信号进行采样和A/D转换;液晶显示和键盘阵列为人机信息交换的硬件接口;通信部分用来与上位机进行数据交换。

3. 嵌入式系统的软件设计

3.1  任务的划分

根据Modbus通信卡实现的功能进行系统任务的划分,并确定各任务的优先级。Modbus通信卡要实现的功能如下:

①处理液晶显示和键盘扫描,响应按键命令,优先级高;

② 网络通信功能,通过RS485通信接口实现Modbus通信协议,接入工业局域网,优先级次高;

③ 对电压、电流信号进行采样,A/D转换,优先级低;

④ 对所采集到的数据进行计算分析,得出各种监测指标参数,优先级最低。

根据以上要实现的任务,划分系统的任务如图1所示,本系统采用静态优先级,即运行过程中任务的优先级不变。

图1 系统设计任务划分图

图1中的系统任务即嵌入式操作系统的内核,它提供任务调度、任务管理、时间管理、任务间的通信及同步和中断管理等功能。硬件驱动作为硬件或软件中断管理。用户任务中的系统监视任务用来监视其他任务,提高系统的可靠性。

3.2 任务的状态及任务调度

嵌入式实时操作系统中任务可以分为休眠态、就绪态、运行态、中断态和挂起态5种状态。任务状态的转换关系如图2所示。

图2 任务状态转换图

在嵌入式系统中,为节省存储器空间不会保留休眠态的任务。当一个任务占用CPU时,该任务处于运行态,其优先级一定是所有就绪态任务中优先级最高的。某一时刻只有一个任务处于运行状态。

挂起态的任务等待某一事件的发生(可能是消息阵列,也可能是信号量),等待时间可由系统设定。在所规定的时间内,如果得到所期待的数据,任务就转为就绪态,否则,就被时间管理函数强行转化为就绪态,等待任务调度。

中断发生时,运行态任务被强行转入中断态,丧失对CPU的使用权。因中断可能发送消息使挂起态的任务转为就绪态,所以中断返回后要执行任务调度函数,使最高优先级的任务转为运行态。

为保证系统的实时性,嵌入式操作系统采用抢占式内核,即操作系统总是运行就绪态任务中优先级最高的任务,任务调度发生在以下2种情况:

① 当某一任务运行完毕时就调用延时函数,使自身延时一个或几个时钟周期,此时发生任务调度;

② 每一次时钟周期中断后,或其他中断程序处理事务后,可能使一些任务运行准备就绪,此时重新整理和搜索任务就绪表,进行任务调度。

3.3  任务的结构

嵌入式实时操作系统中每个任务都是一个无限的循环,分别实现某一特定的功能。任务均由三部分组成:应用程序、任务堆栈以及任务控制块。其中只有应用程序被烧入ROM,而任务本身则被置于RAM,待系统运行时再予建立。

任务堆栈用以存储CPU寄存器的内容。当某任务由运行态变为其它状态时,CPU寄存器内容压入相应任务堆栈,反之则将相应任务堆栈内容置入CPU寄存器。

任务控制块是系统定义的一个数据结构,内容包括任务堆栈的地址、任务当前状态、任务优先权等。当任务的CPU使用权被剥夺时,嵌入式用它来保存该任务的状态;当任务重新得到CPU的使用权时,任务控制块能确保任务从当时被中断的那一点继续执行。

3.4  系统监视任务的设计

本系统工作环境干扰相当大,虽已采取许多抗干扰措施如光电隔离,软件陷阱等,仍有可能发生程序跑飞、死机现象,直到看门狗复位才可使系统恢复正常。但在看门狗复位前的这段时间,设备对电压、电流的采样不能正常进行,采样数据会丢失,同时会影响到数据通信。为此本系统采用系统监视任务监督其他任务是否正常运行,若未能正常运行就采取一定措施尽量减少看门狗复位的次数。

系统监视任务的设计思路是:系统监视任务的优先级设为最高,一般它处于挂起态,等待被监视任务向它发送消息。被监视任务在执行完毕前向系统监视任务发送一消息,表明本任务运行正常。若在等待时间内,系统监视任务没有收到被监视任务发送的消息,系统将系统监视任务由挂起态转为就绪态,系统监视任务将采取相应的措施,避免看门狗复位。等待时间根据任务运行所需的最大时间设定。

  1. 结束语

本文将该操作系统及系统监视任务应用于Modbus通信卡中,大大提高了系统的实时性和可靠性,提高了产品性能,达到了产品设计目标。

参考文献:

[1] 王劲松,李正熙,夏旺盛. 嵌入式操作系统嵌入式的内核实现.现代电子技术2003(8)48~50

[2] Jean J.Labrosse著,邵贝贝译.嵌入式实时操作系统嵌入式.北京:北京航空航天大学出版社,2003.5