如何把word分装到两个byte_如何使用S7-SCL语言读取系统日期和时间,读完收获好大...

系统功能 SFC1 用于读取 CPU 的系统时钟。系统时钟存储在数据类型为DATE_AND_TIME的变量里。通过指针访问系统时钟的单个组成元素。

数据类型DATE_AND_TIME所包含的关于年、月、日、时等信息是以 BCD 码的格式存储在 8 个字节里。该数据类型显示的范围是:

DT#1990-1-1-0:0:0.0 到 DT#2089-12-31-23:59:59.999

下表给出了实例表示 2014 年1月 2 日,星期四,3点 5 分 11.854 秒对应数据类型DATE_AND_TIME的每个字节所包含的内容。

DATE_AND_TIME为64位复杂数据类型

4d765d60e7c9557baf55475452cb7f2a.png

*毫秒最大值999的BCD码需要占用12位。因此,毫秒值占用字节6以及字节7的高4位。字节7的剩下低4位用于表示星期。

584f57f052cf4326487b41ae3296e49d.png

用SFC1 (READ_CLK)读取系统时钟的说明:

d2272d5828a919a8b5bb1733fc626c09.png

案例:

96670b36289d7fef06bd72607ec0c89b.png

打开SCL软件在静态变量里定义 一个DATE_AND_TIME数据类型的变量

利用‘AT’继承将64位时间变量拆分出来

AT指令可以使用户能够以不同的数据类型来访问一个已经声明的变量。此指令类似于高级编程语言中的“继承”概念。此指令有如下特点:

特点一:定义仅在块内有效,在接口参数中不出现。

特点二:在块中可以使用其他数据类型的视图。

特点三:它只是让另外一些变量继承了某个变量的特性,仅仅数据类型是新的,其他特性相同。

249dd05bff0e7633faf8f930a80936fd.png

如果使用全部的时间,例如进行WINCC面板显示可以直接使用''DAT''变量。

如果使用单个时间就可以使用拆分后的时间

这里有个小技巧:

因为我们上面说到毫秒值占用字节6以及字节7的高4位。星期占用字节7的剩下低4

那如何将一个16位字拆分成12位和4位呢?

这里我们可以利用“与”的方式

MB52 := WORD_TO_BYTE(TMP_DAT.Q7 AND 16#FFF0)

“与”16#FFF0不就是“与”2#1111111111110000正好提取出12位出来

完整代码:

2d98e22f09e503c1d530e9209fe1abc7.png
05309b912cb50a0eb3b3f903d789ea22.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值