时钟指令中所有日期和时间值必须采用BCD格式编码(例如,16#97代表2002年)怎么转换的,我理解的是97转换成十进制是151,BCD是用四位二进制表示十进制,151应该表达成 0001 0101 0001 ,如何就用16位数97 表示2002年了,望高手赐教!
问题补充:
那么这样就好理解了,16#99 表示1999年 16#00 表示2000年 16#06表示2006年,那么不是说好了用BCD码表示么,为什么都变成用16位数表示了啊,BCD体现到哪里去了
最佳答案
请问你的看到的资料是哪里来的,编程时调用READ_RTC 按F1帮助得到的原文是:
You must code all date and time values in BCD format (for example, 16#02 for the year 2002). See the Table below.
只有16#02是表示2002年,16#97转换成BCD码后是0001 0101 0001 这个代表是这个不可能是代表2002年,所以只能说你查看的资料有问题!
补:BCD码的概念还是要弄明白,比如1001 0111 BCD码是97 但是十进制就是151;为什么用16进制的呢?因为在编程转换的过程中比较直观,时间的存储格式是定好的,我们只能执行!用16进制在编程的时候不需要数据的转换!比如说你写入一个BCD码,要求时97,如果是十进制的数你就要写151,或者还有其他的数,是不是要进行转换后才能正确的写入呢!
提问者对于答案的评价:
谢谢
专家置评
已阅,最佳答案正确。
Clock_integer:由于S7-200时钟指令的数据格式是BCD码,使用该库指令可以直接读取S7-200 CPU时钟并以整数格式输出所读取的值。http://support.automation.siemens.com/CN/view/zh/19294366
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc199926.html