Мы не использовали Profibus, но использовали DeviceNET (еще один протокол на основе CAN), Ethernet / IP и ControlNet , которые имеют одинаковые проблемы.
Мы занимаемся этим с конца 1990-х годов и поэтому полагаемся в основном на собственный сгенерированный код с использованием готового оборудования. Компании, которые показали долговечность в течение того периода, который я помню: -
- AnyBus (HMS, www.anybus.com ). Мы недавно начали использовать их шлюзовые продукты, поскольку мы можем размещать интерфейсы полевой шины близко к аппаратному обеспечению, а затем обмениваться данными по обычному Ethernet (обычно с использованием Ethernet / IP). www.odva.org ). Это имеет преимущество разделения оборудования и ПК с использованием только сетевого кабеля. Классы Ethernet / IP .NET были написаны нами самими, так как в то время на рынке не было ничего особенного. Я уверен, что быстрый поиск в Google найдет подходящие библиотеки классов
- SST ( www.mysst.com ) имеет интерфейсы полевой шины уже более десяти лет. Последняя SST-карта, которую мы использовали для DeviceNET, все еще имела только пример кода VB6. Хороший выбор поддержки полевой шины и различных форм-факторов, например PC104, PCI, PMCIA
- Beckhoff / Wago ( www.beckhoff.com , www.wago.com ) мы обычно используем Beckhoff для ввода-вывода больше, чем интерфейсные карты, но опять же компания, которая был вокруг долгое время. У них также есть продукты, которые поддерживают экспозицию с использованием OPC (еще один способ получения информации ввода-вывода без непосредственного взаимодействия с аппаратными средствами / devicedrivers)
Я предлагаю не использовать интерфейсы OPC непосредственно с аппаратным обеспечением (это нормально для связи с ПК (.NET) -> PLC-> Profibus), так как вам необходимо убедиться, что система управления реагирует на потерю управления из вашего приложения .NET , Я предполагаю, что вам нужен мастер Profibus здесь (не раб), поэтому, если ваша система управления по своей природе является отказоустойчивой, то потеря связи должна означать, что система управления переходит в состояние «ожидания» и, следовательно, большая часть Ввод / вывод вернется в безопасное состояние отказа.
Мы также стараемся не размещать код, связанный с безопасностью, в .NET. Большая часть нашего кода .NET является пользовательским интерфейсом от ПЛК, но в некоторых местах мы напрямую контролируем полевую шину, но обеспечиваем, чтобы аппаратные блокировки предотвращали небезопасную работу, используя либо защитные переключатели / реле, либо небольшой ПЛК с задачей только блокировки , И прежде всего сделайте систему отказоустойчивой! Потеря связи из кода .NET должна отключить автоматизацию до состояния отказоустойчивости.