Очень странно, в смысле, Вы сами придумали неправильную логигу и другим жалуетесь на это?
Впрочем не надо расстраиваться, этот вопрос много раз обсуждался, в смысле, надо было просто взять готовое типа такого:
Нет связи.png
Очень странно, в смысле, Вы сами придумали неправильную логигу и другим жалуетесь на это?
Впрочем не надо расстраиваться, этот вопрос много раз обсуждался, в смысле, надо было просто взять готовое типа такого:
Нет связи.png
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Если всё же прочитать мой вопрос - предложенное решение там уже реализовано в Slave.
А вот в Master контроль выполняется по переменной, привязанной к аппаратному контролю. И это единственный способ определить отсутствие связи с готовыми устройствами типа ПЧВ, ТРМ. Поэтому применить для контроля связи с другим ПР тоже считаю корректным.
Проблема состоит в том, что в Master с контролем по аппаратной привязке сработала ошибка при 15 секундах задержки, а при контроле через heartbeat в Slave - не сработала даже с 4 секундами.
Оба ПР205 куплены одновременно, аппаратно идентичны.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
В ПР производителем реализован аппаратный контроль соединения по Modbus только со стороны Master, со стороны Slave нужно реализовывать программно.
У меня система из двух ПР205, соединённых по Modbus RTU RS-485. Одно из ПР является Master, другое - Slave.
Контроль связи организован в них по разному: в Master - аппаратно, в Slave - программно (именно так - из Master приходят секунды и длительное отсутствие изменения является признаком ошибки).
При помощи TON и SR-триггера эти обрывы связи фиксируются после небольшой выдержки.
Для Master выдержка составляет 15 секунд, для Slave - 4 секунды.
Скрины привязки к аппаратной части Master и фрагменты получения признака отсутствия соединения привёл выше. Не показал только фиксацию ошибки на TON и триггере.
Вчера сработала защита по отсутствию связи. Оператор сбросил сигнализацию только на Master, а на Slave ошибки зафиксировано не было.
Это меня беспокоит.
Также, использую аппаратную переменную для определения обрыва связи с ПЧВ. Привязал индикатор на экране ПР205 к аппаратному сигналу - наблюдаю постоянное мигание индикатора, т.е. аппаратура постоянно диагностирует обрыв и восстановление соединения.
Возможности получить от ПЧВ переменную с секундами для программной диагностики связи - не имею технической возможности. И, получается, могу использовать только аппаратную переменную.
Меня интересует, как правильно интерпретировать аппаратную переменную, почему диагностирован обрыв соединения при задержке 15 секунд (а программная диагностика и при 4 секундах не заметила).
При отсутствии изменений переменной Heartbeat на выходе XOR будет целочисленный 0, а при изменении - на один такт будет что-то отличное от 0, после преобразования результата в BOOL соответственно получу 0 и 1, а дальше - небольшая фильтрация результата на TON с задержкой в 1-2 секунды.А почему вы думаете, что конструкция в виде целочисленного XOR должна выдать требуемый результат?
Может у вас сильные помехи, например от ПЧ, на одно из ПР они действуют сильнее, может оно ближе к источнику помех или сетевой фильтр хуже работает, мне так кажется!
И зачем так усложнять очень простую функцию, она становится неочевидной(трудно разобраться как она работает), Валенок как-то называл подобный код, типа индусский код, точно уже не припомню, зачем что-то выдумывать(время тратить не жалко) когда есть простое и очевидное решение, это мне непонятно!
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Тем, что вы не вникаете в то, что я пишу.
Именно то решение, что Вы предлагаете - уже применено! Именно с его помощью в Slave и диагностируется обрыв.
А в Master я диагностирую по переменной с привязкой к аппаратной части - в окне настройки Master. И вот эта переменная ведёт себя не так, как я представляю.
Да, я могу и из Slave (ПР205) отправлять в Master секунды (heartbeat) и там диагностировать так же, как и в Slave, но другие slave-устройства (ПЧВ, ТРМ) останутся без диагностики.
Я не против бороться с помехами, но для начала хочу понять, что исправить в моём "индусском" коде.
Помехами будут заниматься другие люди и их работа - их личная боль.
Всё что вам надо, любая переменная из слейва, которая меняется постоянно типа Float, и используете её вместо секунд в том же виде с таймером. 1 Определение связи слейва.jpg
Как только изменение остановится (оборвётся связь), не будет сигнала сравнения.
На скрине, умножение на 1000, чтобы реагировало даже на изменение тысячных
Последний раз редактировалось kondor3000; 27.08.2025 в 10:33.