第23课 · 让设备认得时间(时钟指令)

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

让设备"知道今天几号"是很多需求的第一步。这节课讲时钟指令,并解决一个实际问题:秒数加起来超过 59、分钟超过 59 怎么办。

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

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

1/6

时间从哪来:一条指令读回七个格子

0:28

TRD:一条指令读回七个格子

  • 一条指令读七个数TRD 把时钟读进 D0 开头的七格,依次是年月日时分秒星期
  • 按十进制看读出来的是十进制的数,监控时把格式选成十进制
  • 七格一次占满读一次这七个格子就被占满,别跟别的程序抢
  • 写回去用 TWRTWR 跟 TRD 写法一样,只是个读、一个写
让设备认得时间(时钟指令) · 时间从哪来:一条指令读回七个格子 梯形图 读时钟:一条指令填满七格

读时钟:一条指令填满七格

先看时间是怎么进来的。第一条 TRD,一条指令就把电脑的时钟读进 D0 开头的七个格子,依次是年、月、日、时、分、秒、星期。手册提醒,读出来的是十进制的数,监控时把格式选成十进制就行。要注意这七个格子读一次就被占满了,别跟别的程序抢。想把时间反过来写回机器,用的是 TWR,写法一样。

2/6

三个格子算一组:时、分、秒 换成秒

0:33

时分秒 ⇄ 秒:来回换不丢数

  • 三格算一组时、分、秒三个格子算一组,顺序固定不能调换
  • 合成一个秒数HTOS 把 1 时 2 分 3 秒换成 3723 秒
  • 还能换回来STOH 把那个秒数换回 1 时 2 分 3 秒
  • 两个都是三十二位都是三十二位指令,占格子多,别跟别的数据挤
让设备认得时间(时钟指令) · 三个格子算一组:时、分、秒 换成秒 梯形图 时分秒换秒,再换回来

时分秒换秒,再换回来

时间在机器里是三个格子算一组,顺序固定是时、分、秒,不能调换。想把它们合成一个数,用 HTOS:图上一条把 D0 开头三格的 1 时 2 分 3 秒,换算成 3723 秒,住在 D10 开头两个格子里。反过来用 STOH,把 3723 秒又换回 1 时 2 分 3 秒。一进一出,一个数都没丢。这两个都是三十二位指令,占格子多,别跟别的数据挤在一块。

3/6

时间的加减:秒满 59 自己进位、不够自己借

0:31

TADD / TSUB:进位借位机器管

  • 三个格子一组两个操作数和结果各占连续三格
  • 秒满 59 就进位秒加起来超了,机器自己减六十再加到分上
  • 加法得 10:41:10这正是手册讲时钟加法配的那张例图
  • 减法不用管借位七时三十分十五秒减三时十分八秒,得四时二十分七秒
让设备认得时间(时钟指令) · 时间的加减:秒满 59 自己进位、不够自己借 梯形图 时钟加减:进位借位自动

时钟加减:进位借位自动

时间的加减也是三个格子一组,用 TADD 和 TSUB,写法跟普通加减一样,后面跟三个操作数,各占连续三格。图上第一条 TADD:三时十分四十秒加七时三十分三十秒,秒加起来超了,机器自己减六十、往分上进一,得十时四十一分十秒。第二条 TSUB:七时三十分十五秒减三时十分八秒,得四时二十分七秒。进位借位全不用你管。

4/6

坑:减出负数不报错,它绕回去一天

0:31

坑:减出负数会绕回去一天

  • 不会出负数时间减法不会得负数,机器把时加 24 绕回去
  • 绕回去一天结果得 21:5:10,看着像明天
  • 靠 SM21 认借位借位标志 SM21 在这一拍置位
  • 所以要顺手看一眼不看 SM21,跨天会被当成正常结果
让设备认得时间(时钟指令) · 坑:减出负数不报错,它绕回去一天 梯形图 借位了:结果绕回去一天

借位了:结果绕回去一天

再看一个坑。时间减法不会出负数。图上七时三十五分四十秒减十时三十分三十秒,按常理该是负的,可机器把时加上二十四绕了回去,得二十一时五分十秒,看着倒像明天的时间。它不报错,也不会提醒你。唯一能认出借位了的,是借位标志 SM21,这一拍它置位。所以减完时间一定要顺手看一眼 SM21,不然跨天会被当成正常结果。

5/6

到点了没:TCMP 三点比较

0:34

TCMP:到点了没

  • 五个操作数三个基准的时分秒、一个当前时间首址、一个结果位
  • 还没到点基准 16:40:21 比当前大,第一盏灯亮、Y0 亮
  • 到点了当前改成下午五点,第三盏灯亮、Y1 亮
  • 整体比大小比的是整体,跟一格一格比不一样
让设备认得时间(时钟指令) · 到点了没:TCMP 三点比较 梯形图 TCMP:到点了没

TCMP:到点了没

想知道当前时间到点了没有,用 TCMP。它前面三个操作数是基准时间的时、分、秒,第四个是当前时间所在的首地址,最后是放结果的三个位。图上设定十六时四十分二十一秒,当前是十五时三十二分四十九秒,基准比当前大,第一盏灯亮,输出 Y0 跟着亮,说明还没到点。把当前时间改成下午五点,基准反而小了,第三盏灯亮、Y1 亮,这才到点。比大小是整体算的,不是一格一格比。

6/6

收尾:到期锁机 —— 日期也能比

0:30

DACMP:到期锁机

  • 日期也能比大小DACMP 跟 TCMP 写法一样,只是比年月日
  • 到期日在前三个到期日的年、月、日放在前三个操作数里
  • 过期就锁当前比到期日大,第三盏灯亮、Y0 亮,已经过期
  • 年份只有后两位读出来的年份只给公历后两位,比的是这个
让设备认得时间(时钟指令) · 收尾:到期锁机 —— 日期也能比 梯形图 到期锁机:日期比大小

到期锁机:日期比大小

最后收个尾。日期也能比大小,用的是 DACMP,写法跟 TCMP 一样,只是比的是年、月、日。图上授权到期日是 2026 年 6 月 30 日,当前是 2026 年 9 月 29 日,当前比到期日大,第三盏灯亮,输出 Y0 亮,代表已经过期。把这条输出接到设备上,就是一个很实用的到期锁机。顺带提一句,读出来的年份只给公历后两位。

想亲手试一下?

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