回复:s7-1200 如何实现准确抓取问题

Sky仰望

  • 帖子

    24
  • 精华

    0
  • 被关注

    17

论坛等级:游侠

注册时间:2012-12-20

普通 普通 如何晋级?

发布于 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;
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15251条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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