PDA

Просмотр полной версии : Программное изменение настроек RS-485



botanik
12.08.2009, 21:52
Скажите пожалуйста, можно ли программно изменить скорость обмена по Modbus RS-485, например с 115200 на 9600? Если можно то как? Или для этого нужна обязательно библиотека типа modbus.lib (а она ведь только платная).

Николаев Андрей
12.08.2009, 22:16
Если речь идет о смене настроек в контроллере - то программно изменить их в PLC Configuration действительно нельзя.
А библиотека ModBus.lb бесплатная, просто пока не до конца оттестирована.
Если есть желание принять участие - пишите на ящик в подписи - вышлем.

botanik
13.08.2009, 14:17
А тогда еще вопрос. Как мне например разработать собственную библиотеку с уникальными функциями, которых нет в стандартных библиотеках? Существует ли для этого какая то специальная среда разработки библиотек для процессора ОВЕН ПЛК 150? На каком языке они пишутся?

magirus
13.08.2009, 15:05
все в том же КоДеСис.

Николаев Андрей
13.08.2009, 20:15
Есть несколько вариантов.
Писать на любых языках высокого уровня. Но интегрировать не так просто.
Писать прям в CoDeSys.
Создаете проект, делаете в нем новые POU - ФБ, Программы. А дальше просто сохраняете как\ не проект а библиотека.
Вот и все.
Ну и если такие замечательные алгоритмы - может поделитесь с пользователями форума?

botanik
14.08.2009, 19:41
Меня интересует прежде всего способ программного изменения скорости RS-485 modbus. Если это можно сделать стандартными библиотеками, то подскажите как?

Я вот нашел библиотеку SysComLib. Там есть функция SetComSettings. Пытаюсь программно изменить настройки порта COM1 (RS-485). Но скорость работает только та, что прописана в конфигураторе. Контроллер - ПЛК 150 ИЛ. Если есть пример по этой функции, то скиньте пожалуйста?

magirus
15.08.2009, 01:39
а вообще, зачем?
скорость меняется для порта, с которым работаете, а не для модулей...

botanik
15.08.2009, 18:49
а вообще, зачем?
скорость меняется для порта, с которым работаете, а не для модулей...

В сети RS-485 есть панель СП-270, которая успешно работает только на 38400, и другие приборы которые максимум поддерживают 9600. Плк-мастер, все остальное - слейв. Здесь я вижу 2 варианта решения: 1) сделать 2 модуля modbus мастер с разными скоростями и попеременно включать то один, то другой; 2) сделать 1 модуль modbus мастер, и программно менять в нем скорость. Пока ни один реализовать не удается.

Что такое скорость порта и модуля? Не совсем понятно.

Николаев Андрей
15.08.2009, 21:43
Вам в первом варианте необходимо отказаться вообще от нстроект обмена в PLC Configuration. Ну или от SysLibCom...
Во втором варианте необходимо управлять мастерами по команде (отклчать обмен\включать обмен).

botanik
15.08.2009, 22:44
То есть,как я понял, если я использую SysLibCom, то все действия по установке параметров соединения 485, и чтение данных из порта я делаю этой библиотекой, а в PLC configuration модуля модбас мастер вообще не должно быть?

botanik
17.08.2009, 16:34
Проблему решил с помощью библиотеки SysLibCom. Заработала функция SetComSettings. Сначала писал СОМ1 в парамтерах,функция выдавала ошибки, а затем везде поставил 0. И все заработало. Попеременно меняю скорость с 9600 на 38400, и по очереди опрашиваю все устройства в сети. :)

DARNER
19.08.2009, 10:19
Проблему решил с помощью библиотеки SysLibCom..... и по очереди опрашиваю все устройства в сети. :)
а примерчик киньте плиз:)

botanik
21.08.2009, 19:50
Пример для ПЛК150ИМ.
Заметил такую особенность при использовании данного метода. Если модулей мало, и мало опрашиваемых переменных, то панель работает быстро. Если в сети 485 около 6 приборов, кроме панели, то даже на скорости 115200 приходится ждать не менее 5-6 секунд , при передаче данных с панели и на нёё. Причем задержки различны.

botanik
31.08.2009, 17:54
решил проблему) для панели поставил polling time 20 . Для остальных приборов увеличил до 500. Все работает шустро.