恭喜,你发布的帖子
发布于 2015-10-30 11:40:48
10楼
FUNCTION_BLOCK FB4
VAR_INPUT
data_input:INT:=0; //输入数据 整型
transfer_enable:BOOL:=false; //允许刷新
FP_1Sec:BOOL:=false; //定制一秒脉冲波
END_VAR
VAR_OUTPUT
// Output Parameters
data_output:ARRAY[0..14] OF INT:=0; //定义15组数据
data_out:INT:=0; //当前输出数据,如果只记录,则可以不用
END_VAR
VAR
i:INT;
Impls_1Sec_Aux,Impls_1Sec:BOOL;
count:INT; //定制计数器
END_VAR
Impls_1Sec:= FP_1Sec AND (NOT Impls_1Sec_Aux);
Impls_1Sec_Aux:= FP_1Sec;
IF Impls_1Sec AND transfer_enable THEN
count:= count +1;
ELSIF NOT transfer_enable OR ( count >=16) THEN //刷新次数到达最大15次或者禁止刷新,则计 //数器清零
count:=0;
END_IF;
FOR i:= 0 TO 14 BY 1 DO
IF transfer_enable THEN //如果允许存储
data_output[count]:= data_input; //存储数据到0-14
//data_output[count-1]:= 0; //存储当前数据,清零上个数据 ,如果不需要,则删除此 //语句
ELSE
data_output[i]:=0; //如果禁止存储,存储组数据全部清零
END_IF;
END_FOR;
data_out:=data_output[i];
//如果仅仅是存储数据,则以下语句删除即可
IF data_input <> data_out THEN
data_out:= data_input;
END_IF;
END_FUNCTION_BLOCK
请填写推广理由:
分享
只看
楼主