Сообщение от
roman_1986
Мы тоже грешили на связь... поставили отдельный блок питания на управление (ПР200, МУ110 и МВ110), независимо от скорости связи, происходит тоже самое... переменных сетевых мизер... для панели штук 20, на модулях по 2 переменных... Время опроса уменьшено, время и таймаут ответа по 20 установлено.... Причем интересный момент получился, на ПР200 используются выхода... так вот они работают четко! Соответственно проблема в связи модуле либо ВВОДа, либо ВЫВОДА... Панель (СП307) сидит на первом RS485, с ней проблем нет. Причем на панели индикация переменной, которая ушла на модуль, отображается без задержек и "тормозов", т.е. нажали на кнопке включить выход №1 на модуле ВЫВОДА, бит от панели пошел на ПР200, обработался, отправился на панель и на модуль ВЫВОДА, на панели изменилось состояние бита (а значит и на модуль ВЫВОДА отправили уже бит), а в реале может сразу сработать выход, а может и спустя секунду... и что самое интересное, что задержка варьируется от примерно 0 мс до 1.5 секунд... У меня один макрос содержит очень много элементов... к слову, макрос "весит" почти 3 мегабайта.... при удалении этого макроса работает более шустрее... (предвижу возможные высказывания в адрес данного макросу скажу сразу, данный макрос обрабатывает ту часть программы, с которой вообще нет проблем...) Приближаемся к вопросу, который я задал в самом начале )))
Собственно вопрос: как в OwenLigoc обрабатываются макросы? Пока макрос не отработает, программа ждет?
Возможно ли такое, что пока внутренняя программа (ЯДРО так сказать) не обработает данный макрос, программа не "решает" другие вопросы? У ПР200 внутри стоит STM32 контроллер, и скорее всего реализовано RTOS, ну и соответственно многозадачность... и возможно ли такое, что макрос обрабатывается как то иначе?
До этого решали похожие задачи на ПР200 и с такими же модулями... но макросы были очень мелкими 5-20 элементов... и никаких проблем нет даже на низких скоростях...
По поводу максимальной скорости RS485 - спешу не согласиться что это решение лучше... модуль МУ110 или МВ110 использует всего по 2 регистра... а это 32 бита, ну еще + стоповые и стартовые биты... при скорости 115200 наш модуль может опрашиваться более 2.000 раз (!!!). при том, что программа имеет цикл около 10 мс... т.е. сама программа сможет опрашивать модель не более 100 раз за 1 секунду... даже этого более чем достаточно... НО(!!!) какая будет помехоустойчивость при такой скорости??? При скорости 9600 за 1 секунду мы можем получать данные около 200 раз в секунду.... но помехоустойчивость будет лучше... Я даже согласен что используя STM32, скорее всего используется аппаратный RS232+преобразователь RS485, с аппаратным RS намного проще... отправили регистры в буфер и все, делаем свои дела и ждем когда нам придет ответ в виде прерывания о законченной отправке/приеме данных... т.е. цикл программы нас почти не лимитирует по скорости обмена... Заканчивая свои размышления, хочется скачать что при более высокой скорости и при низкой скорости происходит тоже самое... ну может быть при высокой скорости на чуть чуть быстрее отрабатывают датчики и выхода...
Программу к сожалению не имею право выкладывать в открытый доступ...