我想实现这样的功能,比如有50个字,从VW2000到VW209,
VW2000=0时,VW10=1
VW2002=0时,VW10=1
VW2004=0时,VW10=1
...............
VW2098=0时,VW10=1
如果一条条程序写的话要50行,很麻烦。这还是50个字的批量比较,如果200个字的呢,那岂不是要200行。
所以请问下S7-200里面怎么实现批量处理功能?
------------------------------------------------------------------------------
那就是说任何一个字等于0的时候vw10都等于1了?LD SM0.1
MOVD &VB2000, LD0
LDW= *LD0, 0
MOVW 1, VW10
LD SM0.0
+D 2, LD0
LDW>= LW2, 2098
MOVD &VB2000, LD0
------------------------------------------------------------------------------
芳季大哥,请问*后面为什么用>= 呢?不是应该<=吗
------------------------------------------------------------------------------
谢谢芳季兄,另外请教个问题:现在我有3组输入数据群,一组是从VW2000开始到VW2098,一组是从VW2100开始到VW2198,一组是从VW2200开始到VW2298,每组都是50个字的输入数据,每个字的输入数据代表一格(从1到50),另外VW250表示格数。当VW2000或VW2100或VW2200有输入数据时,VW250为1
当VW2002 / VW2102 / VW2202有输入数据时,VW250为2
当VW2004 / VW2104 / VW2204有输入数据时,VW250为3
··············
当VW2098 / VW2198 / VW2298有输入数据时,VW250为50
当这些输入框没有输入数据时,VW250为0
另外可以修改格数,修改后为当前格并且把当前格的数据更新
请问怎么实现,怎么实现指针编程呢?
------------------------------------------------------------------------------
这是我照着手册做的,请帮忙看下对不对LD Always_On:SM0.0
MOVD &VB2000, AC1
ITD VW250, AC0
*D 50, AC0
+D AC0, AC1
BMW *AC1, VW3000, 50
本来*后的是BMB *AC1, Vb3000, 50
但这样的话就是50个字节的指针了,所以我就改成BMW *AC1, VW3000, 50,变成50个字的指针,不知这样用是否对?
------------------------------------------------------------------------------
以下是引用zjw01316在2014-07-15 15:23:54的发言 >2楼:芳季大哥,请问*后面为什么用>= 呢?不是应该<=吗这是检查已经超限的情况,所以是大等于。
------------------------------------------------------------------------------
三个块就用三次啦。可以修改格数,不懂什么意思。
你是指用一个输入地址,通过间接寻址写到任意地址吗?那也是间接寻址的功能,自己参详参详了。
bmb改成bmw可以这样做的。
------------------------------------------------------------------------------
当VW250不等于0时,把VW2000~VW2098里的任一值指针指向当前实时值VW522,编程如下:LD Always_On:SM0.0
AW<> VW250, 0
MOVD &VB2000, LD12
+D 2, LD12
MOVW *LD12, VW522
上面这样编程对吗?请指点下
------------------------------------------------------------------------------