登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:S7-200 中怎样将INT数转换成 V 区的地址号?

点击:2107 回复:10

比如指定一个整数(INT)100 , 而要用的 VB100 这个寄存器,  同样, 指定 INT 数 200 , 要用的是VB200这个寄存器, 这个转换怎么写?
17-06-17 21:48
变址,指针.
movd 100,vd0
MOVD &VB0, AC1
+d vd0, AC1
mov? *ac1,??
最后修改:2017/6/18 6:43:09
17-06-18 06:29
在数据块->用户定义1 里定义
VB100 100
VB200 200
17-06-18 15:57
直接传送可以不,一个整数会占用两个字节,也就是16位,你的VB100是8位,所以一个整数100会占用vb100和vb101这两个寄存器,而这两个寄存器合起来就是vw1000,所以你只要将100传送到vw1000里面就能实现你想要的结果,200传送到vw200里面,道理一样的。
17-06-19 09:11
谢谢楼上各位解答,可能是我表述不清楚,  我不是要把 100 这个整数传到 VB100 ,  我的意思是在主程序中指定一个 整数 如  100 , 而我子程序中用的地址  是 VB100 ,  这个 100 是 V 区的第 100 个字节,  假定这里指定的是 N,   那么子程序中 用的就是  VB N, 就是要把指定的 整数 变成 V 区的地址编号
17-06-19 11:27

引用 ymxu 在 2017/6/19 11:27:28 发言【内容省略】

上面PQSH的回答就是了,唉,人家回答了却看不懂。表情
17-06-19 13:11

引用 fujifa 在 2017/6/19 13:11:01 发言【内容省略】

pqsh 的回答达不到那种要求
我现在用的是这种方法: 在主程序中指定一个整数 100, 在子程序中调用 VB100 之前,把 指定的整数 100 加上 16 #0800 0000 (VB0的内存地址) ,再把算好的结果存入 AC1,  此时 AC1 中存的就是 VB100 的内存地址, 再在程序中引用 *AC1, 那么就是指向 VB100 了
17-06-19 17:27

引用 ymxu 在 2017/6/19 17:27:32 发言【内容省略】

变址,指针.
movd 100,vd0    //将100存入VD0中,
MOVD &VB0, AC1   //将VB0的地址存入AC1中
+d vd0, AC1     //AC1中的VB0的地址+100,
mov? *ac1,??    //程序中引用*AC1
朋友,水平不行然后说人家回答达不到要求,然后说了一种方法……
17-06-19 19:49

引用 cvlsam 在 2017/6/19 19:49:40 发言【内容省略】

终于现在看明白了
17-06-19 20:04

引用 pqsh 在 2017/6/18 6:29:33 发言【内容省略】

谢谢了,刚开始真没看懂
17-06-19 20:05

上一页下一页

工控新闻

更多新闻资讯