应用的软件是西门子的博图V18,功能实现是按下启动按钮每隔两秒切换一次数字,从0~9一直循环,按下停止按钮停止循序。比起梯形图,SCL更像是单片机的编程思路,需要哪一个口亮就直接至高或是至低。用Q0.0~Q0.6分别表示字段a、b、c、d、e、f、g。
代码实现
"启动保持信号" := ("启动按钮" OR "启动保持信号") AND NOT "停止按钮";
"t0".TON(IN := "启动保持信号"AND NOT "时间信号t0" ,
PT := T#20s,
Q => "时间信号t0",
ET => "时间计数");
//0
IF "时间计数">T#0s AND "时间计数"<=T#2s THEN
"a字段" := 1;
"b字段" := 1;
"c字段" := 1;
"d字段" := 1;
"e字段" := 1;
"f 字段":= 1;
"g字段" := 0;
//1
ELSIF "时间计数">T#2s AND "时间计数"<=T#4s THEN
"a字段" := 0;
"b字段" := 1;
"c字段" := 1;
"d字段" := 0;
"e字段" := 0;
"f 字段":= 0;
"g字段" := 0;
//2
ELSIF "时间计数">T#4s AND "时间计数"<=T#6s THEN
"a字段" := 1;
"b字段" := 1;
"c字段" := 0;
"d字段" := 1;
"e字段" := 1;
"f 字段":= 0;
"g字段" := 1;
//3
ELSIF "时间计数">T#6s AND "时间计数"<=T#8s THEN
"a字段" := 1;
"b字段" := 1;
"c字段" := 1;
"d字段" := 1;
"e字段" := 0;
"f 字段":= 0;
"g字段" := 1;
//4
ELSIF "时间计数">T#8s AND "时间计数"<=T#10s THEN
"a字段" := 0;
"b字段" := 1;
"c字段" := 1;
"d字段" := 0;
"e字段" := 0;
"f 字段":= 1;
"g字段" := 1;
//5
ELSIF "时间计数">T#10s AND "时间计数"<=T#12s THEN
"a字段" := 1;
"b字段" := 0;
"c字段" := 1;
"d字段" := 1;
"e字段" := 0;
"f 字段":= 1;
"g字段" := 1;
//6
ELSIF "时间计数">T#12s AND "时间计数"<=T#14s THEN
"a字段" := 1;
"b字段" := 0;
"c字段" := 1;
"d字段" := 1;
"e字段" := 1;
"f 字段":= 1;
"g字段" := 1;
//7
ELSIF "时间计数">T#14s AND "时间计数"<=T#16s THEN
"a字段" := 1;
"b字段" := 1;
"c字段" := 1;
"d字段" := 0;
"e字段" := 0;
"f 字段":= 0;
"g字段" := 0;
//8
ELSIF "时间计数">T#16s AND "时间计数"<=T#18s THEN
"a字段" := 1;
"b字段" := 1;
"c字段" := 1;
"d字段" := 1;
"e字段" := 1;
"f 字段":= 1;
"g字段" := 1;
//9
ELSIF "时间计数">T#18s AND "时间计数"<=T#20s THEN
"a字段" := 1;
"b字段" := 1;
"c字段" := 1;
"d字段" := 1;
"e字段" := 0;
"f 字段":= 1;
"g字段" := 1;
END_IF;
变量表:
Name | Path | Data Type | Logical Address | Comment | Hmi Visible | Hmi Accessible | Hmi Writeable | Typeobject ID |
启动按钮 | 默认变量表 | Bool | %M0.0 | True | True | True | ||
a字段 | 默认变量表 | Bool | %Q0.0 | True | True | True | ||
b字段 | 默认变量表 | Bool | %Q0.1 | True | True | True | ||
c字段 | 默认变量表 | Bool | %Q0.2 | True | True | True | ||
d字段 | 默认变量表 | Bool | %Q0.3 | True | True | True | ||
e字段 | 默认变量表 | Bool | %Q0.4 | True | True | True | ||
f 字段 | 默认变量表 | Bool | %Q0.5 | True | True | True | ||
g字段 | 默认变量表 | Bool | %Q0.6 | True | True | True | ||
停止按钮 | 默认变量表 | Bool | %M0.1 | True | True | True | ||
启动保持信号 | 默认变量表 | Bool | %M3.0 | True | True | True | ||
Tag_2 | 默认变量表 | Bool | %Q3.0 | True | True | True | ||
Tag_3 | 默认变量表 | Time | %MD0 | True | True | True | ||
Tag_4 | 默认变量表 | Bool | %Q3.1 | True | True | True | ||
Tag_5 | 默认变量表 | Bool | %M3.1 | True | True | True | ||
时间计数 | 默认变量表 | Time | %MD4 | True | True | True | ||
时间信号t0 | 默认变量表 | Bool | %M1.0 | True | True | True | ||
字段1 | 默认变量表 | Bool | %M1.1 | True | True | True | ||
字段2 | 默认变量表 | Bool | %M1.2 | True | True | True | ||
Tag_10 | 默认变量表 | Time | %MD8 | True | True | True | ||
字段3 | 默认变量表 | Bool | %M1.3 | True | True | True | ||
Tag_12 | 默认变量表 | Time | %MD12 | True | True | True | ||
字段4 | 默认变量表 | Bool | %M1.4 | True | True | True | ||
Tag_14 | 默认变量表 | Time | %MD16 | True | True | True | ||
字段5 | 默认变量表 | Bool | %M1.5 | True | True | True | ||
Tag_16 | 默认变量表 | Time | %MD20 | True | True | True | ||
字段6 | 默认变量表 | Bool | %M1.6 | True | True | True | ||
Tag_18 | 默认变量表 | Time | %MD24 | True | True | True | ||
字段7 | 默认变量表 | Bool | %M1.7 | True | True | True | ||
Tag_20 | 默认变量表 | Time | %MD28 | True | True | True | ||
字段8 | 默认变量表 | Bool | %M2.0 | True | True | True | ||
Tag_22 | 默认变量表 | Time | %MD32 | True | True | True | ||
字段9 | 默认变量表 | Bool | %M2.1 | True | True | True | ||
Tag_24 | 默认变量表 | Time | %MD36 | True | True | True | ||
Tag_7 | 默认变量表 | Time | %MD40 | True | True | True |
实现效果