思思久久96热在精品国产10-思思久久96热在精品国产免费-思思久久99-思思久久99热-一级毛片免费观看视频-一级毛片免费看

jony7788
級別: 工控俠客
精華主題: 0
發帖數量: 50 個
工控威望: 2003 點
下載積分: 1033 分
在線時間: 237(小時)
注冊時間: 2023-02-25
最后登錄: 2025-03-24
查看jony7788的 主題 / 回貼
樓主  發表于: 2024-12-22 20:41
圖片:
一圈360度,分為12個段點,每個段點30度,每個段點都有一個開關。
當開關打開的區間,步進電機以正常速度旋轉,并在段點停留0.5秒,沒有打開段點的區間,以快于正常速度進行旋轉,且不做停留。

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

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

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


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


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

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


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


我目前的方法同你的方法有點類似,用電機的脈沖數來判斷區間,效果不是很好,如果前面全部是開,后面全部是斷,還可以,間隔開斷的反應不過來。
jony7788
級別: 工控俠客
精華主題: 0
發帖數量: 50 個
工控威望: 2003 點
下載積分: 1033 分
在線時間: 237(小時)
注冊時間: 2023-02-25
最后登錄: 2025-03-24
查看jony7788的 主題 / 回貼
6樓  發表于: 31天前
請豆包幫忙寫的,調整幾次之后,可以正常運行,用的是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);
}

主站蜘蛛池模板: 国产鲁鲁视频在线播放 | 黄站在线| 免费看真人a一级毛片 | 国产精品麻豆久久99 | 国产精品免费视频网站 | 国产综合欧美 | 国产毛片在线看 | 精品无人区乱码一区二区三区手机 | 久久亚洲欧美综合激情一区 | 国产麻豆一级在线观看 | 免费一级网站 | 国产美女作爱全过程免费视频 | 免费一级欧美大片久久网 | 国产精品久久久久久久久久影院 | 久久久久国产精品美女毛片 | 国产欧美精品一区二区三区–老狼 | 久久2| 免费1级片 | 国产只有精品 | 免费国产成人高清在线观看视频 | 看中国真人一级毛片 | 久久6免费视频 | 国产99久久久久久免费看 | 老湿机一区午夜精品免费福利 | 久久黄色一级视频 | 激情97| 国产成人免费在线 | 国产粉嫩白浆在线观看 | 高清一级毛片 | 久久国产亚洲偷自 | 国产视频福利在线 | 国产日韩精品一区二区在线观看 | 成人三级在线观看 | 狠狠插综合 | 国产成人精品免费视频 | 国产成人不卡 | 国产日韩欧美中文字幕 | 国产一级特黄全黄毛片 | 久久精品国产91久久麻豆自制 | 久久精品视频99精品视频150 | 精品动漫中文字幕一区二区三区 |