ADAM-5510M & ModbusRTU_LIB |
Ответить |
Автор | |
Участник Присоединился: 13 Май 2005 Online Status: Offline Публикации: 61 |
Опубликовано: 08 Сентябрь 2010 17:22 |
Здравствуйте! Как получить доступ к регистрам контроллера через Modbus? Похожая тема была, но не раскрыта. Использую Advantech ModbusRTU OPC Server Configurator Ver 3.01.008 В контроллере ADAM-5510M: Испольлзую функции Modbus: #include "RTU.h" Modbus_COM_Init(COM1, Slave, (unsigned long)9600, NO_PARITY, DATA8, STOP1) ; Предполагаю что сервер OPC будет запрашивать у контроллера внутренние регистры. Но нигде так и не нашел на что ссылается Share_Mem[] в коде видно что Share_Mem[0] это адрес 40001 почему именно этот? как распределяются адреса в этом массиве? В сниффере вижу в цикле:
|
|
Новичок Присоединился: 21 Август 2010 Online Status: Offline Публикации: 27 |
|
Ответ на первый вопрос смотри в документе "ADAM-5510 Serial Manual Ed 3.0.pdf" на странице 116.
Зайди на сайт Modbus-IDA. Там много исчерпывающей информации о протоколе Modbus. Разберись с моделью данных. Если коротко, то с адреса 40001 начинается область регистров состояния контроллера, которые доступны на запись и чтение. Код запроса на чтение 0х04, 0001- номер регистра. Сервер, по моему разумению, работает по прерываниям от com-порта и таймера. Поэтому обрабочику прерывания надо "знать" только адрес массива данных, а в основной программе применять disable() и enable() (запрет и разрешение прерываний) для синхронизации записи и чтения данных из/в массив. Позволю себе повторить: разберись с моделью данных в Modbus, в ней понимание работы этой библиотеки. |
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |