<big id="a5mua"></big>

      <tt id="a5mua"><dfn id="a5mua"></dfn></tt>
      <wbr id="a5mua"><sup id="a5mua"></sup></wbr>

        
        

      1. 亚洲综合小综合中文字幕,国产久爱免费精品视频,精品国产品香蕉在线,国产午夜精品在人线播放,精品一二三四区在线观看,国产成人无码免费看视频软件 ,色欲久久人妻内射,午夜在线观看成人av
        智趣黃sir
        級別: 探索解密
        精華主題: 0
        發帖數量: 76 個
        工控威望: 112 點
        下載積分: 1997 分
        在線時間: 38(小時)
        注冊時間: 2023-07-06
        最后登錄: 2026-03-02
        查看智趣黃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 篇
        發帖數量: 2637 個
        工控威望: 2921 點
        下載積分: 40364 分
        在線時間: 492(小時)
        注冊時間: 2010-08-03
        最后登錄: 2026-03-05
        查看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偷拍亚洲一区二区三区| 国产亚洲无日韩乱码| 人妻丝袜av中文系列先锋影音| 亚洲人精品午夜射精日韩| 久久久一本精品99久久| 亚洲av综合久久成人网| 日韩欧美一卡2卡3卡4卡无卡免费2020| 中文字幕一区二区三区久久蜜桃| 夜夜爱夜鲁夜鲁很鲁| 花蝴蝶日本高清免费观看| 日本精品一区二区不卡| 性大毛片视频| 宫西光有码视频中文字幕| 天堂网www在线| 久久天天躁狠狠躁夜夜不卡| jlzz大jlzz大全免费| 亚洲香蕉av一区二区蜜桃| 久久国产精品77777| 欲色欲色天天天www| 日韩人妻系列无码专区| 久久高清超碰AV热热久久| 久久精品夜夜夜夜夜久久| 国产精品自拍实拍在线看| 永久免费无码成人网站| 国产精品一码在线播放| 亚洲国产精品日韩在线| 国产精品久久久久久成人影院| 无码精品人妻一区二区三区中| 人妻在线无码一区二区三区| 中文字幕无线码在线观看| 在线不卡免费视频| 久久精品夜色国产亚洲av| 欧美xxxx做受欧美| 亚洲天堂网中文在线资源| 特级做a爰片毛片免费看无码| 免费中文熟妇在线影片| 无码国产精品一区二区VR老人| 国产99久久亚洲综合精品西瓜tv| 人妻少妇精品中文字幕| 国产色悠悠视频在线观看|