Ошибка Modbus TCP (libmodbus) после повторного подключения из-за сбоя сетиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ошибка Modbus TCP (libmodbus) после повторного подключения из-за сбоя сети

Сообщение Anonymous »

В экспериментальной установке я хотел бы управлять клапанным блоком с моего ПК через Modbus TCP.
Среда
  • libmodbus
  • Visual Studio
  • Прямое соединение между ПК и пневмоостровом (без переключения между ними)
Что работает

Установление соединения и простое управление катушками работает отлично.
В чем проблема

Однако, если сеть прерывается во время установленного соединения (например, при выдергивании кабеля связи), примерно в 20% случаев после восстановления соединения происходит следующее явление:

Катушка больше не может быть включена постоянно. Слышно, как он постоянно включается и выключается.

А вот постоянное выключение не является проблемой.
В этом состоянии ни отключение, ни повторное установление соединения не помогают. Единственное, что работает, это выключить и снова включить весь коллектор клапанов.
Мой вопрос

Кто-нибудь знает, есть ли в libmodbus своего рода команда сброса?
Мой код
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
extern "C" {
#include
}

//Tags
std::string input; //For Keyboard input

int main()
{
//Slave Parameter in Tags
const char* ip = "192.168.1.20";
int port = 502;
int slave_id = 1;

//If Disconnect, jump to this point
reconnect:

//Should be connected?
std::cout

Подробнее здесь: https://stackoverflow.com/questions/798 ... rk-failure
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»