2017-04-20 12 views
0

私は現在、テストベンチの自動化に取り組んでいます。電子負荷(BK8610、BK8500)、DC電源(BK9202、ETS60X14C)、マルチメータ(MetraEnergy)で構成されています。Scilabで定期的にタスクを実行

すべてのデバイスを同時に制御するためにScilabの関数ライブラリを作成しました(私はパラメタを設定し、イーサネット、シリアルポート、VISAインタフェースを使って測定値を取得できます)。すべてのコマンドが正常に動作するようになったので、私は定期的な対策を行うための一般的なスクリプトを書こうとしています。

私はスクリプトの冒頭でtic()を使用し、exec_time = toc()の最後に5s-exec_timeを待ってから再度実行すると考えました。これは仕事ができたとしても

tic() 
//My code 
exec_time=toc() 
//wait until the time is equal to 5s 
//Repeat 

Scilabのは(、一般ATMEGAに使用STM32など)非同期割り込みタイマーと等価になる機能を持っているのだろうか?これははるかに簡単です。

これは明らかです。ありがとうございました !

答えて

0

realtime & realtimeinitがあなたのための解決策です。 Scilabヘルプの変更例:

clc; 
clear; 

realtimeinit(1/2);//sets time unit to half a second 
realtime(0);//sets current date to 0 
for k=1:10 
    realtime(k); 
    mprintf('\r\ncurrent time is %.1f sec',k/2); 
end 
+0

ありがとう、私はこのスクリプトを書こうとします。 私は自分のソリューションですでにたくさんのテストを行っていますが、うまくいきますが、それは本当に "美しい"ものではありません。 – Orgoss

+0

この解決策が問題を解決した場合、それを受け入れることを検討する可能性があります。したがって、他の人も質問がもう開いていないことを確認することがあります。ありがとう。 – Attila

+1

私はそれを試して、150〜サイクル(数秒)後にちょっとした時間シフトを観察するので、私は古いアルゴリズムを保っていました。とにかくそれは私が必要としたものなので、私はそれを受け入れますが、それは外部石英ほど正確ではありません(私が使っているPCはちょうど1つのコアしかないでしょうか?)。 – Orgoss

関連する問題