This is topic Преобразователь частоты ATV31HU74N4 и MODBUS in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.
Есть преобразователь частоты, который мы хотим подключить к нашему контроллеру по MODBUS. Преобразователь частоты называется ATV31HU74N4. Есть ли у Вас какой-нибудь опыт работы с этим преобразователем по MODBUS. Если есть какой-нибудь тестовый проект, не могли бы Вы его выслать мне на ящик: dreamweaver@petron.ru? В описании есть только несколько примеров общего подхода отсылки данных на этот преобразователь, а вот конткретно, что нужно отослать для запуска двигателя, например, нет. Общая схема такова: - Slave - 1 byte - номер функции - 1 байт (3 - чтение N байтов, 6 - запись байта, 16 - запись N байтов, 43 - идентификация ) - Номер слова - Его значение - Контрольная сумма Вопросы: 1) Как организуется передача этих 8-ми байт: одним каналом последовательно, разными каналами? 2) В настройках MODBUS в TM есть адрес и канал. Что это за атрибуты? 3) Как формируется контрольная сумма? Ее нужно просчитывать самому или есть стандартный способ формирования контрольной суммы?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В общем обмен по ModBus RTU сводится к тому, что в контроллере есть области памяти через регистры которой и производится считывание необходимых параметров, а также запись команд управления этим прибором. Обмен производится стандартными пакетами запрос-ответ в формате протокола ModBus. При обращении к разным областям памяти устройства в ModBus есть так называемые функции, они нумерованы. За каждым номером в ТМ есть специальный описатель, который и формирует пакет в формате MdoBus по данной функции к устройству. Ну а настройки этого описателя: адрес - это адрес устройства (программируется в самом устройстве, что-то вроде его номера в сети RS485), канал - это адрес регистра памяти в устройстве (к которому будет осуществляться обращение по данной функции). За формирование кадра пакета ModBus, а также контрольной суммы отвечает наш сервер, поэтому пользователю делать это нет необходимости. Вам только необходимо найти в документации на устройство по каким адресам находятся его управляющие и информационные регистры, и создать для каждого из них соответсвующий описатель в проекте.
Posted by DreamWeaver (Участник № / Member № 1485) on :
А как потом отправлять данные на устройство? Также пакетами по 8 байт? Я выслал на ящик hotline1@adastra.ru описание переменных для устройства. Не могли бы Вы посмотреть и сказать как настроить источник данных MODBUS и какие записывать значения в каналы, созданные авпостроением? То есть нужно ли записывать только одно значение или нужно записывать последовательно через определенный промежуток времени несколько значений?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Посмотрел документацию - все адреса регистров контроля и управления подробно описаны начиная с 11-й страницы, вот только нигде в документации не указано какими именно функциями ModBus эти регистры допустимо считывать/записавать.
Вам необходимо обратиться за данной информацией либо к поставщику данного оборудования, либо непосредственно к производителю.
Posted by DreamWeaver (Участник № / Member № 1485) on :
Я Выслал Вам еще одно описание протокола MODBUS для ПЧ ATV31 (на hotline1@adastra.ru). Там описано (на английском) какие функции нужно использовать. Хотелось, чтобы Вы привели пару конкретных примеров настроки источников данных для передачи данных ПЧ, а также какие данные и в какой последовательности нужно отправлять. Например, совсем не понятно, куда записывать регистры контроля и управления, которые описаны в описании, которое я Вам уже присылал. Их нужно записывать в поле "Адрес", "Канал"? Или же этот адрес регистра нужно передавать в канале?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Там все просто получается - прибор поддерживает функции: №3 - для чтения из него N слов (слово - 16-бит). №6 - запись одного слова
Возьмем для примера два регистра из описания: 1) 8603 - Слово состояния DRIVECOM (только чтение) 2) 8501 - Слово управления CMD (чтение - запись)
Соответственно настройки каналов будут следующими: 1) Тип описателя=Rout_Word(3), Адрес=(номер устройства), Канал=0х219B (8603 - в HEX формате) Тип протокола=ModBus, Направление=Input
2) Для записи в этот регистр: Тип описателя=W_Word(6), Адрес=(номер устройства), Канал=0х2135 (8501 - в HEX формате) Тип протокола=ModBus, Направление=Output Для чтения из регистра: Тип описателя=Rout_Word(3), Адрес=(номер устройства), Канал=0х2135 (8501 - в HEX формате) Тип протокола=ModBus, Направление=Input
Логику управления устройством подсказать не могу, это уже предстоит разбираться Вам, с помощью документации и техподдержки производителя или поставщика.
Posted by DreamWeaver (Участник № / Member № 1485) on :
А нужно ли отдельно создавать группу COM-порты? Соответственно, нужно ли создавать COM-порт? Какие у него должны быть настройки и как он должен связываться с каналами MODBUS?
Posted by DreamWeaver (Участник № / Member № 1485) on :
А где указывается, что я использую именно функцию №3, а не какую-нибудь другую? В настройках каналов MODBUS? Или же нужно передавать в каждый регистр последовательно как написано в описании сначала 02, затем номер функции, номер слова для записи, его значение и CRC?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1) В группе СОМ-порт создается тэг инициализации СОМ-порта, связывать его ни с чем в проекте не нужно. 2) Настройки СОМ-порта зависят от того, какие парамерты линии связи запрограммированы в устройстве. 3) Номер функции указывается в названии описателя, когда Вы выбираете его из меню группы MODBUS. 4) Ничего в регистр передавать из формата кадра пакета не нужно - МРВ сам формирует кадр протокола ModBus исходя из настроек описателя. В регистры передаются/принимаются уже значения. 5) Вам бы немного почитать теории о принципах обмена по последовательным интерфейсам, а также описание самого протокола ModBus RTU на www.modicon.com - думаю, существенный ряд вопросов тогда сразу отпадет.
Posted by DreamWeaver (Участник № / Member № 1485) on :
Понятно. Вроде все сделал как Вы говорили, но все-равно не работает: В узле RTM создал группу "COM-порты". В ней создал "COM-порт1". Он у меня стоит как Master, 19200,0x3f8,8-1-e,4. Управление передачей не ставил. А что это вообще такое и в каких случаях нужно ставить? Таймаут=10000 (что соответствует 10с, установленным на ПЧ), остальное по нулям + поставил флаг CRC. Каналы MODBUS настроил как Вы писали: номер порта=1, адрес=1, канал 0x219b, тип протокола MODBUS, направление INPUT, формат Дискрет. Мы используем преобразователь ADAM-4520 для того чтобы преобразовывать RS-232 в RS-485. Может дело в нем? Когда подключаюсь и управляю ПЧ поставляемой с ним программой, то все работает нормально, а также светодиод на преобразователе RS232-RS485 постоянно мигает красным светом. Но когда пытаюсь посылать значения из TraceMode, то светодиод не мигает, а просто горит зеленым, что говорит о том, что данные не поступают. Еще одно, для всех каналов, созданных автопостроением по источнику MODBUS стоит признак аппаратной недостоверности (атрибут 4). Как его сбросить или он сбрасывается сам? Я так полагаю, что причина именно в связи с ПЧ, а не с логикой отправляемых данных в регистры, так как светодиод на преобразователе не мигает вообще и постоянно стоит признак аппаратной недостоверности. В чем может быть причина?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Проект, пожалуйста, покажите (на E-mail).
Posted by DreamWeaver (Участник № / Member № 1485) on :
Выслал на hotline1@adastra.ru
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
У вас в настройках ModBus-описателей Номер порта=1, а это СОМ2 физически. Вам надо 0 задавать, потому как Вы через СОМ1 планируете обмен с устройством осуществлять.