回复:西门子1200的指针如何定义、如何应用

吉利

  • 帖子

    268
  • 精华

    2
  • 被关注

    8

论坛等级:侠士

注册时间:2011-10-09

普通 普通 如何晋级?

发布于 2012-02-03 09:18:48

1楼

看到楼上的问题,我将这部分功能做了一下,现在贴上来希望对你有所帮助。
TAG_1控制数组的指针,采集的数据送入TAG_2,数据保存在Static_1数组中。
一、控制指针偏移最大值
1、在OB中放入CPM=指令来比较实际指针是否到达最大偏移量。
2、在OB中放入MOV指令并给TAG_1赋0。
当偏移量到达数组的最大深度时,执行MOV指令,指针归零。

二、在数组中保存数据
1、新建一个全局DB,在全局DB中再新建一个数组Static_1,Array [0..1000] of Real数组的大小根据你数据采集量而定,注意数组小于指针最大偏量时会产生保存出错;数组中的数据类型根据数据宽度确定是REAL或是LREAL,我这里用的是REAL。
2、在PLC变量表中声明变量TAG_1其数据类型为DINT,声明变量TAG_2,其数据类型也要与数组的数据类型相一致;
3、在OB中放入FieldWrite指令块,选择该指令块的数据类型也要与数组的数据类型相一致;
4、将变量TAG1赋给INDEX端口,将变量TAG2赋给VALUE端口,将数组的Static_1[0]拖放给输出MEMBER端口;

三、数组指针偏移
1、在OB中放入INC指令,选择该指令块数据类型为DINT(与TAG_1数据类型一致)
2、将TAG_1拖入IN/OUT端口,并赋常数值1。
3、每保存一次数据执行一次INC指令。
在线状态下做了数据模拟,抓图如下:



定时保存数据程序我就省略了。欢迎大侠们批评指证
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15376条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。