quote:以下是引用念念吥忘在2012-05-17 21:16:38的发言:
自己做工业控制也一年多了,有些细节和基础知识还是有点模糊,感觉很汗颜。今天朋友发了我段程序,用的是CU定时器,CV_BCD输出到MW16中,且显示的数值为16#0010,在下一段的程序中,调用了一个CMP==I的比较块,比较MW16和一个常数,这里的MW16的值显示为16,我自己翻了半天资料也没弄明白怎么转换成的16。请各位老师讲解下BCD码和16进制的一些区别和转换吧,百度的都说的不清不楚的,看了反而更头大,谢谢了各位。
请看我发的帖子“容易让人糊涂的BCD码和十六进制数”:
http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=4&a_id=917109&s_id=0&pno=3 BCD码用于PLC的输入、输出设备,例如拨码开关输入的是BCD码,送给七段显示译码芯片的应该是BCD码。日期时间值是BCD码,计数器可以输出BCD码。
BCD码的难点在于它本质上是十进制数,却采用十六进制数的书写格式(16#)。
计数值为10的时候,计数器十六进制数输出值CV为16#a,BCD输出(CV_BCD)的输出值是BCD码16#10。
如果用变量表的十进制格式监控CV_BCD的值,它为18(即十六进制数16#12)。
如果要比较计数值,因为比较指令要求的数据类型为整数,可以用MW0参与比较,或者用指令BTI将它转换为十进制数10后,再参与比较。