电工基础

电工基础知识_电工技术-电工最常见电路

西门子S7-200不用监控如何知道VB2000中的值

时间:2019-06-27 17:01来源:未知 作者:admin 点击:
西门子200PLC中在一个变量前边加一个符号就代表创建一个指针,在变量前边加一个*就表示要取出指针指向的地址中的内容。所以你图片VD2200就是一个指针了,且这个指针指向的地址就是

西门子200PLC中在一个变量前边加一个“&”符号就代表创建一个指针,在变量前边加一个“*”就表示要取出指针指向的地址中的内容。所以你图片VD2200就是一个指针了,且这个指针指向的地址就是VB2000,你如果想知道VB2000中的内容,就要用取出指针地址的符号“*”,即*VD2200就能实现读出VB2200中内容的作用!
还是看图吧:
你说你在程序中搜索不到VB2000,所以我也做了一个搜索不到VB2000的程序,如下:

西门子S7-200不用监控如何知道VB2000中的值
我这个程序就是只有在主程序中写的这两行。
网络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)
织梦二维码生成器
相关文章
------分隔线----------------------------