flexium
级别: 正式会员
精华主题: 0
发帖数量: 9 个
工控威望: 53 点
下载积分: 282 分
在线时间: 12(小时)
注册时间: 2021-07-25
最后登录: 2024-08-29
查看flexium的 主题 / 回贴
楼主  发表于: 2021-08-04 00:20
我是新人小白,请大神帮忙我一下啊,看看我哪里写错了呀,
三菱ST中DDRVA执行后,DZRN无法回归原点的问题,单独回原点正常,执行
DDRVA移动后,再执行DZRN就无动作 详细请帮忙看看下面的程序

(*校准螺距*)
Current_Distance := Pulse_Current_Distance / ONE_Pulse_Feed;
IF Calibration THEN(*如果校准按钮被按下*)
    ONE_Pulse_Feed := Calibration_Distance / Pitch_Setting * K100;(*计算1mm所用脉冲值*)
    DDRVA ( Calibration,Calibration_Distance,Feeding_Distance,Pulse_Output,Y001);
    Direction_Output :=TRUE;(*正转方向启动*)
    IF M8029=TRUE THEN
        Direction_Output := FALSE;
        Calibration := FALSE;(*否则RST校准按钮*)    
    END_IF;
END_IF;

(*回原点*)
IF    NOT Backward_Limit AND NOT Enclosure_Not_Closed AND NOT Backward_Limit THEN
    DZRN (Back_Servo_Origin,K2000,K1000,Servo_Origin,Pulse_Output);
    IF Back_Servo_Origin THEN
    OUT_T(Scintillation=1,TC2,K10);
    OUT_T(Servo_Origin_Lamp =TRUE,TC1,K10);
        IF TC2 =TRUE THEN
            Servo_Origin_Lamp :=TRUE;
            IF TC1 =TRUE THEN
                Scintillation :=0;
            END_IF;
        ELSIF TC2 =FALSE THEN
            Servo_Origin_Lamp :=FALSE;
            Scintillation :=1;
        END_IF;
    END_IF;
END_IF;
IF Back_Servo_Origin THEN    
    IF Pulse_Current_Distance =K0  THEN
        Back_Servo_Origin :=FALSE;
        Servo_Origin_Lamp :=TRUE;
    END_IF;
ELSIF Pulse_Current_Distance <>K0 THEN
    Servo_Origin_Lamp :=FALSE;
END_IF;


最后在论坛的好心大哥帮助下,完美解决,提供修改的程序,帮忙大家避坑!!

IF Calibration THEN
    IF LDF(TRUE ,OUT_Puls_Monitor) THEN
        M340:=1;
    END_IF;
    OUT_T(M340=1,TC3,K100);
    IF TC3=1 THEN
        Calibration := FALSE;
        M340:=0;
    END_IF;
END_IF;
[ 此帖被flexium在2021-08-17 19:11重新编辑 ]
seafar
目前C#
级别: 家园常客
精华主题: 0
发帖数量: 619 个
工控威望: 764 点
下载积分: 1909 分
在线时间: 594(小时)
注册时间: 2018-03-23
最后登录: 2023-10-27
查看seafar的 主题 / 回贴
1楼  发表于: 2021-08-04 17:07
加个延时再触发回原点
枕星河之倒影兮与星光同流,望群星之包覆兮随繁星同辉。
B站资源分享链接https://space.bilibili.com/39855180