📱 手机上看不到完整课程(数字人讲师需要电脑浏览器的 3D 支持)。下面是这节课的图文讲解 + 音频,内容完全一样,手机上也能完整学完。想体验完整课程,用电脑打开这一页即可。
仍然在手机上试试完整课程
本节要做什么
0:32自加:按一下加一个
- 自己加一INC 后面只跟一个操作数 —— 要加一的那个寄存器
- 按一下按钮X0 是带上升沿的触点,按一下 D0 从 0 变 1
- 为什么非得用带沿的先记住,后面专门讲不用它会出什么事
- 再按两下每次只加一个,不多不少
自加:按一下加一个
上一节讲的是两个数相加,这一节讲更简单也更常用的:自己加一、自己减一。自加写成 INC,后面只跟一个操作数,就是要加一的那个寄存器。看这张图,X0 上用的不是普通的常开触点,是带上升沿的。按一下按钮,D0 就从零变成了一。为什么非得用带沿的?先记住这一点,后面专门讲不用它会出什么事。现在再按两下,看它每次是不是只加一个。
自减:按一下减一个
0:33自减:按一下减一个
- 自减写成 DEC跟 INC 是一对,只是把数减一
- 剩余量往下减产量往上加、剩余量往下减,都是按一下动一个数
- 再按几下看它一路减下去
- 接着按就变成负数了减到零不会自己停,防减过头要自己加判断
自减:按一下减一个
自减写成 DEC,跟 INC 是一对,用法完全一样,只是把目标寄存器里的数减一。图上 D0 现在是二十,按一下 X1 这个按钮,它就变成十九。这一类指令现场用得非常多:产量往上加、剩余量往下减、第几次循环、走到第几个工位,都是按一下就动一个数。再按几下,看它一路减下去。要注意,减到零它不会自己停住,接着按就变成负数了 —— 真要防止减过头,还得自己加一条判断。
坑:忘了上升沿,数会疯涨
0:34坑:忘了上升沿,数会疯涨
- 换成普通的常开触点把带沿的写法换掉,程序看着更简单
- 每个扫描周期都会执行一次十毫秒一个周期 —— 接通多久就执行多少次
- 就加了一千按住十秒 → D0 加了一千,不是加一
- 接通多久就加多少个他想的是「按一下加一个」,程序不是这么干的
坑:忘了上升沿,数会疯涨
现在说本课最重要的一个坑。刚才 X0 上用的是带上升沿的触点,如果把那个带沿的写法换成普通的常开触点,会发生什么?程序看起来更简单了,可结果完全不对。图上这条程序,X0 一旦接通就一直保持,而这条指令在每个扫描周期都会执行一次 —— 仿真器十毫秒一个周期,按住不放十秒,D0 就加了一千。师父心里想的是按一下加一个,程序做的却是接通多久就加多少个。
正解:加回上升沿
0:28正解:加回上升沿
- 回到带上升沿的触点接通的这一瞬间算一次,之后不再重复
- 这回只加了一同样按住十秒 → D0 只加 1
- 凡是要按一下就动一次这条规矩要记住:前面都用带沿的触点
- 松开再按才会再加一个 —— 这才是按钮该有的样子
正解:加回上升沿
正解就是回到带上升沿的那个触点:条件接通的这一瞬间算一次,之后哪怕一直保持接通,也不再重复执行。同样一段程序、同样按住 X0 十秒,这回 D0 只加了一,稳稳当当。所以记一条规矩:凡是要按一下就动一次的指令,前面都用带沿的触点。松开再按,才会再加一个,这才是按钮该有的样子。
求平均值:八个采样一条指令
0:30八个采样,一条指令求平均
- 求平均值不用写加法也不用写除法,一条指令就够
- 起始位置第一个操作数写采样区的起始位置
- 八个数的和是八百平均就是 100 —— 采样变了平均就变
- 把其中一个采样改大平均值跟着往上走:100 → 102
八个采样,一条指令求平均
最后一类,也是现场常用的:求平均值。图上这八个寄存器是八次采样,要算它们的平均,不用写加法也不用写除法,一条求平均指令就够。第一个操作数写采样区的起始位置,第二个写结果存哪儿,第三个写一共几个点。八个数的和是八百,平均就是一百。现在把其中一个采样改大,平均值跟着往上走。做温度、压力这类平滑处理,这是最省事的办法。
收尾:三十二位自加 + 预告
0:34三十二位自加,吃两个字
- 前面加个 DDINC = 三十二位自加,吃两个字
- 十六位读出来是负一低字 65535,也就是低字已经满了
- 低字归零、高字进了一位按一下加一 → 低字 0、高字 1
- 下一节讲逻辑运算按位与、按位或、按位异或
三十二位自加,吃两个字
最后看一眼三十二位的版本,前面加个 D,写成 DINC。它跟上一节的双字一样吃两个字:低字放低十六位,高字放高十六位。图上低字已经是六万五千五百三十五,十六位读出来是负一,也就是低字已经满了。按一下按钮加一,低字归零、高字进了一位。现场累计产量、累计长度很容易超过三万二,这时候就得用双字版本。下一节讲逻辑运算:按位与、按位或、按位异或。