📱 手机上看不到完整课程(数字人讲师需要电脑浏览器的 3D 支持)。下面是这节课的图文讲解 + 音频,内容完全一样,手机上也能完整学完。想体验完整课程,用电脑打开这一页即可。
仍然在手机上试试完整课程
本节要做什么:数据的与,和触点的与不是一回事
0:33数据的与,和触点的与不是一回事
- 数据之间的与跟触点之间的与做法一样,只是对象换成了寄存器里的十六位
- 一位一位地比两边这一位都是 1,结果的这一位才是 1
- 比完只剩下八D0 是 12、D10 是 10,对完结果 8
- 把 D10 改成三两边没有一位重合 → 结果整个变成零
按位与:一位一位地比
前面几课学的与、或,是触点之间的:两个触点都通,路才通。这一节讲的是数据之间的与、或,做法一样,只是对象换成了寄存器里的十六位。先看这条按位与:它把 D0 和 D10 两个数对齐,一位一位地比,只要两边这一位都是 1,结果的这一位才是 1。D0 是十二,D10 是十,比完只剩下八。现在把 D10 改成三,两边没有一位是重合的,结果整个变成零。
掩码:想留哪几位,就用一个筛子
0:36掩码:用一个筛子筛掉不要的位
- 掩码想留下哪几位就写成 1,其余写 0
- H 开头表示十六进制H0FF 的两个 F 正好是八个 1,罩住低八位
- 只剩后面的 CDABCD 与完,高八位全被筛掉
- 换个数据留下的还是低八位;与 H0F 还能把四个输入点打成一个数
掩码:筛掉高八位
按位与最常用的一个用法叫掩码:想留下哪几位,就把那几位写成 1,其余写 0,跟数据一与,不相干的位就被筛掉了。图上这条用的是十六进制的 H0FF,H 开头表示十六进制,两个 F 正好是八个 1,罩住低八位。原来的数是 ABCD,与完之后只剩后面的 CD,高八位全被筛掉。换个数据,留下的还是低八位。手册里还有个用法:一个数与 H0F,前面四个输入点的状态就打成了一个数。
坑:把按位或当加法,一加一还是一位
0:32坑:把按位或当加法
- 跟加法长得很像按位或一位一位地比,只要有一位是 1 结果就是 1
- 结果却还是一想要一加一等于二,实际得到一
- 把 D10 改成二结果就变成三 —— 碰巧和加法一模一样
- 试一次对了碰巧对了一次,根本说明不了用法对
坑:把按位或当加法用
下面这个坑,很多人第一次用都栽过。按位或,是把两个数一位一位地比,只要有一位是 1,结果这一位就是 1。问题在于它跟加法长得很像,却不是加法。图上 D0 是一,D10 也是一,想要的是一加一等于二,结果却还是一,因为一或一还是一位。更麻烦的是,把 D10 改成二,结果就是三,跟加法一模一样。试一次对了,根本说明不了用法对。
正解:要加就用加,要合位才用或
0:29正解:要加就用加,要合位才用或
- 把按位或换成加要加起来就用加法指令 —— 同样两个 1,真的得到 2
- 读数完全一样改成 2 时两条都得 3,只有一加一那一下露馅
- 合成一组按位或的正经用途:把两组互不重叠的位合起来
- 别混要加法用加,要合成位用或
正解:加法要用加法指令
正解很简单:要加起来,就用前面学过的加法指令,把按位或换成加。同样两个一,这回真的得到二。再把它改成二,结果也是三,和刚才那一帧读数完全一样,可这两条是完全不同的东西。按位或的正确用途,是把两组互不重叠的位合成一组:一个数的低八位、另一个数的高八位,或一下就是一个完整的字。要加法用加,要合成位用或,别混。
按位异或:一眼看出两个数哪里不一样
0:33按位异或:不同才是 1
- 两位不一样不一样结果是 1,一样结果是 0
- 结果整个是零两个数完全相同,每一位都抵消
- 只有这一位是一改掉最低一位 → 结果正好是 1,就是差异位
- 翻转那一位一边写成只有一位是 1 的常数,异或就变成翻转它
按位异或:相同为 0,不同为 1
第三条是按位异或,规则是两位不一样,结果才是 1,一样就是 0。图上两个数完全相同,每一位都一样,结果整个是零。把其中一个的最低一位改掉,结果就变成了一,而且只有这一位是一。这个特性现场很好用:拿两个数异或一下,结果不是零,就说明它们有不一样的地方,还能一眼看出差在哪一位。反过来,把其中一边写成只有一位是一的常数,异或就变成了翻转那一位。
取反与求负 + 本部分收尾
0:39取反传送与求负
- 取反传送十六位全部颠倒再送到目标 —— 不是只翻某一位
- 当它是负的最高位是符号位,最高位是 1 → PLC 眼里就是负数
- 一排输入点要反着读原先一长串常闭触点,现在一条指令代替
- 求负各位取反再加一;按一下变负,再按一下变回来
取反传送 + 求负
最后两条合起来看。上面这条是取反传送:把源数据的十六位全部颠倒再送到目标,原是一的地方变零、是零的地方变一,所以下面那个结果成了负数——手册标注最高位是符号位,最高位是一,PLC 就当它是负的。手册还有个实用例子:一排输入点要反着读,原先得写一长串常闭触点,现在一条取反传送就代替了。下面这条是求负:各位取反再加一。用带沿的触点按一下,数就变负;再按一下又变回来。逻辑运算讲完,这一部分也就齐了。