READ_RTC指令读取的PLC日期BCD码怎样转换成单个的ASCⅡ码

我用READ_RTC指令读取PLC实时时钟,得到8个字节的BCD码,现在我需要将这8个字节日期BCD码的前6个字节转换成ASCⅡ码用于发送给微型打印机打印,假设读取的前6个日期数据是13年11月27日23时47分56秒,分别存储在以下数据区内:年13存在VB100中;月11存在VB101中;日27存在VB102中;时23存在VB103中;分47存在VB104中;秒56存在VB105中,怎样将这6个字节的BCD码数据转换成单个的ASCⅡ码(就是说要将日期数据1,3,1,1,2,7,2,3,4,7,5,6,转换成12个单独的ASCⅡ码用于发送给微型打印机打印),怎样做呢,欢迎高手解答,在这里先谢过了!

最佳答案

这种转换可以自己编程。数字(十进制)0,1,2,3,4,...的ASCⅡ码(十六进制)为30H,31H,32H,33H,34H,,,,,,。不难看出,两者之间相差30H。这样:
1、例如,年13存在VB100中,可以应用移位等方法方法先从VB100的高四位(即十进制1)取出后存入一字节单元的低四位中(即为0000 0001)。
2、将上述字节单元中的数值(即为0000 0001)与30H(即为0011 0000)相加,其后为0011 0001,这就是BCD码1的ASCII码了,。
3、如法炮制,将应用移位等方法方法先从VB100的低四位(即十进制3)取出后存入一字节单元的低四位中(即为0000 0011)。与30H(即为0011 0000)相加,其后为0011 0011,这就是BCD码3的ASCII码了,。
4、所谓的BCD码就是用二进制表示的十进制数,只是数字转换ASCII码的编程是较简单的,不需求人。关键就是一个将高四位与低四位的数值弄清即可。可以编制一个子程序,多次调用即可。

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

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc220376.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年12月7日 下午1:18
下一篇 2017年12月7日 下午1:18

相关推荐