西门子200PLC中在一个变量前边加一个“&”符号就代表创建一个指针,在变量前边加一个“*”就表示要取出指针指向的地址中的内容。所以你图片VD2200就是一个指针了,且这个指针指向的地址就是VB2000,你如果想知道VB2000中的内容,就要用取出指针地址的符号“*”,即*VD2200就能实现读出VB2200中内容的作用! 我这个程序就是只有在主程序中写的这两行。 网络1处我是利用字符串复制指令把字符串“ABCDEF”存储到VB1998开头的字符串中,VB1998中的值是6代表这个字符串有6个字符,VB1999开始才是装着字符的。VB2000中的字符应该是“B”,而且在我的程序中你也所搜不到VB2000。 网络2是按照你的程序把&VB2000这个指针装入到VD2200中,西门子200中指针是32位的,所以这里必须用MOV_DW指令,装入到VD2200中。 注意:这里我说&VB2000其实就是一个指针了,这个可以理解指针是指向VB2000在CPU中的物理地址,16#080007D0就表示是物理代码的地址,CPU访问这串代码就可以访问到VB2000。 此时的VD2200中,就装着这个物理地址的代码,是指向VB2000的指针。+134219728 和 16#080007D0是相当的,下边的监控表中可以看到,一个是10进制显示一个是16进制显示而已! 然后*VD2000就是要取出指针指向的地址中的内容,所以程序中可以看到66(VB2000),就是说指针是指向的地址是VB2000,而VB2000中的内容是66。 而后把取出的值传送到MB20中,所以MB20=66。 (责任编辑:admin) |