第13课 · 让 PLC 真的会算数(四则运算)

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

会算数的 PLC 才叫能用。这节课把加减乘除四条指令一次讲完,顺带说清为什么算出来是 0 不是"没算"——这是新手最常踩的坑。

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

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

1/6

本节要做什么

0:34

三个操作数:结果等于 S1 加 S2

  • 三个操作数ADD S1 S2 D —— 结果 = S1 + S2
  • 减法一样换个符号就是 SUB,120 − 45 = 75
  • 改成两百加法得 320,减法得 −80
  • 负数合法十六位的数是带符号的,结果可以是负的
让 PLC 真的会算数(四则运算) · 本节要做什么 梯形图 加减法:三个操作数

加减法:三个操作数

前面几节一直在比大小,这一节开始让 PLC 真的会算数。算术指令长这样:ADD 后面三个操作数 —— 第一个数、第二个数、结果放到哪儿。说白了就是一句话:结果等于第一个数加第二个数。图上一百二十加四十五得一百六十五,落在第三个操作数上。减法完全一样,换个符号,一百二十减四十五得七十五。把第二个数改成两百再看:加法得三百二十,减法得负八十。负数在这儿合法,十六位的数是带符号的。

2/6

乘法:结果占两个字

0:38

乘法:结果占两个字

  • 结果占两个字MUL 的低位放 D,高位放紧跟着的 D+1
  • 三百乘三百等于九万,一个字最多装三万二千七百六十七
  • 两万四千多那是九万的低位;紧跟着那个是一,就是高位
  • 高位变回零改成一百 → 三万,一个字装得下了
让 PLC 真的会算数(四则运算) · 乘法:结果占两个字 梯形图 乘法:结果占两个字

乘法:结果占两个字

乘法写成 MUL,操作数还是三个,但它有个特别的地方:两个十六位的数相乘,结果可能就超过十六位了,所以手册规定结果占两个字 —— 低位放在你指定的寄存器,高位放在紧跟着的下一个。图上是三百乘三百等于九万,一个字最多装三万二千七百六十七,装不下。你看结果位置上是两万四千多,那是九万的低位;紧跟着那个寄存器是一,就是高位。记住:乘法结果吃掉两个字。把第二个数改成一百再看,三万装得下了,高位变回零。

3/6

除法:商和余数各有一个家

0:32

除法:商和余数各有一个家

  • 给出两个数商和余数,两个都给你留着
  • 商放这儿商放在你指定的那个寄存器
  • 余数放下一个余数放在紧跟着的下一个 —— 不是被丢掉
  • 二十除以五商是四,余数正好是零
让 PLC 真的会算数(四则运算) · 除法:商和余数各有一个家 梯形图 除法:商和余数各有一个家

除法:商和余数各有一个家

除法也是三个操作数,但它给出两个数:商和余数。手册写得很清楚,商放在你指定的寄存器,余数放在紧跟着的下一个 —— 跟乘法一样占两个字。图上是十七除以五,商是三,余数是二,两个数都给你留着,不用自己再算一遍。做平均、做分摊的时候这一点特别有用:余数不是被丢掉的,它就摆在余数位上。把被除数改成二十,二十除以五,商是四,余数正好是零。

4/6

坑:除数为零,结果停在旧值

0:32

坑:除数为零,结果停在旧值

  • 它就是零了除数是人数、是计数 —— 都可能变成零
  • 不能执行手册原话:发生运算错误,这条指令不能执行
  • 还停在二十不是算出个零,是上一轮那个数还在
  • 灯还亮着下游照着旧值判断 —— 看着正常,数已不对
让 PLC 真的会算数(四则运算) · 坑:除数为零,结果停在旧值 梯形图 坑:除数为零,结果停在旧值

坑:除数为零,结果停在旧值

这里有个坑,现场真能碰到。假设除数是当班人数,某一天没人上班,它就是零了。除数为零的时候手册写得很明白:发生运算错误,这条指令不能执行。注意,是不能执行,不是算出一个零来 —— 结果寄存器里还是上一轮算出来的那个数。图上就是这样:除数改成零以后,结果还停在二十,下面那句判断照着二十去比,灯还亮着。看着一切正常,其实这个数早就不是这一轮的了。

5/6

正解:先判除数,再算

0:32

正解:先判除数,再算

  • 先看一眼除数比较触点把关:不等于零才做除法
  • 清成零除数等于零 → 结果清成零,别留旧数
  • 报警灯灭着除数正常 → 结果照常算出来
  • 报警灯亮除数为零 → 除法被拦住、结果清零、灯亮
让 PLC 真的会算数(四则运算) · 正解:先判除数,再算 梯形图 正解:先判除数,再算

正解:先判除数,再算

怎么办?算之前先看一眼除数。前面讲过的比较触点正好用上:除数不等于零,才让它去做除法;另外再接一条,除数等于零,就把结果清成零,同时点亮一盏报警灯。这样一切都清楚了:除数正常的时候结果照常算出来,报警灯灭着;一旦除数变成零,除法被拦住、结果清零、报警灯亮。现场看到这盏灯,第一件事就是去查除数为什么是零,而不是拿着旧数继续往下算。

6/6

收尾:装不下会绕回负数

0:34

装不下会绕回负数

  • 最多装三万二千七百六十七十六位的老问题,超了就绕回负数
  • 绕回去了三万加三万得六万 → 结果变成负的
  • 进位标志手册专门有这一栏,溢出时自己置一
  • 改成两千三万两千装得下 → 灯灭;更大的数用双字
让 PLC 真的会算数(四则运算) · 收尾:装不下会绕回负数 梯形图 装不下会绕回负数

装不下会绕回负数

最后说一个十六位的老问题:它最多装三万二千七百六十七。图上是三万加三万,得六万,装不下,结果就绕回去了,变成一个负数。这时候进位标志会自己置一,手册里专门有这一栏,叫进位。我们把这个标志接到一盏报警灯上,数一溢出,灯就亮。把第二个数改成两千,三万两千,装得下了,灯就灭了。要算更大的数,用双字版本,前面加个 D,那是后面要说的内容。下一节讲自加自减,按一下加一个数。

想亲手试一下?

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