• <cite id="uwv89"></cite>
      1. 亚洲综合小综合中文字幕,国产久爱免费精品视频,精品国产品香蕉在线,国产午夜精品在人线播放,精品一二三四区在线观看,国产成人无码免费看视频软件 ,色欲久久人妻内射,午夜在线观看成人av
        智趣黃sir
        級別: 探索解密
        精華主題: 0
        發帖數量: 73 個
        工控威望: 109 點
        下載積分: 1802 分
        在線時間: 35(小時)
        注冊時間: 2023-07-06
        最后登錄: 2025-08-30
        查看智趣黃sir的 主題 / 回貼
        樓主  發表于: 2024-12-16 14:22
        1,采用匯川的EASy521,程序想實現自動切手動,只動氣缸,怕操作者移動軸,因為軸如果移動的話,沒法監測到是否移動,再切回自動的話,會導致撞車。
        本人的思路是如以下程序,切到手動的M3下降沿,記錄當前位置,再切回自動,進行差值計算,只能實現部分,還請各位大神指點。M3是自動模式,M4是自動運行中。現在的問題是可以實現部分功能,但是拍急停的話,就會出現報警,因為急停拍下后,各個軸就立即停止。


        自動模式下降沿(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 篇
        發帖數量: 2630 個
        工控威望: 2911 點
        下載積分: 40118 分
        在線時間: 490(小時)
        注冊時間: 2010-08-03
        最后登錄: 2025-08-17
        查看payfsl的 主題 / 回貼
        1樓  發表于: 2024-12-30 19:49
        您的程序邏輯是在自動模式切換到手動模式時記錄軸的位置,然后從手動模式切換回自動模式時計算位置差值,如果差值超過設定的閾值,則觸發報警。這個邏輯是合理的,但是您提到的問題是在急停情況下會出現報警,因為急停會導致軸立即停止,這可能會導致位置差值計算出現異常。

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

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

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

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

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

        ```pascal
        VAR
            急停狀態: BOOL; (* 急停狀態標志 *)
            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 急停狀態 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 急停狀態 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;

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

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

        請注意,您需要根據您的實際硬件和軟件環境調整上述代碼。希望這些修改能夠幫助您解決問題。
        本帖最近評分記錄:
      2. 下載積分:+1(一輪明月) X動前位置點位差值這個的 ..
      3. 下載積分:+2(智趣黃sir) 謝謝大佬,思路清晰
      4. 三人行必有我師焉,擇其善者而從之 ,學而不思則罔,思而不學則殆

        主站蜘蛛池模板: 国产精品无码久久久久AV| 亚洲中文字幕无码爆乳| 97无码人妻福利免费公开在线视频| av中文字幕国产精品| 日本道不卡一二三区视频| 国产高清精品在线一区二区| 精品日本免费一区二区三区| 又黄又刺激又黄又舒服| 国产一区二区av天堂热| 精品国产一区AV天美传媒| 国产综合久久99久久| 91精品国产午夜福利| 四虎精品视频永久免费| 国产精品自产在线观看一| 亚洲国产中文在线有精品| 国产偷国产偷亚洲高清日韩| 国产精品日韩专区第一页| 亚洲精品国产自在现线最新| 国产一区二区三区免费观看| 好吊视频一区二区三区人妖| 2020精品自拍视频曝光| 91人妻无码成人精品一区91| a毛片在线看片免费看| 国产熟女一区二区五月婷| 国产精品午夜福利免费看| 亚洲精品国产字幕久久麻豆| 国产精品美女一区二三区| 久久综合国产色美利坚| 久久96热在精品国产高清| 国产又色又爽又黄的视频在线 | 国产午夜福利视频在线| 国产精品视频中文字幕| 国产精品中文字幕av| 国产成人精品视频不卡| 四虎成人在线观看免费| 亚洲一区久久蜜臀av| 亚洲精品日本一区二区| 美女无遮挡免费视频网站| 少妇高潮喷水正在播放| 永久免费av网站可以直接看的| 国产精品成人久久电影|