отправка-получение данных через WAGO 750-653 |
Ответить | Страница 12> |
Автор | |
Новичок Присоединился: 15 Июль 2011 Online Status: Offline Публикации: 8 |
Опубликовано: 15 Июль 2011 17:52 |
Есть контроллер WAGO 750-841. Один из модулей, прицепленных к нему - 750-653 (RS485). По 485-му интерфейсу подключены приборы, Powerlogic PM820, понимающие modbus.
Есть установленный OPC-сервер (KEPware, но это неважно, можно и другой поставить). При составлении конфигурации слотов контроллера KEPware для модуля 750-653 зарезервировала два тега AI и два AO. Подскажите, пожалуйста, чайнику, что нужно записать в AO1 и АО2 и в каком порядке, чтобы прочитать в AI, скажем, содержимое регистра 1120 с прибора с адресом 01? Я так понимаю, в AO нужно последовательно (побайтно? пословно?) передать: адрес устройства (0x01); номер функции - чтение holding-регистра (0x04); какие-то данные, где будет указан номер регистра, который я хочу прочесть и, возможно, количество регистров, если я хочу получить информацию сразу из нескольких; возможно, еще контрольная сумма, (как ее вычислять?) |
|
Новичок Присоединился: 15 Июль 2011 Online Status: Offline Публикации: 8 |
|
Кстати, в другом источнике вычитал, что чтение holding-регистра - это функция 03. Кому верить?
|
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 02 Октябрь 2007 Категория: Russian Federation Online Status: Offline Публикации: 427 |
|
Чтение hold регистров - это команда 03. Но разработчики делают так: не разделяют регистры на hold и input и делают доступ и к тем и к тем через команду 3, просто запись в input регистры будет в пустоту. И дельше поступают так: разрешают доступ ко всем этим же регистрам со всеми теми же адресами 4 командой (чтение input регистров).
Это уменьшает путаницу, т к не надо помнить какой это регистр input или hold - они все в одним адресном пространстве и нет такого адреса, который был бы у input и hold регистров.
А чтобы не гадать попусту зайдите на modbus.org и посмотрите команды модбас обмена. А то как вы собираетесь работать с модбасом, если по командам ответы на форуме ищете?
|
|
При экспериментах ни один чайник не пострадал
----------- Плохому системному интегратору всегда OPC сервер мешает. ______________ Пишу на C++ за еду |
|
Новичок Присоединился: 15 Июль 2011 Online Status: Offline Публикации: 8 |
|
Спасибо за ответ. Теперь с последовательностью, которую нужно передать на прибор, более-менее ясно. Составлен необходимый пакет длиной 8 байт.
Осталась нерешенной другая проблема. Я даю SCADA-системе 8 байт, которые нужно передать на прибор. У нее есть инструмент - OPC-сервер, в котором интерфейсному модулю WAGO 750-653 соответствуют два тега аналогового вывода. Как 8 байт записать в эти теги? Присвоить тегам тип DWORD, разбить 8 байт на две части по 4 и просто записать в AO1 и AO2? И как будут получены 8 байт ответа от прибора? А если этих байт будет не 8, а больше? И с другой стороны - в описании на 750-653 сказано, что для отправки нужен байт управления (control) и максимум 5 (в моей модификации модуля - 3) байт данных. Как это соотнести с нашими 8 байтами? Или этим согласованием занимается OPC и мне в это лезть не нужно?
|
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 14 Май 2003 Online Status: Offline Публикации: 770 |
|
Контроллер Wago не является шлюзом из Modbus/TCP в Modbus RTU. Такую функциональность необходимо реализовывать в программе контроллера. От нее зависит, что нужно передать, и нужно ли вообще.
|
|
Инженер-системотехник
+7 (916) 477 3925 |
|
Новичок Присоединился: 15 Июль 2011 Online Status: Offline Публикации: 8 |
|
Используя CoDeSys в поставке Wago I/O Pro и библиотеку Modb_l05.lib с сайта wago, можно получить и обработать нужную информацию с устройств, подключенных по Modbus к 750-653. Не подскажете, каким образом можно передать полученные данные на уровень выше, на SCADA-систему (конкретно - Iconics Genesis32) для диспетчера?
PS. Кстати, спасибо за Ваши статьи на wago.su - много полезного узнал. |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 14 Май 2003 Online Status: Offline Публикации: 770 |
|
Отвечу вкратце. Если разместить получаемую от устройств информацию в область выходных сетевых переменных, которая расположена с %QW256 по %QW511, а передаваемую на эти устройства информацию получать из области входных сетевых переменных, которая располагается по адресам с %IW256 по %IW511, то эти данные станут автоматически доступны по протоколу Modbus/TCP для верхнего уровня. Подробную информацию о соответствии адресов Modbus адресам в контроллере можно узнать из краткого руководства пользователя и руководства пользователя.
Детализированный пример я планирую написать позже, когда будет время. |
|
Инженер-системотехник
+7 (916) 477 3925 |
|
Новичок Присоединился: 15 Июль 2011 Online Status: Offline Публикации: 8 |
|
Спасибо, Вы очень помогли. В итоге система обмена выглядит так:
контроллер получает данные от приборов (программа, использующая библиотеку modb_l05.lib), и размещает их в переменных %QW256-%QW511. А OPC-сервер - WAGO OPC или KEPware -считывает их оттуда с помощью тегов ввода, нацеленных на адреса 300257-300512 - адрес равен номеру переменной QW плюс 300001 (именно так, со сдвигом на 1 ячейку). Кстати, попутно еще вопрос: в описании контроллера 750-841, ссылку на которое Вы давали, есть упоминание еще одного пула переменных %QW1276-%QW1531. Но как можно использовать эти переменные для обмена и можно ли это сделать вообще, я не нашел. Вы не пробовали их использовать?
|
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 14 Май 2003 Online Status: Offline Публикации: 770 |
|
Да, с адресацией в Modbus известная путаница. Адрес может быть указан в десятичном виде или в шестнадцатеричном, и начинаться адреса могут с 0 или с 1. А еще иногда бывает, что первый адрес 1, но единичку надо добавить все равно :)
Смущает людей и первая циферка в адресе, которая к адресу регистра вовсе не относится, а определяет код области памяти и соответствующие функции, которые используются для доступа к ней. Разумеется, для чтения области "3..." нужно использовать функцию 4, и наоборот, для области "4..." функцию 3 :) Адреса %QW1276-%QW1531 через Modbus не видны. Эта область памяти предназначена для обмена по протоколу Ethernet/IP. Его удобно использовать, например, для подключения к Allen-Bradley. Пример есть на сайте Wago. |
|
Инженер-системотехник
+7 (916) 477 3925 |
|
Новичок Присоединился: 15 Июль 2011 Online Status: Offline Публикации: 8 |
|
В итоге я все сделал и оно уже работает. Пришлось немного повозиться с CoDeSys, пока понял, чем программа для контроллера отличается от программы для компьютера. И, поскольку адресов %QW256-%QW511 мне не хватило, я еще прихватил %MW. Они тоже видны OPC-серверам через Modbus в адресах 312289-... и 412289-... Еще раз большое спасибо за помощь.
Есть еще один вопрос, который я пока не смог победить: как программу CoDeSys сделать загрузочной, чтобы контроллер хранил ее в энергонезависимой памяти и при перезагрузке, например, по отключению питания автоматически ее запускал. Делаю все, как написано в мануале по CoDeSys (в его Wago-вской редакции), но не получается. У меня почему-то пункт Download в меню Online недоступен (серый). Пока обошелся тем, что при пропадании ввода с приборов (т.е. подозрении, что контроллер прекратил выполнение программы по какой-то причине) запускается батник, который перезаливает программу с компьютера. Но это, конечно, извращение.
|
|
Ответить | Страница 12> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |