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.
版权声明:本文标题:外文翻译--基于ST语言(结构化文本语言)可编程控制器(中文)-其他专业 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1706044258a499477.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论