回复:STL如何实现DB块中数据分组循环提取

已锁定

askab

  • 帖子

    405
  • 精华

    5
  • 被关注

    34

论坛等级:侠圣

注册时间:2005-07-24

黄金 黄金 如何晋级?

发布于 2021-07-08 11:53:26

6楼

FUNCTION_BLOCK FB500


TITLE = 'Block Title'

//

// 数据存储并传送

//

VERSION: '1.0'

AUTHOR: baikai

NAME: data_T

FAMILY: baikai

know_how_protect


CONST

data_totall:=30;     //总数据 数量  根据自己需要定义

dtat_group:=10;     //一组数据数量

END_CONST


VAR_INPUT

read_enable:BOOL:=false;     //一次性读取数据使能

NC_NO:INT:=1;               //工作组序号

NC_enable:BOOL:=false;          //NC 允许传动信号

data_clear:BOOL;              //数据组清零

data_in:ARRAY[1..data_totall] OF REAL;   // 读取的数据

END_VAR


VAR

I:INT;   N:INT;

store_data:ARRAY[1..data_totall] OF REAL;    //一次性存储数据

send_data:ARRAY[1..data_totall] OF REAL;     //发送信号

END_VAR


IF   read_enable THEN

    

    FOR I:= 1 TO data_totall BY 1 DO

        store_data[I]:= data_in[I];

        

    END_FOR;

END_IF;

//以上为一次性存储需要个数的数据。


IF NC_enable THEN

    IF NC_NO = 1 THEN

        

        

         FOR N:= 1 TO dtat_group*NC_NO BY 1 DO

              send_data[N]:= store_data[N]; 

         END_FOR;

        ELSIF NC_NO > 1 THEN

           FOR N:= 1+ (NC_NO-1)*dtat_group TO dtat_group*NC_NO BY 1 DO

              send_data[N]:= store_data[N]; 

               END_FOR;

      END_IF;

 END_IF;

 IF data_clear THEN

    FOR N:= 1 TO data_totall BY 1 DO

              send_data[N]:= 0.0;

              store_data[N]:=0.0;

         END_FOR;

END_IF;

 

END_FUNCTION_BLOCK

         


大家同行,you ok ? me !
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54789条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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