Скажите пожалуйста, можно ли программно изменить скорость обмена по Modbus RS-485, например с 115200 на 9600? Если можно то как? Или для этого нужна обязательно библиотека типа modbus.lib (а она ведь только платная).
Вид для печати
Скажите пожалуйста, можно ли программно изменить скорость обмена по Modbus RS-485, например с 115200 на 9600? Если можно то как? Или для этого нужна обязательно библиотека типа modbus.lib (а она ведь только платная).
Если речь идет о смене настроек в контроллере - то программно изменить их в PLC Configuration действительно нельзя.
А библиотека ModBus.lb бесплатная, просто пока не до конца оттестирована.
Если есть желание принять участие - пишите на ящик в подписи - вышлем.
А тогда еще вопрос. Как мне например разработать собственную библиотеку с уникальными функциями, которых нет в стандартных библиотеках? Существует ли для этого какая то специальная среда разработки библиотек для процессора ОВЕН ПЛК 150? На каком языке они пишутся?
все в том же КоДеСис.
Есть несколько вариантов.
Писать на любых языках высокого уровня. Но интегрировать не так просто.
Писать прям в CoDeSys.
Создаете проект, делаете в нем новые POU - ФБ, Программы. А дальше просто сохраняете как\ не проект а библиотека.
Вот и все.
Ну и если такие замечательные алгоритмы - может поделитесь с пользователями форума?
Меня интересует прежде всего способ программного изменения скорости RS-485 modbus. Если это можно сделать стандартными библиотеками, то подскажите как?
Я вот нашел библиотеку SysComLib. Там есть функция SetComSettings. Пытаюсь программно изменить настройки порта COM1 (RS-485). Но скорость работает только та, что прописана в конфигураторе. Контроллер - ПЛК 150 ИЛ. Если есть пример по этой функции, то скиньте пожалуйста?
а вообще, зачем?
скорость меняется для порта, с которым работаете, а не для модулей...
В сети RS-485 есть панель СП-270, которая успешно работает только на 38400, и другие приборы которые максимум поддерживают 9600. Плк-мастер, все остальное - слейв. Здесь я вижу 2 варианта решения: 1) сделать 2 модуля modbus мастер с разными скоростями и попеременно включать то один, то другой; 2) сделать 1 модуль modbus мастер, и программно менять в нем скорость. Пока ни один реализовать не удается.
Что такое скорость порта и модуля? Не совсем понятно.
Вам в первом варианте необходимо отказаться вообще от нстроект обмена в PLC Configuration. Ну или от SysLibCom...
Во втором варианте необходимо управлять мастерами по команде (отклчать обмен\включать обмен).
То есть,как я понял, если я использую SysLibCom, то все действия по установке параметров соединения 485, и чтение данных из порта я делаю этой библиотекой, а в PLC configuration модуля модбас мастер вообще не должно быть?
Проблему решил с помощью библиотеки SysLibCom. Заработала функция SetComSettings. Сначала писал СОМ1 в парамтерах,функция выдавала ошибки, а затем везде поставил 0. И все заработало. Попеременно меняю скорость с 9600 на 38400, и по очереди опрашиваю все устройства в сети. :)
Пример для ПЛК150ИМ.
Заметил такую особенность при использовании данного метода. Если модулей мало, и мало опрашиваемых переменных, то панель работает быстро. Если в сети 485 около 6 приборов, кроме панели, то даже на скорости 115200 приходится ждать не менее 5-6 секунд , при передаче данных с панели и на нёё. Причем задержки различны.
решил проблему) для панели поставил polling time 20 . Для остальных приборов увеличил до 500. Все работает шустро.