|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
以MCS- -51单片机为硬件系统,基于操作系统的思想,设计了命令进程调用、控制模块数据结构、控制模块队列,选择
`& W) M* Z* B先来先服务调度算法,实现了集散控制系统下位机控制模块的调度。
B& F8 [2 H/ r7 f, m; f1组态生成方式的选择
9 m2 N3 w$ I6 H1 d8 x在集散控制系统(DCS)中,各个控制算法是以控制模块的 A0 Z# U" T+ R" q( F6 ]+ }
形式提供给用户,而用户可以利用系统所提供的模块,用组态软2 p4 a+ j" [2 s4 Z+ I4 w' M( v
件生成自己所需的控制策略,并将该控制策略下装到现场控制
* T( ~! o4 N! I% M, j% q站去运算执行。目前国际上流行的DCS中,控制算法的组态生
. [+ i# }* y' K Q成在软件.上可以分为两种方式:一种方式是在上位机中采用模
- y: @8 V8 [; O* c$ P8 p块宏的方式,即一个控制规律模块对应- - 个宏命令(子程序)。在1 L2 l, Q( ?) o+ T- ]; ~
组态生成时,每用到一个控制模块,在产生的执行文件中就将该
2 V! U, j4 k8 a宏所对应的算法换入执行文件,将最终生成的执行文件下装到, b0 Y u# G* n' B* R i
下位机。另一种方式是将各控制算法编制成各个独立的可以反0 G- V" o: V8 ?* Z8 z$ b; B
复调用的功能模块,对应每-模块有一个数据结构,该数据结构 y5 _3 t! g) ]0 l+ r( r$ s8 ~
定义了该控制算法所需的各个参数,这些模块存储在下位机中,
1 D v1 S& q9 g6 B7 m由下位机的OS根据组态下发的命令进行调用,最终形成控制4 n/ j- b9 K' j \
指令输出。比较这两种方式,后一种方式具有明显的优点:
0 k& T: s/ B4 y+ D8 N1)下位机接收的代码是经上位机组态后生成的与CPU无关.
8 D4 D8 H' @- s8 N7 t* X( c) s的中间代码,在下位机硬件系统升级或发生变动时,上位机的软
/ M- o V8 g6 ]6 F6 [. D件系统不受影响,易于系统扩展。6 a6 P1 {; B w; {1 s T8 w: d
2)随着单片机技术的发展,存储器的容量问题已不再是制4 D1 Z0 R; ~# |% S7 a$ k' A
约系统开发的主要因素。因而,前一种方式中占用存储空间少的' i: `8 E# `: i& `; `& D; V
优点不再突出。3 l% I; G* ]! z/ W0 r# k& F% p2 u
本文基于后-种组态生成方式,讨论在MCS-51单片机上4 J) H9 r. j( T* P/ F' d) d3 z0 E
实现控制模块调度的方法,并详细分析了该调度策略的特点。
, z# N" r. X9 I' Z0 L) J* J3 `2下位机命令进程的调用0 q- G/ o% G, k5 G
要实现下位机的监测与控制功能,至少应设置五类命令进
) X5 x. `- ?& o3 w5 i5 n. K程,分别为:手动读点、手动写点、停止运行、自动运行和修改参
6 K6 I- ^% T" C7 K+ B) a/ _& S数。在系统进入正常运行后,接收到这些命令进程的调用命令,
; j. f, L l8 _# K4 p根据这些任务的紧要程度不同,可以将它们划分为两类:+ V! f1 z1 Q3 Z# x; D+ h
1)实时性要求非常强,接收到命令后,要立即对其进行命令
, B$ |4 R/ k2 N, V解释并执行,如停止运行命令。+ X, L( q. n9 K
2)实时性要求略差-点,接收到命令后,允许等待一段时* G0 e7 }' S" V- m! n" ^' A
间,再对其进行命令解释并执行,如手动读点、手动写点、自动运: ~ n7 }- O: M# U$ V
行和修改参数命令。( I& t) T7 h3 ]4 r- V6 B
当系统进入正常运行,在控制模块运行过程中,若上位机发6 q ]5 y1 U- Q2 o
出新的命令,下位机进入通信中断接收程序,接收数据存放后,+ s) x# a9 [" y3 @* \- Y
中断返回到当前运行的控制模块程序中。这时,对实时性要求非
, k. R+ X ]9 p常强的命令,如果把当前正在运行的控制模块进程的信息进行7 a# l* O" E' i+ Y, A4 b3 I# G; c
存储,转要府接敢到的系统调用,对51单片机系统,由于其内
- _4 ^9 y% z. c% L. W, N- D/ o
$ Q/ r" p0 ~' c6 r8 ~4 A! J9 \' _; \部存储器容量很少,从外部数据存储器存取数据需要占用较长! X; w* Q- x! A D+ ^/ A
时间,这样就不能保证命令执行的实时性。因此,将停止运行命' p9 g4 G# E0 Z$ @9 U# O/ b
令的调用放在通信中断接收程序中,接收数据存放后,对接收到) D6 {; j# z+ b/ N/ J- N. X. P' w8 Q
的命令进行判断,如果命令是停车命令,将立刻执行,执行结束, M; F. P0 c& S/ e9 q
后再中断返回,利用硬件中断保证其任务的实时性,调用过程如2 K) K6 @; @3 g& t% r- C
图1所示。8 {2 j7 f/ e8 `6 A- i1 R
4 ]6 ?6 j4 z3 L8 v9 `附件下载: 3 O: ^. Z6 y5 M5 G, w
|
|