登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:检查判断buffer类型

点击:929 回复:3

L     P##IN_Buffer                // Load buffer pointer
     LAR1                                  // Load ind.register AR1
     L     W [AR1,P#0.0]               // Get source DB address
     T     #TMP_Buffer
     L     W#16#10                     // Point to byte 2
     +AR1  
     L     B [AR1,P#0.0]               // Get buffer memory area type
     L     B#16#85                     // Load DI type code
     >I                                     // IF memory area type is L [local data]
     JC    END                           // THEN jump to exit
     TAK                                     // Load memory area type
     L     B#16#84                     // Load DB type code
           JC    END                             // THEN jump to exit
     T     B [AR1,P#0.0]                 // Force buffer memory area type=DB
     OPN   DB [#TMP_Buffer]            // Open  buffer memory area
     L     D [AR1,P#0.0]                 // Get    buffer memory area address
     T     #TMP_Buffer_Address         // Update buffer memory area address
我想问一下程序中的 L     W [AR1,P#0.0]  和  L     B [AR1,P#0.0] 中的W B有什么不一样  还有就是 L     B#16#84  为什么对应DB TYPE 而  L     B#16#85 对应DI type
08-12-26 09:08
还有就是L     P##IN_Buffer                其中的##表示什么意思  程序中IN_Buffer  为指针类型#IN_Buffer  是不是取出IN_Buffer  的内容
08-12-26 09:13
W-------WORD         B--------Byte  这就是W与B的区别~~
B#16#84与85对应何值并无讨论为什么的必要,因为西门子就这样规定的。
P#代表指针,而#IN_buffer代表符号变量,两者连起来就成了P##……了。
程序中#IN_Buffer是一个临时的符号变量,这段程序应该是作为FB或者FC来运作的,因此在符号名IN_Buffer前会有用到#,并非#就代表指针,西门子中:指针会被明确的使用P#来定义。
以上
08-12-26 09:36
谢谢楼主了 我在资料上看到了B#16#84与85 代表的含义了  B W代表为宽 就是字节和字的宽度 至于那个指针我在好好消化一下撒!
08-12-26 10:10

工控新闻

更多新闻资讯