PDA

Просмотр полной версии : Как обеспечить разрыв связи с устройством Modbus при переводе контроллера в "Stop"?



AndrewR
24.11.2022, 12:12
Добрый день.
Контроллер ПЛК200 управляет приводами, подключенными по шине Modbus. Если при переводе контроллера в "stop" была задана команда на вращение двигателя, то двигатели не отключаются. На самом приводе нет параметра отключения двигателя по time-out передачи. Есть только контроль соединения. Если в режиме "Stop" физически отключить сеть от контроллера, то двигатели останавливаются. Т.е. получается, что установленное соединение продолжает поддерживаться контроллером в этом режиме. Можно ли обеспечить разрыв связи с приводами при переводе контроллера в "Stop"?

Евгений Кислов
24.11.2022, 12:36
Добрый день.
Контроллер ПЛК200 управляет приводами, подключенными по шине Modbus. Если при переводе контроллера в "stop" была задана команда на вращение двигателя, то двигатели не отключаются. На самом приводе нет параметра отключения двигателя по time-out передачи. Есть только контроль соединения. Если в режиме "Stop" физически отключить сеть от контроллера, то двигатели останавливаются. Т.е. получается, что установленное соединение продолжает поддерживаться контроллером в этом режиме. Можно ли обеспечить разрыв связи с приводами при переводе контроллера в "Stop"?

Добрый день.
Если вы настраиваете обмен через стандартные компоненты - то вряд ли это получится организовать.
В вашем случае нужно использоваться библиотеку OwenCommunication - в ней за TCP-подключение отвечает блок TCP_Client.
Добавьте в компоненте Конфигурация задач - Системные события обработчик события PrepareStop и в связанной с ним функции вызывайте экземпляр этого блока со значением FALSE на входе xEnable.

AndrewR
24.11.2022, 14:07
В вашем случае нужно использоваться библиотеку OwenCommunication .

Есть ли у данной библиотеки ограничение на количество подключенных к контроллеру slave-устройств?

Евгений Кислов
24.11.2022, 14:14
Есть ли у данной библиотеки ограничение на количество подключенных к контроллеру slave-устройств?

Ограничений нет, есть ограничения на число экземпляров блоков библиотеки, вызываемых в пределах цикла задачи контроллера
(подробности - здесь в п. 6.5.3: https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Modbus_v3.0.pdf)
Т.е. если нужно опрашивать много слэйвов - нужно будет разнести их опросы по разным циклам (условно: опросили первую пятерку - запускаем опрос второй пятерки и т. д.).

AndrewR
25.11.2022, 09:09
Ограничений нет, есть ограничения на число экземпляров блоков библиотеки, вызываемых в пределах цикла задачи контроллера
(подробности - здесь в п. 6.5.3: https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Modbus_v3.0.pdf)
Т.е. если нужно опрашивать много слэйвов - нужно будет разнести их опросы по разным циклам (условно: опросили первую пятерку - запускаем опрос второй пятерки и т. д.).

Получается, что с помощью Owen Communication я не смогу разорвать соединения со всеми слэйвами в обработчике события.
Спасибо за напоминание про события - это помогло решить проблему другим способом.