无码精品人妻一区二区三区入口-无码精品人妻一区二区三区夜夜嗨-无码精品人妻一区二区三区颖A片-无码精品日本一区二区桃花岛-无码精品网站-无码精品一

智趣黃sir
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 68 個
工控威望: 102 點
下載積分: 1777 分
在線時間: 32(小時)
注冊時間: 2023-07-06
最后登錄: 2025-04-25
查看智趣黃sir的 主題 / 回貼
樓主  發(fā)表于: 2024-12-16 14:22
1,采用匯川的EASy521,程序想實現(xiàn)自動切手動,只動氣缸,怕操作者移動軸,因為軸如果移動的話,沒法監(jiān)測到是否移動,再切回自動的話,會導致撞車。
本人的思路是如以下程序,切到手動的M3下降沿,記錄當前位置,再切回自動,進行差值計算,只能實現(xiàn)部分,還請各位大神指點。M3是自動模式,M4是自動運行中。現(xiàn)在的問題是可以實現(xiàn)部分功能,但是拍急停的話,就會出現(xiàn)報警,因為急停拍下后,各個軸就立即停止。


自動模式下降沿(CLK := M3,Q => );
IF 自動模式下降沿.Q THEN
    X自動前位置old:=X_Axis.fActPosition;
    Y自動前位置old:=Y_Axis.fActPosition;
    Z自動前位置old:=Z_Axis.fActPosition;
    L自動前位置old:=Lift_Axis.fActPosition;
END_IF;

自動模式上升沿(CLK := M4 ,Q => );
IF 自動模式上升沿.Q then
    X自動前位置new:=X_Axis.fActPosition;
    Y自動前位置new:=Y_Axis.fActPosition;
    Z自動前位置new:=Z_Axis.fActPosition;
    L自動前位置new:=Lift_Axis.fActPosition;

    X自動前位置差值:=X自動前位置new-X自動前位置old;
    X自動前位置點位差值:=X自動前位置new-POSTION_X[X_Axis_AutoAbNum];
    X自動前位置差值絕對值:=ABS(X自動前位置差值);
    X自動前位置點位差值絕對值:=ABS(X自動前位置點位差值);

    Y自動前位置差值:=Y自動前位置new-Y自動前位置old;
    Y自動前位置點位差值:=Y自動前位置new-POSTION_Y[Y_Axis_AutoAbNum];
    Y自動前位置差值絕對值:=ABS(Y自動前位置差值);
    Y自動前位置點位差值絕對值:=ABS(Y自動前位置點位差值);
    
        Z自動前位置差值:=Z自動前位置new-Z自動前位置old;
    Z自動前位置點位差值:=Z自動前位置new-POSTION_Z[Z_Axis_AutoAbNum];
    Z自動前位置差值絕對值:=ABS(Z自動前位置差值);
    Z自動前位置點位差值絕對值:=ABS(Z自動前位置點位差值);
    
        L自動前位置差值:=L自動前位置new-L自動前位置old;
    L自動前位置差值絕對值:=ABS(L自動前位置差值);

END_IF;

IF M4=true AND X自動前位置差值絕對值>E0.5  AND X自動前位置點位差值絕對值>E0.5 THEN
           Alarm[86]:=TRUE;
END_IF;
IF M4=true AND Y自動前位置差值絕對值>E0.5  AND Y自動前位置點位差值絕對值>E0.5 THEN
           Alarm[87]:=TRUE;
END_IF;
IF M4=true AND Z自動前位置差值絕對值>E0.5  AND Z自動前位置點位差值絕對值>E0.5 THEN
           Alarm[88]:=TRUE;
END_IF;
IF M4=true AND L自動前位置差值絕對值>E0.5  THEN
           Alarm[89]:=TRUE;
END_IF;
payfsl
級別: 工控俠客
精華主題: 2 篇
發(fā)帖數(shù)量: 2620 個
工控威望: 2898 點
下載積分: 40085 分
在線時間: 488(小時)
注冊時間: 2010-08-03
最后登錄: 2025-04-16
查看payfsl的 主題 / 回貼
1樓  發(fā)表于: 2024-12-30 19:49
您的程序邏輯是在自動模式切換到手動模式時記錄軸的位置,然后從手動模式切換回自動模式時計算位置差值,如果差值超過設定的閾值,則觸發(fā)報警。這個邏輯是合理的,但是您提到的問題是在急停情況下會出現(xiàn)報警,因為急停會導致軸立即停止,這可能會導致位置差值計算出現(xiàn)異常。

為了解決這個問題,您可以考慮以下幾個步驟:

1. **增加急停狀態(tài)檢測**:在您的程序中增加一個變量來檢測急停狀態(tài),當急停按鈕被按下時,這個變量會被設置為真。

2. **在急停狀態(tài)下跳過位置差值計算**:在您的程序中,當檢測到急停狀態(tài)時,跳過位置差值的計算和報警觸發(fā)。

3. **急停恢復后重置位置**:當急停狀態(tài)被解除后,重置軸的位置記錄,以便下一次從手動切換到自動時能夠正確計算位置差值。

以下是修改后的程序示例:

```pascal
VAR
    急停狀態(tài): BOOL; (* 急停狀態(tài)標志 *)
    X自動前位置old: REAL;
    Y自動前位置old: REAL;
    Z自動前位置old: REAL;
    L自動前位置old: REAL;
    X自動前位置new: REAL;
    Y自動前位置new: REAL;
    Z自動前位置new: REAL;
    L自動前位置new: REAL;
    X自動前位置差值: REAL;
    Y自動前位置差值: REAL;
    Z自動前位置差值: REAL;
    L自動前位置差值: REAL;
    X自動前位置點位差值: REAL;
    Y自動前位置點位差值: REAL;
    Z自動前位置點位差值: REAL;
    X自動前位置差值絕對值: REAL;
    Y自動前位置差值絕對值: REAL;
    Z自動前位置差值絕對值: REAL;
    L自動前位置差值絕對值: REAL;
    X自動前位置點位差值絕對值: REAL;
    Y自動前位置點位差值絕對值: REAL;
    Z自動前位置點位差值絕對值: REAL;
END_VAR

自動模式下降沿(CLK := M3, Q => );
IF 自動模式下降沿.Q THEN
    IF NOT 急停狀態(tài) THEN
        X自動前位置old := X_Axis.fActPosition;
        Y自動前位置old := Y_Axis.fActPosition;
        Z自動前位置old := Z_Axis.fActPosition;
        L自動前位置old := Lift_Axis.fActPosition;
    END_IF;
END_IF;

自動模式上升沿(CLK := M4, Q => );
IF 自動模式上升沿.Q THEN
    IF NOT 急停狀態(tài) THEN
        X自動前位置new := X_Axis.fActPosition;
        Y自動前位置new := Y_Axis.fActPosition;
        Z自動前位置new := Z_Axis.fActPosition;
        L自動前位置new := Lift_Axis.fActPosition;

        X自動前位置差值 := X自動前位置new - X自動前位置old;
        X自動前位置點位差值 := X自動前位置new - POSTION_X[X_Axis_AutoAbNum];
        X自動前位置差值絕對值 := ABS(X自動前位置差值);
        X自動前位置點位差值絕對值 := ABS(X自動前位置點位差值);

        Y自動前位置差值 := Y自動前位置new - Y自動前位置old;
        Y自動前位置點位差值 := Y自動前位置new - POSTION_Y[Y_Axis_AutoAbNum];
        Y自動前位置差值絕對值 := ABS(Y自動前位置差值);
        Y自動前位置點位差值絕對值 := ABS(Y自動前位置點位差值);

        Z自動前位置差值 := Z自動前位置new - Z自動前位置old;
        Z自動前位置點位差值 := Z自動前位置new - POSTION_Z[Z_Axis_AutoAbNum];
        Z自動前位置差值絕對值 := ABS(Z自動前位置差值);
        Z自動前位置點位差值絕對值 := ABS(Z自動前位置點位差值);

        L自動前位置差值 := L自動前位置new - L自動前位置old;
        L自動前位置差值絕對值 := ABS(L自動前位置差值);

        IF M4 = TRUE AND X自動前位置差值絕對值 > E0.5 AND X自動前位置點位差值絕對值 > E0.5 THEN
            Alarm[86] := TRUE;
        END_IF;
        IF M4 = TRUE AND Y自動前位置差值絕對值 > E0.5 AND Y自動前位置點位差值絕對值 > E0.5 THEN
            Alarm[87] := TRUE;
        END_IF;
        IF M4 = TRUE AND Z自動前位置差值絕對值 > E0.5 AND Z自動前位置點位差值絕對值 > E0.5 THEN
            Alarm[88] := TRUE;
        END_IF;
        IF M4 = TRUE AND L自動前位置差值絕對值 > E0.5 THEN
            Alarm[89] := TRUE;
        END_IF;
    END_IF;
END_IF;

(* 急停按鈕被按下時設置急停狀態(tài) *)
急停按鈕按下(CLK := E-Stop, Q => );
IF 急停按鈕按下.Q THEN
    急停狀態(tài) := TRUE;
END_IF;

(* 急停按鈕釋放后重置急停狀態(tài)和軸位置 *)
急停按鈕釋放(CLK := E-Stop, Q => );
IF 急停按鈕釋放.Q THEN
    急停狀態(tài) := FALSE;
    X自動前位置old := X_Axis.fActPosition;
    Y自動前位置old := Y_Axis.fActPosition;
    Z自動前位置old := Z_Axis.fActPosition;
    L自動前位置old := Lift_Axis.fActPosition;
END_IF;
```

請注意,您需要根據(jù)您的實際硬件和軟件環(huán)境調(diào)整上述代碼。希望這些修改能夠幫助您解決問題。
本帖最近評分記錄:
  • 下載積分:+1(一輪明月) X動前位置點位差值這個的 ..
  • 下載積分:+2(智趣黃sir) 謝謝大佬,思路清晰
  • 三人行必有我?guī)熝桑瑩衿渖普叨鴱闹?,學而不思則罔,思而不學則殆

    主站蜘蛛池模板: 欧洲无线一线二线三线怎么区分 | 国产女主播一二三区丝袜 | 老司国产高清免费视频 | 国产精品内射后入合集 | 精品人妻系列无码人妻免费视 | 波多野结衣一区二区三区高清 | 高清无码在线苍井空 | 欧美性猛交aa一级 | 糖心VLOG精品一区二区 | 最新亚洲av日韩av一区二区三区 | 日本视频免费高清一本18 | 国产精品国产自线拍免费 | 国产主播AV福利精品一区 | 国产成人精品免费视频大全办 | 免费观看又色又爽又黄的软件 | 成人精品一区二区三区电影免 | 九九久久久久无码国产精品 | 日本午夜视频在 | 国产一区二区三区高清视频在线 | 精品亚洲av无码四区妖精 | 国产精品美女www爽爽爽 | 99久久久无码国产精品免费砚床 | 亚洲精品欧美中文字幕 | 18禁在线试看丨天堂αv日本国产丨亚洲成在人线av | 美女狠狠干 | 艳妇荡岳丰满交换做爰 | 婷婷丁香在线观看 | 国产欧美在线一区二区三区 | 国产福利在线观看免费第一福利 | 国产日产欧产精品精品推荐 | 国产白丝jk制服在线视频 | 久久极品视频 | av中文字幕不卡 | 国产精品天干天干在线下载 | 国产在线观看免费视频在线 | 国产人妻系列无码专区第二页 | 国产精品视频一区二区 | 风流老熟女一区二区三区 | 国产精品日韩电影制服丝袜 | 国产女同调教 | 国产91足控脚交在线观看 |