Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Тем, что вы не вникаете в то, что я пишу.
Именно то решение, что Вы предлагаете - уже применено! Именно с его помощью в Slave и диагностируется обрыв.
А в Master я диагностирую по переменной с привязкой к аппаратной части - в окне настройки Master. И вот эта переменная ведёт себя не так, как я представляю.
Да, я могу и из Slave (ПР205) отправлять в Master секунды (heartbeat) и там диагностировать так же, как и в Slave, но другие slave-устройства (ПЧВ, ТРМ) останутся без диагностики.
Я не против бороться с помехами, но для начала хочу понять, что исправить в моём "индусском" коде.
Помехами будут заниматься другие люди и их работа - их личная боль.
Если Вы сомневаетесь в работоспособности переменной потери связи в мастере, сделайте как в слейве, в смысле, читайте секунды часов из слейва. Во многих приборах предусмотрено действие при потере связи, ошибке, типа безопасного состояния, в ПЧВ точно такое есть, здесь и придумывать ничего не надо!
ПЧВ.png
Последний раз редактировалось Сергей0308; 27.08.2025 в 10:28.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Да, так и сделал. И в ПЧВ настроил останов и в обе стороны ПР205 передаю heartbeat (изменяющееся целое число).
Отправляю исходники, завтра их загрузят.
Думаю, а не виновата ли неправильная настройка таймаута - 100 мс при 9600@8n1. На один байт отправляется 10 бит, на один ответ от Slave отправляется чуть меньше 10 байт, т.е. 100 бит, а значит ответ занимает по времени около тех самых 100 мс. Исправлю таймаут на 300 мс и буду ждать счастья.
--------------------
Сообразил, о чём речь в критике кода - вместо сравнения двух чисел EQ у меня XOR+ToBool+NOT.
Видимо, решал подобную задачу для BOOL и механически перенёс на целые числа. Результат выполнения эквивалентен (проверяется эмуляцией), только формула излишне усложнена.
Улучшу на эту короткую и более адекватную версию с EQ.
Просто от вида формулы, суть моего вопроса не зависела, поэтому не придавал и не придаю этому уточнению весомого значения.
Последний раз редактировалось FPavel; 27.08.2025 в 21:52.