|
组态是指根据应用对象及控制要求,配置用户软件的过程。利用组态软件,用户只需通过一种近似“搭积木”式的方法,便能生成所需的应用“软件”,它取代了以往基于计算机语言的软件开发,必将成为计算机控制系统软件的主流。目前,工控系统的组态软件多数是国外大公司设计的,尽管它们功能齐全,但引进需要大量资金。本文介绍了一种在Auto CAD下的组态工具软件的设计方法,它面向那些具有实际过程控制经验、但缺乏编程知识的用户,采用较流行的图形化组态方法和开放的算法模块库结构,适用于中小规模的控制系统。
: d+ y) g- d- h2 j) {1 E3 u0 V8 A, Q& ~
/ Y: ~/ ?2 ~* _6 G. Q1、设计思路3 Q; U! {+ H2 d
+ x V, `0 q1 v( b设计图形化组态工具软件时,倘若完全利用程序语言所提供的绘图库函数进行屏幕图形的绘制和编辑,由于这一过程是非交互式的,图形的每一微小变动均需修改源程序,并重新编译执行,尤其当需要新建图形库时,工作量更是大得惊人。如果能够利用已有图形软件丰富的图形功能,并针对控制领域的需要,设计转换软件,生成一个既有控制算法模块(功能块)图形库和较强图形处理能力,又支持组态功能的图形化组态工具软件(即在图形系统下进行二次开发),将是一种投资少、见效快、能解决实际问题的有效方法。8 Y% B* B0 }0 h& a, ]3 z" s
& [; k% q. X6 l# l. A, z
Auto CAD作为窗口交互式图形系统,为用户提供了具有稳定格式的图形交换文件(DXF文件)。这样,只要编写DXF文件的转换程序,就能实现应用程序与Auto CAD间的图形数据交换,摆脱靠传统编程实现功能块的定义和组态图的编辑,代之以通过设计转换程序获取组态图的相关信息。因此,在Auto CAD系统平台上,开发图形化组态工具软件不仅是省时的,而且是可行的。' o$ `5 J; Q/ {9 a5 T" A, @
" P6 G% e. J) ?$ C
2、图形化组态的实现" a: y( W. }2 P6 f2 \2 a% Z& F
1 m# V8 y' i/ w5 B9 h在Auto CAD中,块可以有多个属性,同一属性在块被多次插入时,可以有不同的取值。我们将上述特性应用于功能块的图形化设计,将其定义为带属性的图形块,将功能块的规格参数定义为它的属性,利用Auto CAD的属性编辑功能对其进行编辑。4 I( V9 B# p! E4 E# [( g
2 T1 F8 ^+ r7 z0 U2 e2.1 功能块图形库的建立
8 @$ f7 c, t* ?
6 s4 w. I+ Q$ ~- B$ D* H功能块即控制算法模块,它包括规格参数输入项和运算结果输出项。功能块的图形化设计就是用带属性的图形符号来表述功能块。图1为乘法器,其中S1、S2为地址型规格参数,分别表示被乘数和乘数的地址,S3为数据型规格参数,表示增益。$ d6 U8 y) d" S
. B8 l6 i' x' q' |3 i# W( W5 B' ]$ E- H
图1(见顶部) 功能块(乘法器)的图形符号
* g* z& ?4 V/ r2 s# g, u2 e( l& v" @4 J& v; ~5 b) X
& j# q* g \9 u" g/ V5 E2.2 组态图的图形交换文件的获取# M. W$ ]; V$ Q9 l( I6 L
+ ^5 Q }, D. W2 X, q首先根据控制要求调用功能块,并为其分配输出地址,填写数据型规格参数值(或取缺省值),再对功能块进行逻辑连接,便完成了组态图的设计。利用Auto CAD的DXFOUT功能,可以得到上述组态图的图形交换文件。
7 D4 M: ]4 w% M4 Y) |7 V( }4 B: F" w0 ] s
2.3 组态数据库文件的生成
0 i K3 h9 r9 O" e8 v, {" R" H
8 E6 V! c0 F" o: z" {/ v组态图中的实体可归纳为:点、线、功能块3类。为此,首先设计3种数据结构,分别存储从图形交换文件中获取的上述实体的图形信息和组态信息。
" \2 v; P- K" i7 }% \' m, s
. j' A" C. S/ I- }% ?- J* Y7 ~(1) 点的数据结构' b. ^$ Y5 o$ P% X
! W4 W$ ^4 T; }- p2 P9 ^struct point{
5 q( Y7 X& W2 G5 s6 }% T- gfloat x; (x坐标)8 c2 ]# ~5 z; ~
float y; (y坐标)
! ?* [7 [7 O( j3 P3 Uint blk; (属性值)
- s8 J5 _) y7 Jstruct point*next; (指向点的指针)
6 n! k3 ^. y2 u+ r1 m; m};% V3 }5 x; h$ @0 O9 b: |. \
, A9 L d, W$ \: F
Auto CAD中的点仅定义了横、纵坐标,它们只能反映点的图形特征。但是,当点与功能块的输出相连时,该点就同时具有了组态特征,为此,我们引入属性值来扩充点的定义。利用点的属性值概念,我们成功地解决了功能块地址型规格参数值的传递问题。同时,利用点属性值的唯一性,初步解决了组态的逻辑判错问题。
3 x" F1 ~/ D' {+ k7 g+ r" P6 j7 ~+ Z4 a5 | U6 ~; b
(2) 线的数据结构
' V7 t5 q; o, e$ U) Y/ f" g/ ~/ h R; z8 F& Y6 X
对直线和折线,可采用统一的点链结构来描述,即
% R- ^7 A# t6 k% ^struct ptline{
! f/ r3 L/ }" F5 b! B" n4 q$ Astruct point*pt; (指向线起点的指针)
- t1 ?9 \0 {7 Xstruct ptline*next;4 h9 o# V- s8 E0 C k. |8 Y
};% a/ x R+ I- }) V% @1 T+ |
) ^" X' P5 {- ]! S(3) 功能块的数据结构) X8 Y6 `$ h B* u
' @6 X6 l; r l4 a
考虑到功能块的规格参数数量及含义各异,我们定义两个结构分别描述其图形特性和组态特性。其中,功能块的图形特性表述为4 S/ W: y( G2 R
8 I& \1 g8 Y7 X. W0 L) p' {) T g
struct fc—list{
( @) s# b; F! t; Pstruct point*pt;% d+ p4 H6 v4 T8 f6 ^6 h) }
struct fc—rec*fc—desc;
" U' m( V; T5 r6 r# a8 e+ D4 H; |( {- F2 i. p% ` u
struct fc—list*last,*next;: ?! E: R4 h( p( q. A5 U ]
};
6 ?5 K% `. f9 l# F' ~3 u
8 T. U: G5 u+ g- D9 {6 f' g功能块的组态特性表述为7 a2 y6 z5 Q3 V
4 _* g1 ~7 p1 n; S# L7 R
struct fc—rec{6 q B- O# {2 g( [2 D% ?5 l, [; @
char start—blk[4]; (输出开始块号)) \2 M. j5 X8 M& h B
char end—blk[4]; (输出结束块号)
- {3 l7 Z" L5 ?' w& s% _char f—code[3]; (功能块号)
& Q1 V7 O( |' v$ W& h+ G9 M, Qchar sheet[2]; (功能块规格参数的实际个数)
% p& M3 Y& e9 y+ |4 Pchar S1[12]; (规格参数S1的描述)
) o4 n! h" |$ F2 I. ~7 S……( H/ Y& a! b0 A2 P4 Y1 N4 X' z
char S40[12]; (规格参数S40的描述)! O& ?1 @& d; l" d8 S! H
};- ~3 Y+ A) R8 d$ ^
s2 d9 F( t0 @" _( K( v& L6 r
在图形交换文件中,带属性的块以INSERT为标志,随后是其块名、插入点坐标及属性值,可依此判断插入的是否为功能块,若是,则根据插入点坐标,计算块输出点及规格参数输入点的坐标,并用一个点指针将其按照先功能块输出、后规格参数输入的顺序形成一个线性点链,分别读取各属性项的取值(即输出块号、规格参数项S1,S2,…的值)等,并存入表述功能块组态特性的相应结构项;否则,越过此插入块,不予处理。6 Y4 a5 s7 e# t; T M5 U
8 U- o1 \( i. V: E) K! L扫描整个图形交换文件,将点、线及功能块的图形信息和组态信息自动填入相应的数据结构,便得到分别指向由组态图中点、线、功能块组成的点链、线链和功能块链的指针,再根据它们在组态图中的连接关系,就可以确定各功能块的地址型规格参数的取值,完成由组态图向组态数据库文件的转化,生成组态控制字。. j5 ]; {2 V/ }" c* p
3 Z+ S3 e6 D6 U& V
3 结论* B! d/ B! [! ]
3 N4 B1 C% ^. D" w
由此可见,只要画出控制框图,就能从我们提供的功能块图形库中选取相应的功能块(或自行定义新的功能块),在Auto CAD系统平台上,通过功能块的规范连接和数据型规格参数的填写,形成控制系统的组态图,进而生成组态数据库文件(组态控制字),完成图形化组态。将该控制字下装,借助下位机的监控程序,便可实现组态图所描述的控制策略,对被控对象实施控制 |
|