2012-09-15 40 views
1

我在電機控制應用方面工作,基本上當我按下按鈕時電機會運行,我也在測量運行時的電機電流,以便在發生過載時停止電機。同時並行運行

問題是我可以停止電機,如果有任何超載,但響應時間更多,程序沒有對突然的影響作出反應。

是否有可能並行運行兩個迴路,所以當我開啓按鈕時,一個迴路將測量任何過載的電流,另一個迴路將控制電機,這兩個迴路應該同時工作,這樣我就可以得到預計的響應時間..

+4

那麼這是什麼語言? C,C++,C#或motordriver? – 2012-09-15 12:47:49

+0

你可以在不同的線程中運行必要的循環。用於TI處理器的C語言中的 –

+0

。 – siva

回答

1

由於g-makulik張貼在評論中,您可以使用線程。或者你可以回到一個在單一循環內保持狀態的舊方案。 不確定TI是否支持fork()或線程,但如果不支持,則類似這樣的事情成爲強有力的競爭者。

int need_to_monitor_motor = 1; 
int common_switch;   // true if common processing 

while (need_to_monitor_motor) 
{ 
    common_switch = 1;  // allow common processing 

    // you may well need to do something to avoid hogging the processor if 
    // other processes are running. Even a minimal nano-sleep. 
    // sched_yield() 
    // usleep() 
    sleep_or_processor_release(); 

    switch (motor_state) 
    { 
     case MOTOR_OFF: 
     need_to_monitor_motor = do_motor_off_stuff(); 
     break; 

     case MOTOR_ON: 
     need_to_monitor_motor = do_motor_on_stuff(); 
     break; 

     default 
     need_to_monitor_motor = trouble__fix_it(&common_switch); 
     break; 
    } 

    if (common_switch) 
    { 
     do_common_processing(); 
    } 
}

(注意,沒有這個編譯)

0

所以,你寫的TI處理器的嵌入式C語言程序。現在的問題是:您是否啓用了OS /多線程功能?大多數便宜的TI板卡都沒有這種支持,並且他們的嵌入式程序以無限循環結束(1)。所有的實際工作都是在中斷處理程序中完成的。就你而言,可能你可以使用一個或兩個定時器。在主函數的開始處初始化它們,並在定時器中斷處理程序中執行所有必要的操作。

所以,找到您的開發板帶定時器的TI代碼示例,並添加您自己的邏輯。

+0

謝謝...這可能會有所幫助。無論如何我會檢查它... – siva