最近准备用MT500连接松下的PLC,出于成本考虑,PLC没有时钟模块,由触摸屏在上电时将时钟写入到PLC的寄存器。
触摸屏的时钟格式是BCD码,而松下的时钟贮存格式是二进制,而且是一个字里面贮存年/月两个内容,这样就要使用二进制转换。
我的宏指令是这样的:
Macro_Command main()
short iYear, iMonth, iDay, iHour, iMinute, iSecond
short iTemp
//取得年月日
GetData(iYear, RW_Bcdplc, 60005, 1)
GetData(iMonth, RW_Bcdplc, 60004, 1)
GetData(iDay, RW_Bcdplc, 60003, 1)
GetData(iHour ,RW_Bcdplc ,60002,1)
GetData(iMinute ,RW_Bcdplc ,60001,1)
GetData(iSecond ,RW_Bcdplc ,60000,1)
iTemp = 0xFF And iYear
SetData(iTemp ,RW_Binplc ,0,1)
End Macro_Command
在iTemp = 0xF and iYear这一行,本来是想得到数字8的,没想到结果竟是1!
想来想去,这是不是因为宏解释器把AND作为了布尔运算符了?
这该怎样解决呢?
谢谢了!