• <cite id="uwv89"></cite>
      1. 亚洲综合小综合中文字幕,国产久爱免费精品视频,精品国产品香蕉在线,国产午夜精品在人线播放,精品一二三四区在线观看,国产成人无码免费看视频软件 ,色欲久久人妻内射,午夜在线观看成人av
        雪山飛狐
        級別: 網(wǎng)絡(luò)英雄
        精華主題: 0
        發(fā)帖數(shù)量: 13417 個
        工控威望: 16291 點(diǎn)
        下載積分: 50162 分
        在線時間: 1069(小時)
        注冊時間: 2019-06-05
        最后登錄: 2025-09-04
        查看雪山飛狐的 主題 / 回貼
        12樓  發(fā)表于: 2024-12-24 08:09
        這個要采用中斷的方式去做。
        本帖最近評分記錄:
      2. 下載積分:+5(jony7788) 感謝分享!
        xy8896
        級別: 正式會員
        精華主題: 0
        發(fā)帖數(shù)量: 42 個
        工控威望: 92 點(diǎn)
        下載積分: 8621 分
        在線時間: 49(小時)
        注冊時間: 2023-06-23
        最后登錄: 2025-09-04
        查看xy8896的 主題 / 回貼
        13樓  發(fā)表于: 2024-12-24 08:19
        看是何時檢查開關(guān)信號,如起點(diǎn)檢查就簡單,運(yùn)行中檢查后一個肯定會有加減速的,感應(yīng)器用變址寫法,程序比較簡短
        夢雨天涯
        微信hui530527   &
        級別: 網(wǎng)絡(luò)英雄
        精華主題: 0
        發(fā)帖數(shù)量: 4921 個
        工控威望: 8357 點(diǎn)
        下載積分: 18363 分
        在線時間: 3448(小時)
        注冊時間: 2016-10-31
        最后登錄: 2025-09-04
        查看夢雨天涯的 主題 / 回貼
        14樓  發(fā)表于: 2024-12-24 15:07
        圖片:
        大概這個樣子,你覺得呢??
        本帖最近評分記錄:
      3. 下載積分:+5(jony7788) 感謝分享!
      4. 微信hui530527      b站賬號,非標(biāo)自動化譚工
        請不要隨意加我,不會隨便通過。
        工控技術(shù)交流QQ群942493953
        工控小c
        級別: 工控俠客
        精華主題: 0
        發(fā)帖數(shù)量: 486 個
        工控威望: 2299 點(diǎn)
        下載積分: 8143 分
        在線時間: 477(小時)
        注冊時間: 2022-10-14
        最后登錄: 2025-09-04
        查看工控小c的 主題 / 回貼
        15樓  發(fā)表于: 2024-12-24 16:14
        圖片:
        圖片:
        圖片:
        圖片:
        圖片:
        我也來湊湊熱鬧,偷個懶就不寫自動程序了,問題的關(guān)鍵就在于計(jì)算下一個首先為ON的開關(guān)距離本次停留的位置間距而已。如上圖1234,開關(guān)號和位置號從0開始。開關(guān)1.4.10為ON,在1號開始時2.3.不停留下次定位到4、增量為3份間距,4號開始時5.6.7.8.9.不停留下次定位到10、增量為6份間距,10號開始時11.0.不停留下次定位到1,增量為3份間距。如上圖5,僅有1號開關(guān)ON,則下次定位12份間距既一整圈重新定位到1號開關(guān)處。
        本帖最近評分記錄:
      5. 下載積分:+2(nightblueblu) 好貼好貼!
      6. 下載積分:+5(jony7788) 熱心助人!
        紅云123
        級別: 略有小成
        精華主題: 0
        發(fā)帖數(shù)量: 311 個
        工控威望: 381 點(diǎn)
        下載積分: 2894 分
        在線時間: 165(小時)
        注冊時間: 2020-09-22
        最后登錄: 2025-08-20
        查看紅云123的 主題 / 回貼
        16樓  發(fā)表于: 2024-12-24 17:05
        這個能不能實(shí)現(xiàn)
        附件: 0000.zip (182 K) 下載次數(shù):26
        本帖最近評分記錄:
      7. 下載積分:+5(jony7788) 熱心助人!
        jony7788
        級別: 工控俠客
        精華主題: 0
        發(fā)帖數(shù)量: 51 個
        工控威望: 2005 點(diǎn)
        下載積分: 3298 分
        在線時間: 250(小時)
        注冊時間: 2023-02-25
        最后登錄: 2025-09-04
        查看jony7788的 主題 / 回貼
        17樓  發(fā)表于: 2024-12-24 21:05
        引用
        引用第14樓夢雨天涯于2024-12-24 15:07發(fā)表的  :
        大概這個樣子,你覺得呢??


        有點(diǎn)這個意思。
        jony7788
        級別: 工控俠客
        精華主題: 0
        發(fā)帖數(shù)量: 51 個
        工控威望: 2005 點(diǎn)
        下載積分: 3298 分
        在線時間: 250(小時)
        注冊時間: 2023-02-25
        最后登錄: 2025-09-04
        查看jony7788的 主題 / 回貼
        18樓  發(fā)表于: 2024-12-24 21:15
        引用
        引用第16樓紅云123于2024-12-24 17:05發(fā)表的  :
        這個能不能實(shí)現(xiàn)


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


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

        可以試試我的那個,當(dāng)前點(diǎn)位停留0.5秒的時候直接判斷下個點(diǎn)去哪里
        nightblueblu
        道阻且長,窮且益堅(jiān)。
        級別: 論壇先鋒
        精華主題: 0
        發(fā)帖數(shù)量: 1044 個
        工控威望: 1867 點(diǎn)
        下載積分: 301 分
        在線時間: 1162(小時)
        注冊時間: 2017-02-09
        最后登錄: 2025-08-30
        查看nightblueblu的 主題 / 回貼
        20樓  發(fā)表于: 2024-12-26 17:46
        寫了一個,沒有測試,實(shí)現(xiàn)方式和15樓基本一致,上代碼
        ----------------------------------------------------------------------------分割線-------------------------------------------------------------
        FUNCTION_BLOCK FB_啟動定位
        (*一圈360度,分為12個段點(diǎn),每個段點(diǎn)30度,每個段點(diǎn)都有一個開關(guān),每個開關(guān)可以任意設(shè)置ON和OFF狀態(tài)。
          當(dāng)開關(guān)打開的區(qū)間,步進(jìn)電機(jī)以正常速度旋轉(zhuǎn),并在段點(diǎn)停留0.5秒,
          沒有打開段點(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;//啟動
                Stop          :BOOL;//停止
            Auto          :BOOL;//手自,TRUE:自動;FALSE:手動
            Done         :BOOL;//定位完成信號
            Now_Ang  :REAL;//當(dāng)前角度
            Tim            :REAL;//TRUE位停頓時間,單位:s
        END_VAR
        VAR_OUTPUT
            rRun_F    :REAL;//快速運(yùn)行距離(FALSE段角度)
            bRun_F   :BOOL;//快速定位啟動(FALSE段)
            rRun_T    :REAL;//正常速度運(yùn)行距離(TRUE段角度)
            bRun_T   :BOOL;//正常速定位啟動(TRUE段)        
        END_VAR
        VAR    
                Pto                  :BOOL;//定位啟動信號
            nums:INT        :=12;//位置個數(shù)
            Now_posi        :INT;//轉(zhuǎn)盤當(dāng)前位置
            StatsAry          :ARRAY[1..12]OF BOOL;//各位置檢測傳感器狀態(tài)存儲數(shù)組
            rtri                   :BOOL;//位置計(jì)算觸發(fā)
            i,j                     :INT;//循環(huán)變量
            False_Gap      :INT;//距離下一個FALSE信號需要轉(zhuǎn)動的位置個數(shù)
            num                     :INT;//定位中的段記錄
            rstr,rsto,rdon    :R_TRIG;//啟動,停止,轉(zhuǎn)動一個角度的觸發(fā)沿
            rton                  :TON;//間隔定時
        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);//啟動沿
        rsto(CLK:=Stop);//停止沿
        rdon(CLK:=Done);//定位完成沿
        rton(IN:=num=2,PT:=REAL_TO_TIME(Tim*1000.0));//間隔定時

        IF rsto.Q OR (rton.Q AND NOT Auto) THEN//停止或者在手動狀態(tài)下單次定位結(jié)束
            bRun_F:=FALSE;
            bRun_T:=FALSE;
            num:=0;
        END_IF
        IF rdon.Q THEN//對定位次數(shù)進(jìn)行計(jì)數(shù)
            num:=num+1;
        END_IF
        (*==============================尋找下一次轉(zhuǎn)動的TRUE信號的位置==============================*)
        IF rstr.Q OR (rton.Q AND Auto)THEN//啟動計(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//啟動定位,或自動狀態(tài)下定時器達(dá)到計(jì)時
            bRun_T:=FALSE;
            bRun_F:=TRUE;
        END_IF
        IF num=1 THEN//完成FALSE段的定位,進(jìn)行TRUE段定位
            bRun_F:=FALSE;
            bRun_T:=TRUE;
        END_IF
        本帖最近評分記錄:
      8. 下載積分:+5(jony7788) 熱心助人!
      9. Your happiness is everything.
        jony7788
        級別: 工控俠客
        精華主題: 0
        發(fā)帖數(shù)量: 51 個
        工控威望: 2005 點(diǎn)
        下載積分: 3298 分
        在線時間: 250(小時)
        注冊時間: 2023-02-25
        最后登錄: 2025-09-04
        查看jony7788的 主題 / 回貼
        21樓  發(fā)表于: 2025-02-23 15:12
        請豆包幫忙寫的,調(diào)整幾次之后,可以正常運(yùn)行,用的是Arduino板子,豆包寫梯形圖的能力還不強(qiáng),寫這種編程語言厲害些。
        // 定義步進(jìn)電機(jī)控制引腳
        const int stepPin = 2;
        const int dirPin = 3;

        // 定義啟動按鍵引腳
        const int startButtonPin = 4;

        // 定義 12 個開關(guān)引腳
        const int switchPins[12] = {5, 6, 7, 8, 9, 10, 11, 12, 13, A0, A1, A2};

        // 定義原點(diǎn)感應(yīng)點(diǎn)位引腳
        const int originPin = A3;

        // 定義料件感應(yīng)點(diǎn)位引腳
        const int materialSensorPin = A4;

        // 定義振動盤點(diǎn)位引腳
        const int vibrationDiskPin = A5;

        // 定義步進(jìn)電機(jī)參數(shù)
        const int stepsPerRevolution = 1000;  // 步進(jìn)電機(jī)每轉(zhuǎn)脈沖數(shù)

        // 定義速度參數(shù)(毫秒)
        const unsigned long normalSpeedDelay = 1;  // 正常速度延遲
        const unsigned long fastSpeedDelay = 0.2;  // 快速速度延遲
        const unsigned long returnSpeedDelay = 0.5; // 返回原點(diǎn)速度延遲

        // 定義停留時間(毫秒)
        const unsigned long pauseTime = 500;

        // 定義變量
        bool startButtonState = false;
        bool lastStartButtonState = false;
        bool isRunning = false;
        bool isReturning = false;
        int currentSegment = 0;
        int remainingSteps = stepsPerRevolution;
        unsigned long lastStepTime = 0;
        unsigned long lastPauseTime = 0;
        bool isPausing = false;

        void setup() {
          // 初始化步進(jìn)電機(jī)控制引腳為輸出模式
          pinMode(stepPin, OUTPUT);
          pinMode(dirPin, OUTPUT);

          // 初始化啟動按鍵引腳為輸入模式,并啟用上拉電阻
          pinMode(startButtonPin, INPUT_PULLUP);

          // 初始化 12 個開關(guān)引腳為輸入模式,并啟用上拉電阻
          for (int i = 0; i < 12; i++) {
            pinMode(switchPins, INPUT_PULLUP);
          }

          // 初始化原點(diǎn)感應(yīng)點(diǎn)位引腳為輸入模式,并啟用上拉電阻
          pinMode(originPin, INPUT_PULLUP);

          // 初始化料件感應(yīng)點(diǎn)位引腳為輸入模式,并啟用上拉電阻
          pinMode(materialSensorPin, INPUT_PULLUP);

          // 初始化振動盤點(diǎn)位引腳為輸出模式
          pinMode(vibrationDiskPin, OUTPUT);

          // 設(shè)置初始方向
          digitalWrite(dirPin, HIGH);
        }

        void loop() {
          // 讀取啟動按鍵狀態(tài)
          startButtonState = digitalRead(startButtonPin);

          // 檢測啟動按鍵按下事件
          if (startButtonState == LOW && lastStartButtonState == HIGH) {
            isRunning = true;
            currentSegment = 0;
            remainingSteps = stepsPerRevolution;
            isReturning = false;
          }

          // 保存上一次啟動按鍵狀態(tài)
          lastStartButtonState = startButtonState;

          // 控制振動盤
          bool materialDetected = digitalRead(materialSensorPin) == LOW;
          digitalWrite(vibrationDiskPin, !materialDetected);

          // 如果電機(jī)正在運(yùn)行
          if (isRunning) {
            if (isReturning) {
              unsigned long currentTime = millis();
              if (currentTime - lastStepTime >= returnSpeedDelay) {
                digitalWrite(dirPin, LOW); // 設(shè)置返回方向
                digitalWrite(stepPin, HIGH);
                delayMicroseconds(10);  // 確保脈沖寬度
                digitalWrite(stepPin, LOW);
                lastStepTime = currentTime;

                if (digitalRead(originPin) == LOW) {
                  isRunning = false;
                  isReturning = false;
                  digitalWrite(dirPin, HIGH); // 恢復(fù)正向
                }
              }
            } else {
              if (isPausing) {
                if (millis() - lastPauseTime >= pauseTime) {
                  isPausing = false;
                }
              } else {
                unsigned long currentTime = millis();
                bool switchState = digitalRead(switchPins[currentSegment]);
                unsigned long speedDelay = switchState ? normalSpeedDelay : fastSpeedDelay;

                if (currentTime - lastStepTime >= speedDelay) {
                  if (remainingSteps > 0) {
                    digitalWrite(stepPin, HIGH);
                    delayMicroseconds(10);  // 確保脈沖寬度
                    digitalWrite(stepPin, LOW);
                    remainingSteps--;
                    lastStepTime = currentTime;
                  }
                  if (remainingSteps * 12 <= (11 - currentSegment) * stepsPerRevolution) {
                    if (switchState) {
                      isPausing = true;
                      lastPauseTime = currentTime;
                    }
                    currentSegment++;
                  }
                  if (currentSegment >= 12) {
                    isReturning = true;
                  }
                }
              }
            }
          }

          // 短暫延遲以減少 CPU 負(fù)載
          delay(1);
        }
        wujie2163
        級別: 探索解密
        精華主題: 0
        發(fā)帖數(shù)量: 93 個
        工控威望: 126 點(diǎn)
        下載積分: 624 分
        在線時間: 27(小時)
        注冊時間: 2020-11-10
        最后登錄: 2025-09-02
        查看wujie2163的 主題 / 回貼
        22樓  發(fā)表于: 2025-03-03 11:19
        速度快了步進(jìn)電機(jī)停有辦法這么精準(zhǔn)的停下來么??不需要用剎車么??

        主站蜘蛛池模板: 色成年激情久久综合国产| 亚洲一区二区精品偷拍| 国产熟女一区二区三区蜜臀| 亚洲国产精品高清线久久| 越南毛茸茸的少妇| 性欧美乱熟妇xxxx白浆| 成在线人视频免费视频| VA在线看国产免费| 99RE8这里有精品热视频 | 一区二区三区四区五区自拍| 热久在线免费观看视频| 真实国产乱子伦视频| 午夜不卡欧美AAAAAA在线观看| 成人看的污污超级黄网站免费| 四虎国产精品永久在线| 人妻蜜臀久久av不卡| 日韩国产成人精品视频| 成人无码潮喷在线观看| 国产精品福利片在线观看| 久久精品视频这里有精品| 熟女亚洲综合精品伊人久久| 麻豆一区二区三区蜜桃免费| 国产亚洲综合区成人国产| 黑人精品一区二区三区不| 亚洲精品tv久久久久久久久久 | 国产成人片无码视频| 亚洲国产精品综合久久20| 国产精品美女一区二三区| 久久99精品久久久大学生| 黑人异族巨大巨大巨粗| 久久久亚洲欧洲日产国码αv| 无码伊人66久久大杳蕉网站谷歌 | 亚洲美免无码中文字幕在线| 国产盗摄xxxx视频xxxx| 亚洲AV无码秘?蜜桃蘑菇| 国产三级国产精品国产专| 国产成人AV大片大片在线播放 | 丁香花成人电影| 国产成人午夜精品永久免费| 国产一区二区不卡在线| 任我爽精品视频在线播放|