第40课 · 一块接一块:顺序功能块 BLOCK

信捷指令讲堂 · 6 段 · 共 3:11 · 正文 989 字 · 完全免费

有些程序天生是排队型的:第一段脉冲发完了才能做第二段。这节课引入顺序功能块这个概念,讲清"包起来"这件事到底改变了什么。

完整课程 · 智慧屏 + 数字人讲师加载较慢?先看下面的图文
正在加载数字人讲师 …
首次打开约需 30~60 秒(3D 模型较大,只在电脑上加载)
加载期间可以先往下看图文讲解
这台设备暂时跑不了完整课程需要支持 WebGL 的浏览器(多数电脑浏览器都支持)
下面是同一节课的图文讲解 + 音频,内容完全一样

📱 手机上看不到完整课程(数字人讲师需要电脑浏览器的 3D 支持)。下面是这节课的图文讲解 + 音频,内容完全一样,手机上也能完整学完。想体验完整课程,用电脑打开这一页即可。
仍然在手机上试试完整课程

1/6

为什么要这么一块

0:36

为什么要这么一块

  • 要解决什么有些活得排队做
  • BLOCK一段特殊的程序块
  • ★ 顺序执行一条做完才轮到第二条
  • 怎么围起来SBLOCK 开头,SBLOCKE 收尾
一块接一块:顺序功能块 BLOCK · 为什么要这么一块 梯形图 最小的一块:SBLOCK 起、SBLOCKE 收

最小的一块:SBLOCK 起、SBLOCKE 收

前面几十课,程序都是一个扫描周期里从头跑到尾,每行都走一遍。可有些活是要排队的:第一段脉冲发完了,才能发第二段。信捷为此准备了顺序功能块,简称 BLOCK。它是一段特殊的程序块,里面的指令按同一条原则执行,也就是顺序执行:条件成立的先执行,一条做完了,才轮到第二条。手册说得很直白,这是它和一般流程最大的不同。画面里是最小的一个块,SBLOCK 开头,SBLOCKE 收尾。

2/6

一段 BLOCK 怎么写

0:34

一段 BLOCK 怎么写

  • 一行开头SBLOCK 加块号
  • 一行收尾SBLOCKE 加同一个块号
  • ★ 两个数最多写 100 个,同时只跑 8 个
  • 块外照旧块外的程序不会被吃掉
一块接一块:顺序功能块 BLOCK · 一段 BLOCK 怎么写 梯形图 块里两条传值,块外输出照旧

块里两条传值,块外输出照旧

一个顺序功能块的写法很简单:一行开头、一行收尾。SBLOCK 后面跟块号,从一到一百;中间就是我们自己写的指令;最后用 SBLOCKE 加同一个块号收尾。块号要一一对应。数量上记住两个数:一个程序里最多能写一百个块,但同一时间最多只能跑八个。块头和块尾都只是标记,不是开关,块外面的程序照旧跑,不会被吃掉。画面里块里放两条传值,块尾后面那条输出照样点亮。

3/6

常开触发:一直循环

0:29

常开触发:一直循环

  • 常开/常闭条件通着就一直循环
  • ★ 走完回头执行完最后一条立刻重来
  • 所以会怎么样自加的数值不停地涨
  • 多个块并排条件同时通就同步执行
一块接一块:顺序功能块 BLOCK · 常开触发:一直循环 梯形图 条件通着,两条自加都在涨

条件通着,两条自加都在涨

触发条件用常开或者常闭线圈时,块会一直循环。手册的说法是:从块的最上面往下执行,执行完最后一条指令,立刻重新从头再来一遍,只要条件还通着,就一直转下去。所以块里写一条自加,D10 会不停地涨,它不是只跑一遍,而是被反复执行。手册还举了三块并排的例子:条件同时通着的时候,这几个块是同步执行的,谁也不等谁。

4/6

上升沿触发:只跑一遍

0:31

上升沿触发:只跑一遍

  • 换成上升沿每触发一次只走一趟
  • ★ 不循环跑完就停住
  • 数字怎么变一个脉冲各加一
  • 怎么选一直转用常开,跑一遍用沿
一块接一块:顺序功能块 BLOCK · 上升沿触发:只跑一遍 梯形图 一个上升沿,两个数各加一就停

一个上升沿,两个数各加一就停

把触发条件换成上升沿,性质就完全变了。手册的原话是:当触发条件由线圈的上升沿触发时,每触发一次,块就由上至下依次执行一次,不会循环执行。所以同样是两条自加,用上升沿驱动,来一个脉冲,两个数各加一,然后就停在那里不动了;再给一个脉冲,才又各加一。什么时候用哪种?要它一直转就用常开,只跑一遍就不再跑,就用上升沿。

5/6

条件断开不是立刻停

0:31

条件断开不是立刻停

  • ★ 反直觉条件断开不是立刻停
  • 手册怎么说完成最后一次扫描再停
  • 为什么手头这一遍必须做完
  • 要真停怎么办得用专门的暂停指令
一块接一块:顺序功能块 BLOCK · 条件断开不是立刻停 梯形图 条件已关,块却还在跑

条件已关,块却还在跑

有一条稍微有点反直觉,一定要记住:触发条件断开,块不是立刻停。手册的原话是,条件断开时 BLOCK 并不会立即停止,而是完成最后一次扫描,把没执行的程序执行完毕以后才停。换句话说,断开条件只是一道不再启动的命令,手头这一遍必须做完。真要让块中途停下,得用专门的暂停指令。画面里脉冲还没发完就把条件关掉,块照样把它跑完。

6/6

多个块一起跑

0:30

多个块一起跑

  • 多个块条件成立的那个就执行
  • 同时成立几个块同步跑
  • 数量上限最多 100 个、同时 8 个
  • 下一课进块里看怎么排队
一块接一块:顺序功能块 BLOCK · 多个块一起跑 梯形图 两个块各管一条,同时往上数

两个块各管一条,同时往上数

最后说两个块的情况。手册讲得很清楚:存在多个 BLOCK 时,执行方式和一般程序一样,哪个条件成立哪个就执行,几个块就同步跑,谁也不等谁。所以流水线上两条互不相干的动作,可以各写一个块,各管各的。数量上再强调一遍:程序里最多能写一百个块,但同时最多只能运行八个。下一课我们进块里面看,看它到底怎么排队、怎么跳过某一级。

想亲手试一下?

这门课的电路,已经给你摆好了。不用装软件,点开就能按按钮、看线圈亮。