用1200做了台机器,调试过程中发现点小问题。
机器旋转部分有30个工位,每个工位相同,朝一个方向旋转。机器旋转一周有每周传感器信号,每个工位有工位传感器信号,每个工位还细分为13个齿轮信号。
程序中创建一个位数组,对应30个工位。
机器固定位置装有光电传感器,当工位旋转到传感器位置时,程序判断此工位有没有料,判断时机通过HMI设定。
在实际使用过程中,机器慢速(每工位耗时3秒,每个齿轮信号占230毫秒)时一切正常,数组可以很准确记录所以工位有无料情况,当机器速度稍快时(每工位耗时1秒,每个齿轮信号占78毫秒),数组所有位均为FAULT,无法反应实际情况。
程序1为之前的写法,发现快慢速的问题后改写成程序2. 两个程序都是一样的问题。
程序1
IF #numCycleBottleMake = 1 AND #numCounterGear =#inTubeCheckTimeSeq THEN
IF #inSensorTubeRod THEN
"GLOBAL DB".TUBE_EXIST_IF[#numCounterWorkstation] := TRUE;
ELSE
"GLOBAL DB".TUBE_EXIST_IF[#numCounterWorkstation] := FALSE;
END_IF;
END_IF;
程序2
#R_TRIG_Instance_8(CLK:= (#numCounterGear >= #inTubeCheckTimeSeq) AND (#numCounterGear <= #inTubeCheckTimeSeq+2) );
IF #numCycleBottleMake =1 AND #R_TRIG_Instance_8.Q THEN
IF #inSensorTubeRod THEN
"GLOBAL DB".TUBE_EXIST_IF[#numCounterWorkstation] := TRUE;
ELSE
"GLOBAL DB".TUBE_EXIST_IF[#numCounterWorkstation] := FALSE;
END_IF;
END_IF;
怀疑是数齿轮的接近开关位置装的不好, 速度快时导致程序判断条件不满足。但是程序其它地方也用到这一信号,并没有什么问题。同时当时没有足够时间调试,所以先把接近开关放到一边。
各位看看程序本身有没有什么问题,可能导致我所说的问题。
机器旋转部分有30个工位,每个工位相同,朝一个方向旋转。机器旋转一周有每周传感器信号,每个工位有工位传感器信号,每个工位还细分为13个齿轮信号。
程序中创建一个位数组,对应30个工位。
机器固定位置装有光电传感器,当工位旋转到传感器位置时,程序判断此工位有没有料,判断时机通过HMI设定。
在实际使用过程中,机器慢速(每工位耗时3秒,每个齿轮信号占230毫秒)时一切正常,数组可以很准确记录所以工位有无料情况,当机器速度稍快时(每工位耗时1秒,每个齿轮信号占78毫秒),数组所有位均为FAULT,无法反应实际情况。
程序1为之前的写法,发现快慢速的问题后改写成程序2. 两个程序都是一样的问题。
程序1
IF #numCycleBottleMake = 1 AND #numCounterGear =#inTubeCheckTimeSeq THEN
IF #inSensorTubeRod THEN
"GLOBAL DB".TUBE_EXIST_IF[#numCounterWorkstation] := TRUE;
ELSE
"GLOBAL DB".TUBE_EXIST_IF[#numCounterWorkstation] := FALSE;
END_IF;
END_IF;
程序2
#R_TRIG_Instance_8(CLK:= (#numCounterGear >= #inTubeCheckTimeSeq) AND (#numCounterGear <= #inTubeCheckTimeSeq+2) );
IF #numCycleBottleMake =1 AND #R_TRIG_Instance_8.Q THEN
IF #inSensorTubeRod THEN
"GLOBAL DB".TUBE_EXIST_IF[#numCounterWorkstation] := TRUE;
ELSE
"GLOBAL DB".TUBE_EXIST_IF[#numCounterWorkstation] := FALSE;
END_IF;
END_IF;
怀疑是数齿轮的接近开关位置装的不好, 速度快时导致程序判断条件不满足。但是程序其它地方也用到这一信号,并没有什么问题。同时当时没有足够时间调试,所以先把接近开关放到一边。
各位看看程序本身有没有什么问题,可能导致我所说的问题。