私は、2つのモーターを制御する簡単なプログラムを作成しています。安全上の理由から、ライトカーテンです。このプログラムでは、ユーザーは「Run」をヒットし、(新しいスレッドでは)ライトカーテンに何も入らないとモーターはさまざまな位置に移動します。ライトカーテンに何かが入ると、直ちにすべての動作を停止する(すなわち他のスレッドを停止させる)イベントが発生します。どのスレッドタイプを使用するのが適切な停止/中止ですか?
この状況ではどのスレッドタイプを使用しますか?私は曖昧にはSystem.Threading.Thread
に精通しており、小規模の数値計算タスクにはThreadPool
を使用しています。
また、ライトカーテンが破損した場合は、ハードウェア(スレッド)を安全に止める適切な方法はありますか?私はAbort()
メソッドが行く方法ではないと聞いてきました。
ありがとうございます!私は、.NET 2.0を使用しています
EDIT
。
私はそれをハードウェアで行います - モーター制御エンクロージャーにパワーリレーを閉じたライトカーテンコントローラーから専用ケーブルを実行します。また、モーター制御の中断により、作業が安全に、進行中の作業やモーター/ギアボックス/工具などに損傷を与えずに再始動できるようにソフトウェア信号が必要です。 –
@MartinJames実際には、モータはリニアアクチュエータであるため、最高速度で負荷を動かして電力をカットすると、最後までスラミングするまでスライドし続けます。私はその信号を受け取り、速く、制御されたニアストップに持って行き、すべてのパワーをカットしたいと思っています。 – john
リレーが短絡したり低インピーダンスのダミー負荷に接続したりすると、アクチュエータが遠くまで滑り落ちることはありません:)しかし、私はあなたのことを思い出します。ソフトウェア制御の停止が全体的に安全かもしれません。 –