发布于 2015-06-26 13:24:38
4楼
s7-1200 没有先入先出的功能块 只有自己去写这些类似的功能块 下面方式写法完全可以实现这种功能了
(****************************前端检测结果存储***********************)
"R_TRIG_DB_1"(CLK := "Debug_X0", //X0前端检测物料信号
Q => "Debug_X0_R");
IF "Debug_X0_R" = TRUE THEN //前端检测物料 每增加一个物料加1
"K":= "K" + 1;
"En":= TRUE;
END_IF;
IF "En" = TRUE THEN
IF "NEG" = TRUE THEN //检测物料结果输出有效位
IF "OK" = TRUE THEN
"Debug_Data".Debug_Array["K"] := 00;
END_IF;
IF "NG" = TRUE THEN
"Debug_Data".Debug_Array["K"] := 01;
END_IF;
END_IF;
END_IF;
"F_TRIG_DB"(CLK:="NEG",
Q=>"NEG_R");
IF "NEG_R" = TRUE THEN
"En":= FALSE;
END_IF;
(****************************后端检测读取结果数据***********************)
"R_TRIG_DB_2"(CLK := "Debug_X1", //X1后端检测物料信号
Q => "Debug_X1_R");
IF "Debug_X1_R" = TRUE THEN
"Debug_Read" := "Debug_Data".Debug_Array[1];
END_IF;;
IF "Debug_Read" = 01 THEN
"Q0.0" := TRUE;
ELSIF "Debug_Read" = 00 THEN
"Q0.0" := FALSE;
END_IF;
"F_TRIG_DB_1"(CLK:="Debug_X1",
Q=>"Debug_X1_F");
IF "Debug_X1_F"=TRUE THEN
"K" := "K" - 1;
MOVE_BLK(IN := "Debug_Data".Debug_Array[2],
COUNT :="K",
OUT => "Debug_Data".Debug_Array[1]);
"Debug_Data".Debug_Array["K" + 1] := 0;
END_IF;