当前位置: 主页 > PLC控制

关于时钟指令中BCD码的转换有些看不懂

时钟指令中所有日期和时间值必须采用BCD格式编码(例如,16#97代表2002年)怎么转换,我理解的是97转换成十进制是151,BCD是用四位二进制表示十进制,151应该表达成000101010001,如何就用16位数97表示2002年了,望高手赐教!

问题补充:
那么这样就好理解了,16#99表示1999年16#00表示2000年16#06表示2006年,那么不是说好了用BCD码表示么,为什么都变成用16位数表示了啊,BCD体现到哪里去了

最佳答案

请问你的看到的资料是哪里来的,编程时调用READ_RTC按F1帮助得到的原文是:
YoumuSTcodealldateandtimevaluesinBCDformat(forexample,16#02fortheyear2002).SeetheTablebelow.

只有16#02是表示2002年,16#97转换成BCD码后是000101010001这个代表是这个不可能是代表2002年,所以只能说你查看的资料有问题!
补:BCD码的概念还是要弄明白,比如10010111BCD码是97但是十进制就是151;为什么用16进制的呢?因为在编程转换的过程中比较直观,时间的存储格式是定好的,我们只能执行!用16进制在编程的时候不需要数据的转换!比如说你写入一个BCD码,要求时97,如果是十进制的数你就要写151,或者还有其他的数,是不是要进行转换后才能正确的写入呢!

提问者对于答案的评价:
谢谢

专家置评

已阅,最佳答案正确。
Clock_integer:由于S7-200时钟指令的数据格式是BCD码,使用该库指令可以直接读取S7-200CPU时钟并以整数格式输出所读取的值。htTP://suPPOrt.automation.siemens.com/CN/view/zh/19294366

  • 关注微信

猜你喜欢

微信公众号