恭喜,你发布的帖子
发布于 2019-03-01 15:26:39
5楼
试一下看看,是不是你要的效果,我放在云盘里https://pan.baidu.com/s/1FxkOLf6r4pfafxZFEGgIIQ
FUNCTION_BLOCK "templight"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
InputData : Int;
END_VAR
VAR
Complete : Bool;
n { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int;
ArryQ : Array[0..15] of Bool;
END_VAR
VAR_TEMP
Timeons : Bool;
END_VAR
BEGIN
"R_TRIG_DB"(CLK:="Clock_2Hz",
Q=>#Timeons);
CASE #InputData OF
1:
IF #Timeons& #n < 8 THEN
#ArryQ[#n] := 1;
//支持GATHER就用 GATHER(IN := #ArryQ,OUT => "Output"); //output=%QW0,
"Q0.0" := #ArryQ[0];
"Q0.1" := #ArryQ[1];
"Q0.2" := #ArryQ[2];
"Q0.3" := #ArryQ[3];
"Q0.4" := #ArryQ[4];
"Q0.5" := #ArryQ[5];
"Q0.6" := #ArryQ[6];
"Q0.7" := #ArryQ[7];
#n := #n + 1;
ELSIF #n=8 THEN
#n := 0;
FILL_BLK(IN := 0, COUNT := 8, OUT => #ArryQ[0]);
ELSE
FILL_BLK(IN := 0, COUNT := 8, OUT => #ArryQ[0]);
END_IF;
2:
IF #Timeons & #n < 7 THEN
#ArryQ[#n] := #ArryQ[#n + 1] := 1;
//支持GATHER就用 GATHER(IN := #ArryQ,OUT => "Output"); //output=%QW0,
"Q0.0" := #ArryQ[0];
"Q0.1" := #ArryQ[1];
"Q0.2" := #ArryQ[2];
"Q0.3" := #ArryQ[3];
"Q0.4" := #ArryQ[4];
"Q0.5" := #ArryQ[5];
"Q0.6" := #ArryQ[6];
"Q0.7" := #ArryQ[7];
#n := #n + 1;
ELSIF #n=7 THEN
#n := 0;
FILL_BLK(IN := 0, COUNT := 8,OUT => #ArryQ[0]);
ELSE
FILL_BLK(IN := 0, COUNT := 8,OUT => #ArryQ[0]);
END_IF;
3: IF #Timeons & #n < 6 THEN
#ArryQ[#n] := #ArryQ[#n + 1] := #ArryQ[#n + 2] := 1;
//支持GATHER就用 GATHER(IN := #ArryQ,OUT => "Output"); //output=%QW0,
"Q0.0" := #ArryQ[0];
"Q0.1" := #ArryQ[1];
"Q0.2" := #ArryQ[2];
"Q0.3" := #ArryQ[3];
"Q0.4" := #ArryQ[4];
"Q0.5" := #ArryQ[5];
"Q0.6" := #ArryQ[6];
"Q0.7" := #ArryQ[7];
#n := #n + 1;
ELSIF #n=6 THEN
#n := 0; FILL_BLK(IN := 0,COUNT := 8, OUT => #ArryQ[0]);
ELSE
FILL_BLK(IN := 0, COUNT := 8, OUT => #ArryQ[0]);
END_IF;
//4:....
END_CASE;
END_FUNCTION_BLOCK
请填写推广理由:
分享
只看
楼主