Первый скрин явно ПЛК slave, видно.
Второй путает первая строка, но опять же потом вижу тоже что и говорит Владислав.
да, я скорее всего путать и речь о секундах, нет возможности проекты взглянуть
да и по поводу того что выдает дамп тоже не хватает времени прочесть мануал. Если сравнивать две картинки и принять за правильную первую, то выходит что в конфигураторе сменили слейв не мастера.
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Я ни чего не менял. В логах все тоже самое. ПЛК настроен как слейв это видно из скриншота первого. Все под тоже конфикурацией. Запустил первый раз, сразу выключил, и потом не получается запустить несколько секунд.
Я провел несколько экспериментов. Значит если я давно не работал, запускаю и подключается все с первого раза. Если выключу, пойду попью чая, такая история. Но если я выключу и в течении 5 секунд хочу подключится опять то такая пертуршка.
Думаю для конечного проекта это не проблема. Там ни кто не будет переключать туда сюда. А вот для процесса разработки это неприятная вещь.
Разработчик скада читает эту ветку. Попрошу его тут написать.
Поищите в SCADA параметр времени жизни соединения.
Тролль-наседка, добрый, нежный и ласковый
Нет такого параметра. Как только я разрываю соединения по заявлениям разработчкика скада, соединение или сокет закрывается стразуже. Перечетайте тему. Проблема в том что после явной остановки проекта в скада, почему-то контроллер еще несколько секунд держит порт закрытым.
Здравствуйте,
Не совсем понятно как SCADA которая является Modbus мастером может закрыть порт TCP соединение со стороны Modbus slave устройства. При разрыве соединения наша SCADA со своей стороны закрывает соединения и я так понимаю, что контроллер со свое стороны через 10-12с тоже его закрывает. Тут есть вопрос только в том:
1. Можно ли регулировать в настройках контроллера данное время закрытие порта когда нет обмена информации с Modbus мастером.
2. Существует ли возможность открыть несколько портов на 1 slave соединение?
3. Существует ли возможность создать несколько slave-ов? Или что нужно сделать для того чтобы иметь возможность подключиться нескольким Modbus клиентам?
1. shutdown(socket,2); close(socket); Обычно помогает Вариант для Win систем немного больше по коду http://www.programmersforum.ru/showthread.php?t=214758 без shutdown Винда до 2! часов будет ждать у моря погоды!
2. Да, вставив несколько портов TCP Slave в Slave устройство на ПЛК. Но это метод страуса.
3. Да. Это правильный метод. Несколько slave на РАЗНЫХ портах для разных клиентов.
P.S. Это распространённое заблуждение среди SCADA-строителей, что раз есть техническая возможность работать с одним портом несколькими соединениями, то эту концепцию можно и в ModBus TCP применить. Концептуально ModBus TCP это протокол master-slave с 1 мастером.
Если мастеров несколько - возникает ситуация с машиной с 2 рулями.
И, хотя в ПЛК можно добавить 2 и более портов TCP Slave, мастера должны работать в режиме 1 пишет, все остальные только читают. Такой режим безопасен.
Последний раз редактировалось Кирилл Валюнин; 15.12.2016 в 11:42.
Тролль-наседка, добрый, нежный и ласковый
Проблема же не в том что я со стороны SCADA не могут закрыть сокет. Со стороны SCADA системы он конечно же закрывается. Просто прежде чем контроллер разрывает соединение со своей стороны проходит какое-то время. В течение этого времени при попытке организовать соединение возникают проблемы т.к. со стороны контроллера порт занят.