第14课 · 按一下动一个数(自加自减)

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

有加法就有减一。这节课讲 INC/DEC,顺便讲清"按一下才加一次"背后靠的是什么——看完你就知道为什么不能用 LD 而要用 LDP。

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

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

1/6

本节要做什么

0:32

自加:按一下加一个

  • 自己加一INC 后面只跟一个操作数 —— 要加一的那个寄存器
  • 按一下按钮X0 是带上升沿的触点,按一下 D0 从 0 变 1
  • 为什么非得用带沿的先记住,后面专门讲不用它会出什么事
  • 再按两下每次只加一个,不多不少
按一下动一个数(自加自减) · 本节要做什么 梯形图 自加:按一下加一个

自加:按一下加一个

上一节讲的是两个数相加,这一节讲更简单也更常用的:自己加一、自己减一。自加写成 INC,后面只跟一个操作数,就是要加一的那个寄存器。看这张图,X0 上用的不是普通的常开触点,是带上升沿的。按一下按钮,D0 就从零变成了一。为什么非得用带沿的?先记住这一点,后面专门讲不用它会出什么事。现在再按两下,看它每次是不是只加一个。

2/6

自减:按一下减一个

0:33

自减:按一下减一个

  • 自减写成 DEC跟 INC 是一对,只是把数减一
  • 剩余量往下减产量往上加、剩余量往下减,都是按一下动一个数
  • 再按几下看它一路减下去
  • 接着按就变成负数了减到零不会自己停,防减过头要自己加判断
按一下动一个数(自加自减) · 自减:按一下减一个 梯形图 自减:按一下减一个

自减:按一下减一个

自减写成 DEC,跟 INC 是一对,用法完全一样,只是把目标寄存器里的数减一。图上 D0 现在是二十,按一下 X1 这个按钮,它就变成十九。这一类指令现场用得非常多:产量往上加、剩余量往下减、第几次循环、走到第几个工位,都是按一下就动一个数。再按几下,看它一路减下去。要注意,减到零它不会自己停住,接着按就变成负数了 —— 真要防止减过头,还得自己加一条判断。

3/6

坑:忘了上升沿,数会疯涨

0:34

坑:忘了上升沿,数会疯涨

  • 换成普通的常开触点把带沿的写法换掉,程序看着更简单
  • 每个扫描周期都会执行一次十毫秒一个周期 —— 接通多久就执行多少次
  • 就加了一千按住十秒 → D0 加了一千,不是加一
  • 接通多久就加多少个他想的是「按一下加一个」,程序不是这么干的
按一下动一个数(自加自减) · 坑:忘了上升沿,数会疯涨 梯形图 坑:忘了上升沿,数会疯涨

坑:忘了上升沿,数会疯涨

现在说本课最重要的一个坑。刚才 X0 上用的是带上升沿的触点,如果把那个带沿的写法换成普通的常开触点,会发生什么?程序看起来更简单了,可结果完全不对。图上这条程序,X0 一旦接通就一直保持,而这条指令在每个扫描周期都会执行一次 —— 仿真器十毫秒一个周期,按住不放十秒,D0 就加了一千。师父心里想的是按一下加一个,程序做的却是接通多久就加多少个。

4/6

正解:加回上升沿

0:28

正解:加回上升沿

  • 回到带上升沿的触点接通的这一瞬间算一次,之后不再重复
  • 这回只加了一同样按住十秒 → D0 只加 1
  • 凡是要按一下就动一次这条规矩要记住:前面都用带沿的触点
  • 松开再按才会再加一个 —— 这才是按钮该有的样子
按一下动一个数(自加自减) · 正解:加回上升沿 梯形图 正解:加回上升沿

正解:加回上升沿

正解就是回到带上升沿的那个触点:条件接通的这一瞬间算一次,之后哪怕一直保持接通,也不再重复执行。同样一段程序、同样按住 X0 十秒,这回 D0 只加了一,稳稳当当。所以记一条规矩:凡是要按一下就动一次的指令,前面都用带沿的触点。松开再按,才会再加一个,这才是按钮该有的样子。

5/6

求平均值:八个采样一条指令

0:30

八个采样,一条指令求平均

  • 求平均值不用写加法也不用写除法,一条指令就够
  • 起始位置第一个操作数写采样区的起始位置
  • 八个数的和是八百平均就是 100 —— 采样变了平均就变
  • 把其中一个采样改大平均值跟着往上走:100 → 102
按一下动一个数(自加自减) · 求平均值:八个采样一条指令 梯形图 八个采样,一条指令求平均

八个采样,一条指令求平均

最后一类,也是现场常用的:求平均值。图上这八个寄存器是八次采样,要算它们的平均,不用写加法也不用写除法,一条求平均指令就够。第一个操作数写采样区的起始位置,第二个写结果存哪儿,第三个写一共几个点。八个数的和是八百,平均就是一百。现在把其中一个采样改大,平均值跟着往上走。做温度、压力这类平滑处理,这是最省事的办法。

6/6

收尾:三十二位自加 + 预告

0:34

三十二位自加,吃两个字

  • 前面加个 DDINC = 三十二位自加,吃两个字
  • 十六位读出来是负一低字 65535,也就是低字已经满了
  • 低字归零、高字进了一位按一下加一 → 低字 0、高字 1
  • 下一节讲逻辑运算按位与、按位或、按位异或
按一下动一个数(自加自减) · 收尾:三十二位自加 + 预告 梯形图 三十二位自加,吃两个字

三十二位自加,吃两个字

最后看一眼三十二位的版本,前面加个 D,写成 DINC。它跟上一节的双字一样吃两个字:低字放低十六位,高字放高十六位。图上低字已经是六万五千五百三十五,十六位读出来是负一,也就是低字已经满了。按一下按钮加一,低字归零、高字进了一位。现场累计产量、累计长度很容易超过三万二,这时候就得用双字版本。下一节讲逻辑运算:按位与、按位或、按位异或。

想亲手试一下?

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