S7-200里面怎么实现批量处理功能?

分享到:
243
下一篇 >

我想实现这样的功能,比如有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

上面这样编程对吗?请指点下

------------------------------------------------------------------------------

你可能感兴趣: 工控菜鸟园 自动化系统 SIMATIC S7-200
无觅相关文章插件,快速提升流量