欢迎光临散文网 会员登陆 & 注册

一个案例带你熟悉三菱ST程序的编写过程

2022-11-13 12:08 作者:3_qq_3  | 我要投稿

和这前的控制要求一样  一个按钮控制三盏灯,在FBF功能块中编写一个按钮控制三盏灯 的ST程序,然后在主程序中调用这个FB.

通过这个案例带大家熟悉在GX-WORKS2环境下ST语言的用法。

第一步 新建数据 

数据名根据自己的需要赶写这里我填的是OneToThree

程序语言选择 ST

第二步 在OneToThree 功能块中建立局部标签


局部标签

================OneToThree 功能块中局部标签=====================


类                标签名            数据类型

VAR_INPUT     Button     Bit

VAR_OUTPUT     Lamp0         Bit

VAR_OUTPUT     Lamp1         Bit

VAR_OUTPUT     Lamp2         Bit

VAR                     int_Step1     Word[Signed]

VAR                     int_Step2     Word[Signed]

VAR                     TON_1             TON

VAR                     TimeOut_bool     Bit

VAR                         dummy_time     Time

VAR                         relay                     Bit

VAR                         Button_Relay1     Bit

VAR                         Button_Relay2     Bit

=========================================================

在程序编写过程可先写注释,记录下自己的思路,并随时编译和保存程序

这样可以避免在编写了很多程序时编译发现程序中有很多错误,改起来是很痛苦的一件事。

每写一小段程序就编译一下能用时发现错误,及时保存能避免在意外情况下自己辛苦编写的程序丢失。


====================OneToThree 功能块中ST程序=============================


(*一个按钮三盏灯*)


(*

程序说明:

一个按钮控制三盏灯

用 一个 按钮 控制 三 组( 或 三个) 灯, 以 达到 控制 灯 的 亮度。

 由 PLC 组成 一个 控制器, 每 按 一次 按钮 增加 一组 灯 亮, 三 组 灯 全 亮 后, 

每 按 一次 按钮, 灭 一组 灯( 为了 使 每组 灯 亮的 时间 尽量 相等, 要求 先 亮的 灯 先 灭),

 如果 按下 按钮 的 时间 超过 5s, 则 灯 全 灭。


*)


(*

程序思路

采用流程控制

初始化程序:

复位三个灯


 初始化完成后

按下按钮进入流程1

流程1 置位0号灯

按下按钮进入流程2

流程2置位1号灯

按下按钮进入流程3

流程2置位2号灯

-----------------------------------

按下按钮进入流程4

流程1 置位0号灯

按下按钮进入流程5

流程2置位1号灯

按下按钮进入流程6

流程2置位2号灯

======================

对按钮进行计时,当超进5秒时复位三个灯


*)


PLS( Button, Button_Relay1 );


IF  FirstScan THEN

int_Step1:= 0 ;

Lamp0 := FALSE ;

Lamp1 := FALSE ;

Lamp2 := FALSE ;

END_IF;


CASE  int_Step1 OF

0 :

Lamp0 := FALSE ;

Lamp1 := FALSE ;

Lamp2 := FALSE ;

IF  Button_Relay1 = TRUE  THEN

int_Step1:= 1;

Button_Relay1 := FALSE ;

END_IF;

 

1 :

Lamp0 := TRUE ;

IF  Button_Relay1 = TRUE  THEN

int_Step1:= 2;

Button_Relay1 := FALSE; 

END_IF;  

2 :

Lamp1 := TRUE ;

IF  Button_Relay1 = TRUE  THEN

int_Step1:= 3;

Button_Relay1 := FALSE; 

END_IF;

3 :

Lamp2 := TRUE ;

IF  Button_Relay1 = TRUE  THEN

int_Step1:= 4;

Button_Relay1 := FALSE ;

END_IF;

4 :

Lamp0 := FALSE ;

IF  Button_Relay1 = TRUE  THEN

int_Step1:= 5;

Button_Relay1 := FALSE ;

END_IF;  

5 :

Lamp1 := FALSE ;

IF  Button_Relay1 = TRUE  THEN

int_Step1:= 6;

Button_Relay1 := FALSE ;

END_IF;

6 :

Lamp2 := FALSE ;

IF  Button_Relay1 = TRUE  THEN

int_Step1:= 1;

Button_Relay1 := FALSE ;

END_IF;  

END_CASE; 


(* 按钮按下5秒超时处理*)



TON_1(IN:= Button ,PT:= T#5s ,Q:=TimeOut_bool ,ET:= dummy_time );


PLS( TimeOut_bool, relay );


IF relay  THEN

int_Step1:= 0;

END_IF;

下面是代码截图

全局标签
Global1 全局标签

BTN_and_Lamp 全局标签

程序仿真:

程序仿真


一个案例带你熟悉三菱ST程序的编写过程的评论 (共 条)

分享到微博请遵守国家法律