<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 點
        下載積分: 4448 分
        在線時間: 255(小時)
        注冊時間: 2023-02-25
        最后登錄: 2025-11-01
        查看jony7788的 主題 / 回貼
        樓主  發表于: 2024-12-22 20:41
        圖片:
        一圈360度,分為12個段點,每個段點30度,每個段點都有一個開關。
        當開關打開的區間,步進電機以正常速度旋轉,并在段點停留0.5秒,沒有打開段點的區間,以快于正常速度進行旋轉,且不做停留。

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

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

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


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


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

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


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


        我目前的方法同你的方法有點類似,用電機的脈沖數來判斷區間,效果不是很好,如果前面全部是開,后面全部是斷,還可以,間隔開斷的反應不過來。
        jony7788
        級別: 工控俠客
        精華主題: 0
        發帖數量: 51 個
        工控威望: 2005 點
        下載積分: 4448 分
        在線時間: 255(小時)
        注冊時間: 2023-02-25
        最后登錄: 2025-11-01
        查看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中文字幕无码专区| 波多野无码中文字幕av专区| 奇米影视7777久久精品| 国产欧美日韩亚洲一区二区三区| 国产98色在线 | 日韩| 亚洲全乱码精品一区二区| 国产极品美女网站在线观看| 欧美视频免费一区二区三区| 国产情侣激情在线对白| 国产精品hd在线播放| 国产中文字幕精品喷潮| 中文字幕日本在线免费| 国产精品久久久久久久专区| 国产乱女乱子视频在线播放| 国产精品亚洲玖玖玖在线观看| 精品中文字幕人妻一二| 无码熟妇人妻AV在线影片免费| 国产在线中文字幕精品| 中文字幕AV无码一二三区电影| 你拍自拍亚洲一区二区三区| 性视频一区| 国产中文三级全黄| 国产精品无码午夜福利| 精品国产午夜福利在线观看| 在线天堂最新版资源| 99热在线免费观看| 久章草在线毛片视频播放| 国产欧美一区二区三区视频在线观看| 一区二区中文字幕久久| 国产精品久久这里只有精品 | 东京热大乱系列无码| 九色精品国产亚洲av麻豆一| 国产又色又爽又黄的视频在线| 太深太粗太爽太猛了视频| 国产一区三区二区中文在线| 日本高清中文字幕免费一区二区|