块接口配置

在input中建立

  1. 初始化 数据类型:BOOL

  2. 入栈 数据类型:BOOL

  3. 出栈 数据类型:BOOL

在inout中建立

  1. 输入输出 数据类型:int

  2. 栈空间 数据类型:array[*] of int 这里的数组不用填写数字,直接用星号代替,意味着变为变量,我们可以在外部的接口去配置它。

在static中建立

  1. 上升沿存储数组 数据类型:array[0..99] of bool 这里你想建多少数多少都可以

  2. 指针 数据类型:Dint

  3. 上限 数据类型:Dint

  4. 下限 数据类型:Dint

剩下的那两个为上升沿指令的名称,可以自己在使用的时候去设置它

外部变量配置

注意:需要建立一个新的全局DB块,DB块中的数据类型需要与FB块接口的数据类型一致

SCL出栈入栈源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
REGION :获取上下限   //REGION语句可以提高代码的可读性,
#shang := UPPER_BOUND(ARR := #zhankongjian, DIM := 1); //上限
#xia := LOWER_BOUND(ARR := #zhankongjian, DIM := 1); //下限
END_REGION ;
REGION :初始化指针
IF #chushihua THEN //初始化指针
#zhizheng := #xia; //让指针的值等于下限
END_IF;
END_REGION ;

REGION :入栈
REGION :上升沿
#入栈(CLK := #ruzhan,
Q => #yan[0]);
END_REGION ;
REGION :入栈开始
IF #yan[0] THEN //上升沿指令发生变化
#zhankongjian[#zhizheng] := #shurushuchu; //输入输出的值赋值给指针指向的栈空间
IF #zhizheng < #shang THEN //判断指针小于上限时
#zhizheng += 1; //指针+1
END_IF;
END_IF;
END_REGION ;
END_REGION ;
REGION :出栈
REGION :上升沿
#出栈(CLK := #chuzhan,
Q => #yan[1]);
END_REGION ;
REGION :出栈开始
IF #yan[1] THEN //上升沿发生变化,开始出栈
IF #zhizheng < #shang THEN //指针小于上限
#shurushuchu := #zhankongjian[#zhizheng];//指针指向的栈空间中的值赋值给输入输出

ELSIF #zhizheng = #shang THEN //指针等于上限
#zhankongjian[#shang] := 0; //将指针指向的栈空间清空
#zhizheng -= 1; //指针减一
#shurushuchu := #zhankongjian[#zhizheng]; //再将指针指向栈空间的值赋值给输入输出

END_IF;
#zhankongjian[#zhizheng] := 0; //栈空间清空
IF #zhizheng > #xia THEN //当指针大于下限,
#zhizheng -= 1; //指针减一
END_IF;
END_IF;
END_REGION ;
END_REGION ;