雪山飛狐
級(jí)別: 網(wǎng)絡(luò)英雄
精華主題: 0
發(fā)帖數(shù)量: 12614 個(gè)
工控威望: 15302 點(diǎn)
下載積分: 39767 分
在線時(shí)間: 952(小時(shí))
注冊(cè)時(shí)間: 2019-06-05
最后登錄: 2025-01-03
查看雪山飛狐的 主題 / 回貼
12樓  發(fā)表于: 11天前
這個(gè)要采用中斷的方式去做。
本帖最近評(píng)分記錄:
  • 下載積分:+5(jony7788) 感謝分享!
    xy8896
    級(jí)別: 正式會(huì)員
    精華主題: 0
    發(fā)帖數(shù)量: 41 個(gè)
    工控威望: 91 點(diǎn)
    下載積分: 4809 分
    在線時(shí)間: 40(小時(shí))
    注冊(cè)時(shí)間: 2023-06-23
    最后登錄: 2025-01-03
    查看xy8896的 主題 / 回貼
    13樓  發(fā)表于: 11天前
    看是何時(shí)檢查開(kāi)關(guān)信號(hào),如起點(diǎn)檢查就簡(jiǎn)單,運(yùn)行中檢查后一個(gè)肯定會(huì)有加減速的,感應(yīng)器用變址寫法,程序比較簡(jiǎn)短
    夢(mèng)雨天涯
    微信hui530527   &
    級(jí)別: 網(wǎng)絡(luò)英雄
    精華主題: 0
    發(fā)帖數(shù)量: 4368 個(gè)
    工控威望: 7747 點(diǎn)
    下載積分: 15541 分
    在線時(shí)間: 2986(小時(shí))
    注冊(cè)時(shí)間: 2016-10-31
    最后登錄: 2025-01-03
    查看夢(mèng)雨天涯的 主題 / 回貼
    14樓  發(fā)表于: 10天前
    圖片:
    大概這個(gè)樣子,你覺(jué)得呢??
    本帖最近評(píng)分記錄:
  • 下載積分:+5(jony7788) 感謝分享!
  • 微信hui530527      b站賬號(hào),非標(biāo)自動(dòng)化譚工
    請(qǐng)不要隨意加我,不會(huì)隨便通過(guò)。QQ群942493953
    工控小c
    級(jí)別: 工控俠客
    精華主題: 0
    發(fā)帖數(shù)量: 354 個(gè)
    工控威望: 2164 點(diǎn)
    下載積分: 2121 分
    在線時(shí)間: 359(小時(shí))
    注冊(cè)時(shí)間: 2022-10-14
    最后登錄: 2025-01-03
    查看工控小c的 主題 / 回貼
    15樓  發(fā)表于: 10天前
    圖片:
    圖片:
    圖片:
    圖片:
    圖片:
    我也來(lái)湊湊熱鬧,偷個(gè)懶就不寫自動(dòng)程序了,問(wèn)題的關(guān)鍵就在于計(jì)算下一個(gè)首先為ON的開(kāi)關(guān)距離本次停留的位置間距而已。如上圖1234,開(kāi)關(guān)號(hào)和位置號(hào)從0開(kāi)始。開(kāi)關(guān)1.4.10為ON,在1號(hào)開(kāi)始時(shí)2.3.不停留下次定位到4、增量為3份間距,4號(hào)開(kāi)始時(shí)5.6.7.8.9.不停留下次定位到10、增量為6份間距,10號(hào)開(kāi)始時(shí)11.0.不停留下次定位到1,增量為3份間距。如上圖5,僅有1號(hào)開(kāi)關(guān)ON,則下次定位12份間距既一整圈重新定位到1號(hào)開(kāi)關(guān)處。
    本帖最近評(píng)分記錄:
  • 下載積分:+2(nightblueblu) 好貼好貼!
  • 下載積分:+5(jony7788) 熱心助人!
    紅云123
    級(jí)別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 287 個(gè)
    工控威望: 358 點(diǎn)
    下載積分: 2844 分
    在線時(shí)間: 142(小時(shí))
    注冊(cè)時(shí)間: 2020-09-22
    最后登錄: 2025-01-02
    查看紅云123的 主題 / 回貼
    16樓  發(fā)表于: 10天前
    這個(gè)能不能實(shí)現(xiàn)
    附件: 0000.zip (182 K) 下載次數(shù):14
    網(wǎng)站提示: 請(qǐng)不要用迅雷下載附件,容易出錯(cuò)
    本帖最近評(píng)分記錄:
  • 下載積分:+5(jony7788) 熱心助人!
    jony7788
    級(jí)別: 論壇先鋒
    精華主題: 0
    發(fā)帖數(shù)量: 49 個(gè)
    工控威望: 1898 點(diǎn)
    下載積分: 131 分
    在線時(shí)間: 230(小時(shí))
    注冊(cè)時(shí)間: 2023-02-25
    最后登錄: 2025-01-02
    查看jony7788的 主題 / 回貼
    17樓  發(fā)表于: 10天前
    引用
    引用第14樓夢(mèng)雨天涯于2024-12-24 15:07發(fā)表的  :
    大概這個(gè)樣子,你覺(jué)得呢??


    有點(diǎn)這個(gè)意思。
    jony7788
    級(jí)別: 論壇先鋒
    精華主題: 0
    發(fā)帖數(shù)量: 49 個(gè)
    工控威望: 1898 點(diǎn)
    下載積分: 131 分
    在線時(shí)間: 230(小時(shí))
    注冊(cè)時(shí)間: 2023-02-25
    最后登錄: 2025-01-02
    查看jony7788的 主題 / 回貼
    18樓  發(fā)表于: 10天前
    引用
    引用第16樓紅云123于2024-12-24 17:05發(fā)表的  :
    這個(gè)能不能實(shí)現(xiàn)


    我目前的方法同你的方法有點(diǎn)類似,用電機(jī)的脈沖數(shù)來(lái)判斷區(qū)間,效果不是很好,如果前面全部是開(kāi),后面全部是斷,還可以,間隔開(kāi)斷的反應(yīng)不過(guò)來(lái)。
    工控小c
    級(jí)別: 工控俠客
    精華主題: 0
    發(fā)帖數(shù)量: 354 個(gè)
    工控威望: 2164 點(diǎn)
    下載積分: 2121 分
    在線時(shí)間: 359(小時(shí))
    注冊(cè)時(shí)間: 2022-10-14
    最后登錄: 2025-01-03
    查看工控小c的 主題 / 回貼
    19樓  發(fā)表于: 10天前
    引用
    引用第18樓jony7788于2024-12-24 21:15發(fā)表的  :


    我目前的方法同你的方法有點(diǎn)類似,用電機(jī)的脈沖數(shù)來(lái)判斷區(qū)間,效果不是很好,如果前面全部是開(kāi),后面全部是斷,還可以,間隔開(kāi)斷的反應(yīng)不過(guò)來(lái)。

    可以試試我的那個(gè),當(dāng)前點(diǎn)位停留0.5秒的時(shí)候直接判斷下個(gè)點(diǎn)去哪里
    nightblueblu
    道阻且長(zhǎng),窮且益堅(jiān)。
    級(jí)別: 論壇先鋒
    精華主題: 0
    發(fā)帖數(shù)量: 1029 個(gè)
    工控威望: 1852 點(diǎn)
    下載積分: 271 分
    在線時(shí)間: 1132(小時(shí))
    注冊(cè)時(shí)間: 2017-02-09
    最后登錄: 2025-01-02
    查看nightblueblu的 主題 / 回貼
    20樓  發(fā)表于: 8天前
    寫了一個(gè),沒(méi)有測(cè)試,實(shí)現(xiàn)方式和15樓基本一致,上代碼
    ----------------------------------------------------------------------------分割線-------------------------------------------------------------
    FUNCTION_BLOCK FB_啟動(dòng)定位
    (*一圈360度,分為12個(gè)段點(diǎn),每個(gè)段點(diǎn)30度,每個(gè)段點(diǎn)都有一個(gè)開(kāi)關(guān),每個(gè)開(kāi)關(guān)可以任意設(shè)置ON和OFF狀態(tài)。
      當(dāng)開(kāi)關(guān)打開(kāi)的區(qū)間,步進(jìn)電機(jī)以正常速度旋轉(zhuǎn),并在段點(diǎn)停留0.5秒,
      沒(méi)有打開(kāi)段點(diǎn)的區(qū)間,以快于正常速度進(jìn)行旋轉(zhuǎn),且不做停留*)
    VAR_INPUT      
        Sen1  :BOOL;//位置狀態(tài)設(shè)置1
        Sen2  :BOOL;
        Sen3  :BOOL;
        Sen4  :BOOL;
        Sen5  :BOOL;
        Sen6  :BOOL;
        Sen7  :BOOL;
        Sen8  :BOOL;
        Sen9  :BOOL;
        Sen10:BOOL;
        Sen11:BOOL;
        Sen12:BOOL;//位置狀態(tài)設(shè)置12

        Start          :BOOL;//啟動(dòng)
            Stop          :BOOL;//停止
        Auto          :BOOL;//手自,TRUE:自動(dòng);FALSE:手動(dòng)
        Done         :BOOL;//定位完成信號(hào)
        Now_Ang  :REAL;//當(dāng)前角度
        Tim            :REAL;//TRUE位停頓時(shí)間,單位:s
    END_VAR
    VAR_OUTPUT
        rRun_F    :REAL;//快速運(yùn)行距離(FALSE段角度)
        bRun_F   :BOOL;//快速定位啟動(dòng)(FALSE段)
        rRun_T    :REAL;//正常速度運(yùn)行距離(TRUE段角度)
        bRun_T   :BOOL;//正常速定位啟動(dòng)(TRUE段)        
    END_VAR
    VAR    
            Pto                  :BOOL;//定位啟動(dòng)信號(hào)
        nums:INT        :=12;//位置個(gè)數(shù)
        Now_posi        :INT;//轉(zhuǎn)盤當(dāng)前位置
        StatsAry          :ARRAY[1..12]OF BOOL;//各位置檢測(cè)傳感器狀態(tài)存儲(chǔ)數(shù)組
        rtri                   :BOOL;//位置計(jì)算觸發(fā)
        i,j                     :INT;//循環(huán)變量
        False_Gap      :INT;//距離下一個(gè)FALSE信號(hào)需要轉(zhuǎn)動(dòng)的位置個(gè)數(shù)
        num                     :INT;//定位中的段記錄
        rstr,rsto,rdon    :R_TRIG;//啟動(dòng),停止,轉(zhuǎn)動(dòng)一個(gè)角度的觸發(fā)沿
        rton                  :TON;//間隔定時(shí)
    END_VAR
    ----------------------------------------------------------------------------分割線-------------------------------------------------------------
    (*==============================參數(shù)初始化==============================*)
    StatsAry[1]:=Sen1;StatsAry[2]:=Sen2;StatsAry[3]:=Sen3;StatsAry[4]:=Sen4;StatsAry[5]:=Sen5;StatsAry[6]:=Sen6;
    StatsAry[7]:=Sen7;StatsAry[8]:=Sen8;StatsAry[9]:=Sen9;StatsAry[10]:=Sen10;StatsAry[11]:=Sen11;StatsAry[12]:=Sen12;

    rRun_T:=(2*3.14159265)/nums;
    Now_posi:=REAL_TO_INT((Now_Ang*nums)/(2*3.14159265))+1;
    (*==============================觸發(fā)沿==============================*)
    rstr(CLK:=Start);//啟動(dòng)沿
    rsto(CLK:=Stop);//停止沿
    rdon(CLK:=Done);//定位完成沿
    rton(IN:=num=2,PT:=REAL_TO_TIME(Tim*1000.0));//間隔定時(shí)

    IF rsto.Q OR (rton.Q AND NOT Auto) THEN//停止或者在手動(dòng)狀態(tài)下單次定位結(jié)束
        bRun_F:=FALSE;
        bRun_T:=FALSE;
        num:=0;
    END_IF
    IF rdon.Q THEN//對(duì)定位次數(shù)進(jìn)行計(jì)數(shù)
        num:=num+1;
    END_IF
    (*==============================尋找下一次轉(zhuǎn)動(dòng)的TRUE信號(hào)的位置==============================*)
    IF rstr.Q OR (rton.Q AND Auto)THEN//啟動(dòng)計(jì)算
        num:=0;
        rtri:=TRUE;
    END_IF
    IF rtri THEN
        IF Now_posi<>nums THEN//TRUE位置在當(dāng)前位置前方
            FOR i:=Now_posi+1 TO nums BY 1 DO
                IF StatsAry THEN
                    False_Gap:=i-Now_posi-1;//TRUE位置在當(dāng)前位置前方
                    rRun_F:=rRun_T*False_Gap;    
                    Pto:=TRUE;
                    rtri:=FALSE;
                    EXIT;
                END_IF
            END_FOR
        END_IF
        IF Now_posi<>1 THEN//TRUE位置在當(dāng)前位置后方
            FOR j:=1 TO Now_posi BY 1 DO
                IF StatsAry[j] THEN
                    False_Gap:=nums-j+Now_posi-1;//TRUE位置在當(dāng)前位置后方
                    rRun_F:=rRun_T*False_Gap;
                    Pto:=TRUE;
                    rtri:=FALSE;
                    EXIT;
                END_IF
            END_FOR
        END_IF
    END_IF

    (*==============================執(zhí)行邏輯==============================*)
    IF Pto THEN//啟動(dòng)定位,或自動(dòng)狀態(tài)下定時(shí)器達(dá)到計(jì)時(shí)
        bRun_T:=FALSE;
        bRun_F:=TRUE;
    END_IF
    IF num=1 THEN//完成FALSE段的定位,進(jìn)行TRUE段定位
        bRun_F:=FALSE;
        bRun_T:=TRUE;
    END_IF
    本帖最近評(píng)分記錄:
  • 下載積分:+5(jony7788) 熱心助人!
  • Your happiness is everything.