admin 管理员组

文章数量: 1184232


2024年1月24日发(作者:c语言冒泡排序的原理)

【DOC】-外文翻译--基于ST语言(结构化文本语言)可编程控制器(中文)-其他专业

中文2670字

基于ST语言(结构化文本语言)可编程控制器

组态控制和编程经验

作者:G. Karmakar, Ashutosh Kabra, Jose Joseph, B. B. Biswas, R. K.

Patil

反应器控制部分巴哈马原子能研究中心

摘要:本文的主要内容为在可编程控制器的配置过程中,根据运行过程中的配置情况进行程序代码编写,并且将实时操作系统抽象的嵌入PLC硬件之中,从而实现一个典型的控制逻辑应用,在此过程中我们使用的是IEC 61131-3标准ST语言。 关键词:PLC,ST语言,POU(程序组织单元),配置,资源,程序,功能 1.引言

可编程控制器是大多数控制项目的骨干,例如发电,钢铁生产,化工,石油化工,

PLC)是一种工业计算机控制系统,它能连续监核电站等各行业。一个可编程控制器(

测设备的输入状态,并且根据某种程序来控制输出设备的状态。针对生产过程中的输入条件是一段时间,要求可编程控制器的输出结果应该为一个实时的系统。在过去,许多PLC生产厂商使用自己的编程语言,这些语言与他人是不兼容的。为了提高不同产品之间重用组件的兼容性和互操作性,国际电工委员会61131标准针对主要不同引入统一的做法。IEC 61131标准的第三部分规定了统一的基于可编程控制器的编程语言套件的语法和语义。在本文中,我们描述了一个运用PLC的典型

控制逻辑应用,包括实时的程序写入,实时的代码生成配置,和PLC硬件部分的实时操作系统嵌入,在此过程中我们运用的是ST编程语言。

2.研究范例

2.1 案例定义

一个简单的应用案例,控制一个水泵P1和排放阀V1并且根据要求向指定设备(例如一个SCADA站)发送信息。

使用要求:

使用要求1:读取以下内容的输入情况。

a) P1的启动按钮的状态(离散输入)

b) P1的停止按钮的状态(离散输入)

c) V1的启动按钮的状态(离散输入)

d) V1的关闭按钮的状态(离散输入)

e) P1的开/关状态(离散输入)

f) 读取P1排水压力(模拟输入)

时间扫描为每10ms读取一次。

使用要求2:控制联锁

水泵P1:1.如果P1开始按钮按下,水泵启动并持续工作直到P1停止

按钮被按下。

2(如果P1停止按钮被按下,或者排水压力过高则停止工作。

阀门V1:1.如果V1的开启按钮按下或者水泵已经开启并已经运行3

秒钟

2(如果V1的停止按钮按下或者水泵没有运行。

使用要求3:通信协议/服务器

对任意外部查询设备发送相应响应数据。

的域模型

下图3-1描述的是PLC的域模型

结构 应用程序

构建和下载编码生成器 功能

框架和实时操作系

图3-1 PLC的域模型

4(软件模块和基于IEC 61131-3标准的工程模块

IEC 61131-3标准的软件模型包括由运用该标准及其组态要点定义的语言编写的程序元素,既组态,资源,任务,全局变量和实例,具体的初始化,其中安装到可编程控制器系统的程序必须支持该系统。基于IEC 61131-3标准的软件体系结构图如图4-1所示。

组态元素

组态

资源

任务/运行时程序

程序 功能模块

功能模块 功能模块

功能 功能

图4-1基于IEC 61131-3标准的软件体系结构

4.1组态,资源,任务

在最高的等级中,针对一个特定问题的控制软件是包含在一个组态系统中,他把PLC系统所利用的所有资源组织在一起,并提供他们之间交换数据的协议。

资源就是其中的处理设施,能够执行IEC方案,它的定义为,向PLC系统的物理资源进行任务分配。一个组态中可以有一个或多个资源。组态和资源不会像程序组织单元那样包含相互指示,但仅仅定义它们的元素之间的关系。

任务是定义为一个能够援引的执行控制单元,他可能发生在一个定期时间段,或者时间段之后,或者某个变量的上升沿。执行某个组织单位的方案,其中包括程序集和功能模块。

像其他PLC应用方案一样,我们需要定义复合要求的I/O硬件设备和他的类型,对于我们研究的案例,包括一个数字输入卡,一个数字输出卡和一个模拟输入卡。配置ST程序如下:

组态过程控制程序

TYPE

DISCRETE_DATA: BOOL; (*离散输入的数据类型*)

END_TYPE

TYPE

DISCRETE_16_DATA: ARRAY [1..16] OF DISCRETE_DATA; END_TYPE

TYPE

ANALOG_DATA: INT (-4095..4095); (*分区域中的数字*)

END_TYPE

TYPE

ANALOG_16_DATA: ARRAY [1..16] OF ANALOG_DATA; END_TYPE

TYPE COMM_CHANNEL

SENDER_IP: UINT;

SENDER_PORT: INT;

REC_IP: UINT;

REC_PORT: INT

END_TYPE

RSOURCE Res_1 ON CPU001

VAR_GLOBAL CONSTANT

NUM_DIGIN_CARD: UINT := 1;

NUM_ALOGIN_CARD: UINT := 1;

NUM_DIGOUT_CARD: UINT := 1;

NUM_ALOGOUT_CARD: UINT := 0;

P1psh : ANALOG_DATA := P1PSH; (* set point for PSH *) END_VAR

VAR_GLOBAL

DV_I_X : ARRAY [1.. NUM_DIGIN_CARD] OF DISCRETE_16_DATA;

DV_I_W : ARRAY [1.. NUM_ALOGIN_CARD] OF ANALOG_16_DATA;

DV_Q_X : ARRAY [1.. NUM_DIGOUT_CARD] OF DISCRETE_16_DATA;

(* DV_Q_W : ARRAY [1.. NUM_ALOGOUT_CARD] OF

ANALOG_16_DATA; *)

END_VAR

TASK T1 (INTERVAL := t#50ms, PRIORITY :=3);

TASK T2 (INTERVAL := t#10ms, PRIORITY :=2);

TASK T3 (INTERVAL := t#500ms, PRIORITY :=4);

PROGRAM PumpCtrl WITH T1 : PumpP1Control (P1on_off =>

DV_Q_X[1,1], P1startC := DV_I_X[1,1] P1stopC := DV_I_X[1,2],

P1disPr := DV_I_W[1,1]);

PROGRAM ValveCtrl WITH T1 : ValveV1Control ( V1open =>

DV_Q_X[1,2], V1close => DV_Q_X[1,3], V1openC :=

DV_I_X[1,3], V1closeC := DV_I_X[1,4], P1startC := DV_I_X[1,1],

P1status := DV_I_X[1,5]);

PROGRAM ScanIn WITH T2 : ScanInput ();

PROGRAM Comm WITH T3 : ComSlave();

END_RESOURCE

END_CONFIGURATION

4.2(程序

一个程序是一个功能网络和一个可以通过软件连接交换数据的功能模块,他可以用

任何已经定义过的编程语言来进行编辑,一个程序可以同时读取和写入输入/输出变量

并能实现和其他程序进行通信。执行程序的不同部分,例如执行选择功能模块,也许会

被使用中的任务控制。

对于我们研究的范例,我们有以下的程序:

水泵P1控制

阀门V1控制:用ST语言编写的阀门控制程序除了使用了其他一般的ST编程功

能外,还是用了延迟计时器。

PROGRAM ValveV1Control

VAR_INPUT

V1openC : BOOL;

V1closeC :BOOL;

P1startC : BOOL;

P1status : BOOL;

END_VAR

VAR

Vtimer : TON;

END_VAR

VAR_TEMP

T : BOOL;

END_VAR

VAR_OUTPUT

V1open : BOOL; (*V1 MOV to Open*)

V1close : BOOL; (*V1 MOV to Close*)

END_VAR

Vtimer(IN:= P1startC, PT := T#3s); T1:= Vtimer.Q;

IF (V1openC OR T1) THEN

V1open := TRUE;

V1close := FALSE;

END_IF

IF ((V1closeC=TRUE) AND (P1status=FALSE)) THEN

V1open := FALSE;

V1close :=TRUE;

END_IF

END_PROGRAM

4.3 功能和功能模块

这些是基本的组成部分,包含一个数据结构和算法。

对于我们的范例:

• ReadAnalogIn

所要求的功能模块:在任何的PLC中,从物理I/O卡输入是无可避免的。

FUNCTION_BLOCK ReadAnalogIn

VAR_EXTERNAL CONSTANT

NUM_ALOGIN_CARD: UINT;

END_VAR

VAR_OUTPUT

ALOGIN1 : ARRAY [1.. NUM_ALOGIN_CARD]

OF ANALOG_16_DATA;

END_VAR;

ALOGIN1 := ReadAlogIn (NUM_ALOGIN_CARD );

END_FUNCTION_BLOCK

• ReadDigitalIn

• TON

所要求的功能

• ReadAlog

FUNCTION ReadAlog: ARRAY [1.. NUM_ALOGIN_CARD]

OF ANALOG_16_DATA

VAR_INPUT

NoAlogCards: UINT;

END_VAR

(* 功能部分 *)

END_FUNCTION

• ReadDig

5 通信模型

通过改变变量的值,有许多种方法来实现软件之间的通信。

1)在程序中,变量的值可以由一个程序元素的输出直接连接到另一个的输入,如图5-1所示。

程序 FB1 FB2

FB X FB Y a b

图5-1程序间变量直接通信

2)变量的值在程序之间传递也可以通过在同一组态中全局变量,如图5-2所示。这些变量组态系统中被定义为全局变量

3)变量的值也可以通过特定的标准通信功能,在一个程序不同部分、不同程序之间、在相同和不同的组态系统中、抑或在不同的PLC之间以及可编程控制器与非可编程控制器之间来进行通信。如图5-3所示。

图5-2通过全局变量通信

图5-3通过标准通信功能通信

在我们研究的范例中,我们通过通信功能模块来实现与外部之间的通信,程序如下: PROGRAM ComSlave

VAR

CHAN_ID: COMM_CHANNEL;

CON1: CONNECT;

REQ_SEND: BOOL;

RDATA : ARRAY [0. . 16] OF BYTE;

SDATA : ARRAY [0. . 16] OF BYTE;

US1: USEND;

UR1: URCV;

END_VAR;

CON1 (EN_C:=1, PARTNER:= ‘PC2’);

(* PC2 = ID of remote comm. partner*) IF THEN

Error_Handler();

END_IF

IF THEN

CHANNEL_ID:= ;

UR1(EN_R:=1, ID:=CHANNEL_ID,

R_ID=’PACK1’, RD_1:=RDATA);

IF THEN

SDATA ;= Respond(RDATA);

US1(REQ:= REQ_SEND, ID:=

CHANNEL_ID, R_ID=’PACK2’,

SD_1:=SDATA);

IF THEN

Error_Handler();

END_IF

END_IF

IF THEN

Error_Handler();

END_IF

END_IF

END_PROGRAM

FUNCTION_BLOCK USEND (*Programmed data acq. *)

(* Function body *)

END_FUNCTION_BLOCK

FUNCTION_BLOCK URCV (* Programmed data acq.*)

(* Function body *)

END_FUNCTION_BLOCK

FUNCTION_BLOCK CONNECT (* Connection mgmnt *)

(* Function body *)

END_FUNCTION_BLOCK

6 IEC 61131-3标准的主要优势

6.1方便和安全的变量和数据类型

1)局部和全局变量是用来代替硬件地址。该编程系统能够自动区分全局变量和局部变量。

2)变量保留定义。

3)在PLC系统运行时,数组索引变量的范围和界限值可以被编程系统实时监测。

6.2模块的扩展

1)模块(POUs)的设计为独立目标体系。这使得它有可能为多种平台模块重复使用。 2)对于避免数据模块间传输过程中的由于机制不同而发生错误,是一个有效的手段。 • VAR_INPUT : Value of a variable

• VAR_IN_OUT : Pointer to a variable

• VAR_OUTPUT : Return value

• VAR_EXTERNAL: Global variable of another POU

6(3对于PLC组态系统的运行

在一个硬件PLC组态系统中能够有利于任务和方案分配到控制器。

7(总结

我们都知道,理解一个标准,使工业控制产品能够以它为基础,最好是从头到尾由它来引导使用一个优秀的范例,我们希望我们的研究能够对基于IEC-61131-3标准开发

的软件工程项目有所帮助。

8(致谢

作者感谢Shri G.P. Srivastava, Director E&I Group给我们机会进行PLC方面

的研究。

9(参考摘要

[1].IEC. Programmable Controllers - Part 3: Programming Languages,

IEC 61131-3. Technical Report, International Electro technical

Commission - Geneva, Second Edition, 2003. [2]. IEC. Programmable

Controllers - Part 5: Communications, IEC

61131-5. Technical Report, International Electro technical

Commission - Geneva, 2000.

[3]. K.H. Jhon, M. Tiegelkamp. IEC 1131-3 Programming Industrial

Automation Systems, Springer, 1995.


本文标签: 程序 控制 组态 系统 语言