Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Программное обеспечение
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

ADAM-5510M & ModbusRTU_LIB

 Ответить Ответить
Автор
Сообщение
vladi33 Смотреть выпадающим
Участник
Участник


Присоединился: 13 Май 2005
Online Status: Offline
Публикации: 61
Свойства публикации Свойства публикации   Ответить, цитируя автора - vladi33 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: ADAM-5510M & ModbusRTU_LIB
    Опубликовано: 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) ;
ADAMRTU_ModServer_Create(1, (unsigned char *)Share_Mem, sizeof(Share_Mem));

Предполагаю что сервер OPC будет запрашивать у контроллера внутренние регистры. Но нигде так и не нашел на что ссылается Share_Mem[]  в коде видно что Share_Mem[0] это адрес 40001 почему именно этот? как распределяются адреса в этом массиве?

В сниффере вижу в цикле:


Запрос от OPC:
01 03 9C 41 00 01 FA 4E

Ответ от МК:
00 81 01
Тоесть это код ошибки.
Пробовал адреса 0,1, 10001, 40001 и пр, не работает.



Наверх
tonyk Смотреть выпадающим
Новичок
Новичок


Присоединился: 21 Август 2010
Online Status: Offline
Публикации: 27
Свойства публикации Свойства публикации   Ответить, цитируя автора - tonyk Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 08 Октябрь 2010 19:52
    Ответ на первый вопрос смотри в документе "ADAM-5510 Serial Manual Ed 3.0.pdf" на странице 116.

     Зайди на сайт Modbus-IDA. Там много исчерпывающей информации о протоколе Modbus. Разберись с моделью данных. Если коротко, то с адреса 40001 начинается область регистров состояния контроллера, которые доступны на запись и чтение. Код запроса на чтение 0х04, 0001- номер регистра. Сервер, по моему разумению, работает по прерываниям от com-порта и таймера. Поэтому обрабочику прерывания надо "знать" только адрес массива данных, а в основной программе применять disable() и  enable() (запрет и разрешение прерываний) для синхронизации записи и чтения данных из/в массив. Позволю себе повторить: разберись с моделью данных в Modbus, в ней понимание работы этой библиотеки.
Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz