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

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

        
        

      1. 亚洲综合小综合中文字幕,国产久爱免费精品视频,精品国产品香蕉在线,国产午夜精品在人线播放,精品一二三四区在线观看,国产成人无码免费看视频软件 ,色欲久久人妻内射,午夜在线观看成人av
        jony7788
        級別: 工控俠客
        精華主題: 0
        發帖數量: 51 個
        工控威望: 2005 點
        下載積分: 4918 分
        在線時間: 256(小時)
        注冊時間: 2023-02-25
        最后登錄: 2025-12-27
        查看jony7788的 主題 / 回貼
        樓主  發表于: 2024-12-22 20:41
        圖片:
        一圈360度,分為12個段點,每個段點30度,每個段點都有一個開關。
        當開關打開的區間,步進電機以正常速度旋轉,并在段點停留0.5秒,沒有打開段點的區間,以快于正常速度進行旋轉,且不做停留。

        以下例,1、2,5、6,9,10這幾個區間是正常速度,其它區間是快速通過。
        償了下幾種方式,效果都不好,大多都是快速時跑過了頭,把正常區間都越過了。
        PLC是三菱FX3U

        希望老師們能指點下思路,感謝。

        jony7788
        級別: 工控俠客
        精華主題: 0
        發帖數量: 51 個
        工控威望: 2005 點
        下載積分: 4918 分
        在線時間: 256(小時)
        注冊時間: 2023-02-25
        最后登錄: 2025-12-27
        查看jony7788的 主題 / 回貼
        1樓  發表于: 2024-12-23 20:56
        引用
        引用第3樓木林森于2024-12-23 09:03發表的  :
        軸旋轉前檢查開關狀態,ON 則直接旋轉 30° 后停留 0.5S,OFF 則繼續檢查下一個節點開關狀態并進行角度累加直到開關為 ON 后進行旋轉停留


        先用你的思路試一下,感謝。
        jony7788
        級別: 工控俠客
        精華主題: 0
        發帖數量: 51 個
        工控威望: 2005 點
        下載積分: 4918 分
        在線時間: 256(小時)
        注冊時間: 2023-02-25
        最后登錄: 2025-12-27
        查看jony7788的 主題 / 回貼
        2樓  發表于: 2024-12-23 21:05
        引用
        引用第2樓二手工控電器于2024-12-23 08:58發表的  :
        重賞之下必有勇夫!!!這個看似邏輯簡單,實則梯形圖有些復雜!!!


        有興趣和上班有空閑的朋友可以償試下,開關用中間繼電器代替,成功了的話個人發紅包200感謝,重賞談不上,只是一個為知識付費的態度。
        jony7788
        級別: 工控俠客
        精華主題: 0
        發帖數量: 51 個
        工控威望: 2005 點
        下載積分: 4918 分
        在線時間: 256(小時)
        注冊時間: 2023-02-25
        最后登錄: 2025-12-27
        查看jony7788的 主題 / 回貼
        3樓  發表于: 2024-12-24 07:55
        引用
        引用第10樓dingzyi于2024-12-23 21:32發表的  :
        步進電機速度能快多少。步進速度快了容易丟步。。停頓也要有時間的,為啥不用伺服。       

        這個轉速不高,其實在快速通過的點位,按三樓說的,增加轉動的脈沖數,就可以了,最后一個點位是原點,每個循環的最后動作是回原點。
        電機驅動前有個點動開關,點動一次,電機就一個循環動作,沒什么丟步的問題。
        jony7788
        級別: 工控俠客
        精華主題: 0
        發帖數量: 51 個
        工控威望: 2005 點
        下載積分: 4918 分
        在線時間: 256(小時)
        注冊時間: 2023-02-25
        最后登錄: 2025-12-27
        查看jony7788的 主題 / 回貼
        4樓  發表于: 2024-12-24 21:05
        引用
        引用第14樓夢雨天涯于2024-12-24 15:07發表的  :
        大概這個樣子,你覺得呢??


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


        我目前的方法同你的方法有點類似,用電機的脈沖數來判斷區間,效果不是很好,如果前面全部是開,后面全部是斷,還可以,間隔開斷的反應不過來。
        jony7788
        級別: 工控俠客
        精華主題: 0
        發帖數量: 51 個
        工控威望: 2005 點
        下載積分: 4918 分
        在線時間: 256(小時)
        注冊時間: 2023-02-25
        最后登錄: 2025-12-27
        查看jony7788的 主題 / 回貼
        6樓  發表于: 2025-02-23 15:12
        請豆包幫忙寫的,調整幾次之后,可以正常運行,用的是Arduino板子,豆包寫梯形圖的能力還不強,寫這種編程語言厲害些。
        // 定義步進電機控制引腳
        const int stepPin = 2;
        const int dirPin = 3;

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

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

        // 定義原點感應點位引腳
        const int originPin = A3;

        // 定義料件感應點位引腳
        const int materialSensorPin = A4;

        // 定義振動盤點位引腳
        const int vibrationDiskPin = A5;

        // 定義步進電機參數
        const int stepsPerRevolution = 1000;  // 步進電機每轉脈沖數

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

        // 定義停留時間(毫秒)
        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() {
          // 初始化步進電機控制引腳為輸出模式
          pinMode(stepPin, OUTPUT);
          pinMode(dirPin, OUTPUT);

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

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

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

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

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

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

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

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

          // 保存上一次啟動按鍵狀態
          lastStartButtonState = startButtonState;

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

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

                if (digitalRead(originPin) == LOW) {
                  isRunning = false;
                  isReturning = false;
                  digitalWrite(dirPin, HIGH); // 恢復正向
                }
              }
            } 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 負載
          delay(1);
        }

        主站蜘蛛池模板: 亚洲av成人午夜福利| 无码人妻一区二区三区精品视频| 最新精品露脸国产在线| 西欧free性满足hd| 国产丰满乱子伦无码专区| 伊人天天久大香线蕉av色| 人妻精品久久无码区| 亚洲欧美综合在线天堂| www.狠狠| 丁香五月亚洲综合在线国内自拍 | 成人啪啪一区二区三区| 国产特色一区二区三区视频| 成年在线观看免费人视频| 黑人巨茎大战俄罗斯美女| 国产一区日韩二区三区| 无码人妻精品一区二区| 亚洲一区二区三区在线观看精品中文 | 亚洲男女羞羞无遮挡久久丫| 国产免费久久精品99reswag| 2020国产激情视频在线观看| 亚洲中文字幕在线一区播放| 中国女人熟毛茸茸A毛片| 又湿又紧又大又爽A视频国产| 色综合天天综合天天综| 粉嫩少妇内射浓精videos| 国产欧美久久久另类精品| 亚洲熟妇自偷自拍另类| 欧美内射深插日本少妇| 国产欧美日韩精品丝袜高跟鞋| 久久精品国产精品第一区| 亚洲国产一成人久久精品| 日日碰狠狠添天天爽超碰97| 亚洲欧美综合一区二区三区| 在线中文字幕第一页| 国产a网站| 亚洲人成在久久综合网站| 国产综合视频一区二区三区| 久久国产精品成人影院| 18黑白丝水手服自慰喷水| 亚洲欧洲日产国无高清码图片| 在线综合亚洲欧洲综合网站|