Ошибка 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

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