发布于 2013-09-19 09:17:48
3楼
纯粹从英文字面上理解‘AcutalDateTime’数据的类型应该是DT(DATE_AND_TIME),那么它的数据由8个字节组成,用十六进制的值表示十进制的数,例如:B#16#12 = 12 (十进制)
下面西门子关于DT手册下载地址:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0019
L LD 12
L P#1.0
+D
T LD 12
L P##AcutalDateTime //取DT数据(实际日期)的指针
LAR1 //将DT数据(实际日期)的指针存入地址寄存器1
L 40
T LD12
L LD [AR1,P#0.0] //将DT数据前4个字节读入累加器1
T DID [LD 12] //存入背景数据块DID40
SRD 16 //将累加器1中的DT数据前4个字节右移16位(剩下后2个字节,小时和日,过滤掉月和年)
L P#576.7(重点不理解) //P#576.7 = 00010010 00000111 = B#16#12和B#16#7 (7日12时)
L LD 12
L P#4.0
+D
T LD 12
哈哈,这里P#576.7的确有点蒙人哪,主要是为了表示一个32位数用了另一种手段,也算经典手段之一吧!可能表示成DW#16#1207更好一些,反正是个常数,否则,程序可读性变差,不知道作者是怎么想的!
人的生命似洪水在奔流,不遇着岛屿、暗礁,难以激起美丽的浪花。