Я создаю простую программу для управления двумя моторами и, по соображениям безопасности, световой завесой. В программе пользователь попадет в «Run» и (в новом потоке) двигатели перейдут в различное положение, если ничто не попадет в световую занавеску. Если что-то входит в световую завесу, возникает событие, которое должно немедленно остановить все движения (т. Е. Остановить другой поток).Какой тип нити использовать, правильный останов/прерывание?
Какой тип резьбы следует использовать для этой ситуации? Я смутно знаком с System.Threading.Thread
и использовал ThreadPool
для небольших, числовых задач расчета.
Кроме того, каким образом можно безопасно остановить аппаратное обеспечение (то есть нить), если должна быть нарушена световая завеса? Я слышал, что метод Abort()
- это не путь.
Спасибо!
EDIT
Я использую .NET 2.0.
Я бы сделал это на аппаратном уровне - запустил выделенный кабель от контроллера световой завесы, который закрыл силовое реле в корпусе управления двигателем. Также должен быть программный сигнал, так что операции могут быть перезагружены безопасно и без ущерба для незавершенного производства или двигателей/редукторов/инструментов и т. Д. От разрыва управления двигателем. –
@MartinJames На самом деле, двигатели являются линейными приводами, поэтому, если они перемещают нагрузку с максимальной скоростью и мощность обрезается, они будут продолжать скользить, пока не захлопнутся в конце. Я хотел бы получить сигнал, привести их к быстрому, контролируемому почти остановке, а затем сократить всю мощность. – john
Держу пари, что приводы не будут скользить далеко, если реле закорочило их или подключило к манекен-нагрузке с низким полным сопротивлением. Тем не менее, я считаю, что остановка с программным управлением может быть более безопасной. –