Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Контроллеры Carel и Modbus
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем
rosal
Всем доброго дня!
Столкнулся с необходимостью построения системы мониторинга с использованием контроллеров carel. Протокол сети - ModBus.
Кто-нибудь работал с подобными системами?
Интересует принцип формирования запроса к контроллерам, является ли ModBus кареловских контроллеров классическим?
Кто работал с такой системой, приведите, пожалуйста, пример запроса к контроллеру - считывания, допустим, значения датчика температуры котроллера IR33.
polyakov.mo
у carel MODBUS RTU/RS485 (есть еще Modbus ASCII кажись, который карелом не поддерживается), 8 бит данных, без проверки четности, 2 стоповых бита, скорость до 19200. У меня получилось "подружить" Carel PCO3 и SCADA Trace Mode по примеру с сайта производителя SCADA.

Ищите на просторах сети pco_system_manual

Вы на С# или ассемблере писать запрос планируете?
svintus
Цитата(polyakov.mo @ 29.10.2012, 16:12) *
... 8 бит данных, без проверки четности, 2 стоповых бита...


Конфигурируется в COM_CONFIG_BMS
ttt
Вот документ по Карел-Модбас.
Нажмите для просмотра прикрепленного файла
Вот карта адресов карел для ir32. Вам нужен файл для ir33, у меня нет под рукой, попросите на карелраша.
Нажмите для просмотра прикрепленного файла
Найдите адрес модбас требуемой переменной, например строка "temp_ambiente";2;1;1;"Room temperature";"";"";"";"°C";"";"";"" означает что у переменной Room temperature тип - реал(значит функция чтения 3), адрес 1, только чтение.
rosal
Пишу на Делфи, сейчас работаю над модулем опроса. Писал итальянцам - чудом, но получил ответ:
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла

rosal
В основном разобрался с IR33.

Если кому-то поможет:

1. Считываем значение регистров (переменных)

|A|F|H.R.A|L.R.A|H.N.R|L.N.R|CRC|

A- адрес устройства
F- номер функции (1, 2, 3, 4)
H.R.A- старший байт адреса начального регистра (у карела "переменной") - и не забываем отнимать единицу!
L.R.A- младший байт адреса начального регистра
H.N.R- старший байт кол-ва регистров для считывания
L.N.R- младший байт кол-ва регистров для считывания
CRC- два байта (младший и старший) контрольной суммы

2. Записываем значение регистра (переменной)

|A|F|H.R.A|L.R.A|H.V|L.V|CRC|

A- адрес устройства
F- номер функции (5, 6)
H.R.A- старший байт адреса начального регистра (у карела "переменной") - и не забываем отнимать единицу ))
L.R.A- младший байт адреса начального регистра
H.V- старший байт записываемого значения
L.V- младший байт записываемого значения
CRC- два байта (младший и старший) контрольной суммы

Состояния цифровых входов/выходов: "0" - замкнут, "1" - разомкнут.
Аналоговые значения (читаем один регистр): (байт№5*256+байт№6)/10 - для положительных значений
((байт№5-255)*256+(байт№6-255))/10 - для отрицательных значений.

Запись значений регистров аналоговых переменных и значений типа integer производятся по тому же принципу.
klav-st
Всем доброго дня!
Нужно вывести данные с контроллеров carel рСОxs. Протокол сети - ModBus.

Запросил регистры с 1 по 128 , во всех ячейках единицы со степенью -40 и т.д., практически ноль. Инвертировать тоже пробовал. Менял тип данных, проблема та же.

Кто работал с такой системой, приведите, пожалуйста, пример запроса к контроллеру - считывания, допустим, значения датчика температуры котроллера. Желательно карту регистров, где какая температура и где какие дискретные сигналы.
Igorchello
Цитата(klav-st @ 19.6.2013, 6:31) *
Всем доброго дня!
Нужно вывести данные с контроллеров carel рСОxs. Протокол сети - ModBus.

Запросил регистры с 1 по 128 , во всех ячейках единицы со степенью -40 и т.д., практически ноль. Инвертировать тоже пробовал. Менял тип данных, проблема та же.

Кто работал с такой системой, приведите, пожалуйста, пример запроса к контроллеру - считывания, допустим, значения датчика температуры котроллера. Желательно карту регистров, где какая температура и где какие дискретные сигналы.


В контроллерах Carel стандартный протокол Modbus RTU.
Для считывания данных из регистров нужно использовать тип INT.

Контроллер pCOxs - свободно-программируемый. Соответственно какие данные в каких регистрах хранятся определяется программой, которая залита в контроллер.
Может вообще ничего не передаваться в сеть.
Нужно искать документацию на программу.
Guk_Oleg
Добрый день.
Помогите мне с таким вопросом.
Нужно в програме зделать регистры которые будуть считоватса при помощи скады. Ето должно делатса по протоколу Modbus на контролерах Carel. Их будет 15 шт. как мне ето зделать, по тому што я толька начинаю работать по автоматике и тут такая задача, зарание спасибо!!!
polyakov.mo
при создании переменной в 1tool ставите во вкладке network галочку "BMS/Fieldbus". Далее для порта BMS в той же вкладке выбираете input/input-output. А еще очень полезно почитать help к переменным bms_address, com_baudrate_bms, com_protocol_bms

PS Вы с Украины?
Guk_Oleg
Да с Украины ну и руский плохо знаю и по сообщении ето заметно)))))
Спасибо.
А как оно будет с Modbus работать?
polyakov.mo
рекомендую в общих чертах ознакомиться вот с этим сообщением и вложением, а там в показе слайдов на общие доки по MODBUS ссылки есть
Guk_Oleg
Спасибо!
rancatto
Цитата(Guk_Oleg @ 15.7.2013, 16:47) *
Да с Украины ну и руский плохо знаю и по сообщении ето заметно)))))
Спасибо.
А как оно будет с Modbus работать?

Как настроите порты филдбас так и будет. может по модбасу, каресу, лону. переменная - Com_Protocol_fieldbus.
Guk_Oleg
Спасибо!! а как оно будет работать если 15 контроллеров практически с одинаковыми программами и переменными?
polyakov.mo
В сети Modbus у контроллера есть адрес. В случае с Carel от 1 до 207. Master (в Вашем случае SCADA) отправляет запрос - в запросе есть адрес Slave (в Вашем случае контроллер Carel), команда, адрес регистра (-ов)
Вы скачайте мануалы по Modbus, там это написано
Guk_Oleg
Спасибо!! Я почти со всем разобрался, только еще один вопрос.
Как физически мне все эти контроллеры объединить и подключить к компьютеру, и как задать адрес устройства в случае slave.

Извините я уже увидел как задать адрес устройства!!
polyakov.mo
В своих копаниях Вы должны были наткнуться на описание интерфейса RS485 (мы же говорим о modbus rtu, а не modbus tcp?), в котором нарисованы экранированные кабели с витыми парами проводов. Один провод на RX+/TX+, второй на RX-/TX-, третий на GND. Далее все соединяются шлейфом. На последнем контроллере поставьте терминатор между RX+/TX+ и RX-/TX-, по простому - резистор ~120 Ом, и второй конец шлейфа подсоединяете к преобразователю интерфейсов, который должен быть у Вас, если Вы сами прошивали контроллеры. В случае, если 3 пин разъем на преобразователе - все нормально, на нем тоже есть +,-,0. Если он у Вас с телефонным разъемом RJ12, смотрите вложение.

Обратите внимание, у всех контроллеров должны быть разные адреса, одинаковые форматы передачи данных, одинаковые скорости.
Guk_Oleg
Большое спасибо, буду приступать к работе))
Скажите пожалуйста я правильно понял:
1) Настраиваем Modbus slave так как в демо версией;
2) В настройках переменных в закладке network настраиваю BMS порт;
3) присваивает каждому контроллеру свой ​​адрес и одинаковую скорость;
4) Покупаю к каждому контроллеру серийные карты;
5) витой парой обедною все контроллеры между собой таким образомНажмите для просмотра прикрепленного файла;
6) Первый контроллер к RS 485 конвертере и из него к компьютеру;
7) На последнем контроллере между RX + и RX - ставлю 120 Ом резистор.
И то должно быть все?
Извините за такое количество вопросов!
polyakov.mo
Цитата(Guk_Oleg @ 16.7.2013, 10:20) *
Большое спасибо, буду приступать к работе))
Скажите пожалуйста я правильно понял:
1) Настраиваем Modbus slave так как в демо версией;
2) В настройках переменных в закладке network настраиваю BMS порт;
3) присваивает каждому контроллеру свой ​​адрес и одинаковую скорость;
4) Покупаю к каждому контроллеру серийные карты;
5) витой парой обедною все контроллеры между собой;
6) Первый контроллер к RS 485 конвертере и из него к компьютеру;
7) На последнем контроллере между RX + и RX - ставлю 120 Ом резистор.
И то должно быть все?
Извините за такое количество вопросов!


1 - да.
2 - да.
3 - да.
4 - да, если PCO3; у PCO5 уже есть - в данном случае по встроенному в 1tool help почитайте про настройку порта. Переменные примерно так же называются, я с PCO5 еще не работал, особенностей не знаю.
5 - да, желательно витая пара в экране.
6 - да.
7 - да.

А еще:
8 - сделайте таблицу регистров для того, кто будет все это встраивать в SCADA. Таблица должна содержать следующую информацию: адрес регистра (он же индекс), тип переменной (bool/int), доступ (чтение/чтение-запись), в примечании укажите за что отвечает переменная и диапазоны значений

Вот теперь все
Guk_Oleg
Большое вам человеческое спасибо!
polyakov.mo
Пожалуйста

Я Вам не упомянул, что порт plan можно использовать в режиме Modbus. Сам начал пробовать, потом время для экспериментов кончилось, однако тех поддержка уверяет, что это возможно. Обратитесь к Igorchello в этой ветке

Глядишь съэкономите 15*100 EUR и премию сможете попросить )))

svintus
А как насчет оптоизоляции?
polyakov.mo
Цитата(svintus @ 16.7.2013, 10:51) *
А как насчет оптоизоляции?


По каталогу Carel доп. плата имеет оптоизоляцию, у plan - как опция, считаем, что ее нет
svintus
Ну, я как бы имел ввиду, что эта экономия может боком вылезть.
Guk_Oleg
Спасибо.
Guk_Oleg
Подскажите пожалуйста я сделал как было сказано выше, а у меня почему-то не связывается контроллер с компьютером по Modbus в чем может быть причина?
polyakov.mo
Чудес быть не должно.

Прикрепите скрины из 1tool с переменными bms_address, com_baudrate_bms, com_protocol_bms; а так же вкладки с окнами объявления какой-либо переменной для чтения по modbus. Каким ПО со стороны компьютера читаете переменные?

А отвечая собственно на вопрос, причины могут быть следующие:
1. программно со стороны контроллера;
2. аппаратно: неверное расключение RS485, не к тому порту....;
3. программно со стороны компьютера: драйверы преобразователя интерефейсов;
4. настройки формата передачи данных и скорости отличаются у контроллера и ПО со стороны компьютера
Guk_Oleg
Я использовал несколько программ:
Modbus poll, SCADA TRACE MODE, Modbus slave.
У Modbus poll была ошибка Timeout error.

Может быть причина в том, что это PCO XS
polyakov.mo
Цитата(Guk_Oleg @ 6.8.2013, 10:54) *
У Modbus poll была ошибка Timeout error.


Экспресс диагностика: задайте в modbus poll адрес устройства на 1 меньше, чем у контроллера. Аналогично адрес читаемой переменной. Отпишитесь
polyakov.mo
Настройка порта: протокол - ок,
скорость - попробуйте ничего не записывать в переменную com_baudrate_bms, посмотрите в 1tool значение по умолчанию: нажмите на глаз, который включает показ неподключенных соединений. Если переменной будет присвоено 4 - все норм.
настройка переменной - норм.

по мануалу к PCOxs у него есть место для установки платы RS485 для автоматики верхнего уровня

Фотографируйте контроллер с платой и расключение проводов. Дополнительно проверьте, сидит ли плата RS485 на своем месте
Guk_Oleg
Может ли быть причина в том что у меня подключен 2 контроллера?
Попробовал я задать адреса на 1 меньше такая же ошибка.
подключение к плате:
Резистор припкручен к GND и + потому что мне кажытса что наклейка не тем боком приклеена.
polyakov.mo
Может, если у них адреса одинаковые. Резистор 120 Ом прикрутили?
Guk_Oleg
Глянь ище на настройку Modbus poll
Адреса разные.
polyakov.mo
Цитата(Guk_Oleg @ 6.8.2013, 11:30) *
Резистор припкручен к GND и + потому что мне кажытса что наклейка не тем боком приклеена.


Сдается мне, что приклеена правильно. У меня в руках вот такой. С его помощью прошиваю контроллеры, ибо заводской 6 пин кабель сломал. Попробуйте оставить в сети только 1 контроллер и открутите резистор. А еще лучше посмотрите бумажку к плате и саму плату, на текстолите пишут назначение контактов (во всяком случае на плате для порта fieldbus написали) . У меня под рукой ни бумажки, ни платы, ни контроллера - все продал )))

Modbus poll - нормально.
адрес контроллера - 1
функция 3 - читать регистры
с регистра с индексом 1 читать 26 регистров.

Добавьте скрин с настройкой самого порта: скорость и формат
polyakov.mo
Поправка:
Сейчас запямотовал, может для чтения регистра с доступом R/W нужно будет использовать функцию 4, а не 3. Просто не помню
Guk_Oleg
Большое спасибо уже все работает.
Видимо не хотело работать без первого слейв, поскольку я прописывал адрес 2 и 3.
А наклейка действительно была правильно приклеена.
p.s Были бы вы во Львове с меня было бы пиво)))) laugh.gif laugh.gif
polyakov.mo
Все оказалось на поверхности

PS в 100 км от Львова в Бродах во времена СССР родили моего старшего брата. Вдруг он решит съездить посмотреть в сознательном возрасте место своего рождения - сяду на хвост )))
Guk_Oleg
хорошо))))
Lawkraft
Добрый день! Кто-нибудь дружил Carel Easy с Modbus RTU? Нет ни данных, не HEX адресов, ни связи(
svintus
Carel Easy поддерживает только протокол Carel
Barbus
https://wirenboard.com/ru/product/WB-REF-U/
Вот через такое можно подключиться по modbus. Мы их поставили несколько сотен, работает стабильно. Подключали, правда, carel μRack, но EASY у них тоже присутствует в списке поддерживаемых контроллеров.

Lawkraft
Цитата(Barbus @ 23.1.2025, 7:41) *
https://wirenboard.com/ru/product/WB-REF-U/
Вот через такое можно подключиться по modbus. Мы их поставили несколько сотен, работает стабильно. Подключали, правда, carel μRack, но EASY у них тоже присутствует в списке поддерживаемых контроллеров.

Спасибо) такой уже посоветовали) по ходу это единственный доступный способ без бубнов) С Овен шлюзом пойдёт?
Barbus
Да, через овен работают.
Lawkraft
Цитата(Barbus @ 23.1.2025, 9:55) *
Да, через овен работают.

уже пользуем, спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.