Borland C и adam5511 |
Ответить |
Автор | |
Новичок Присоединился: 03 Ноябрь 2005 Категория: Russian Federation Online Status: Offline Публикации: 13 |
Опубликовано: 20 Декабрь 2005 17:01 |
Здравствуйте!
Простая программа для проверки работоспособности Adam 5511: #include "adam5090.h" #include <5511drv.h> void main() { write_user_ram(0,10); write_user_ram(1,20); write_user_ram(2,30); } Вроде бы, по документации, в регистрах 42001, 42002, 42003 должны появиться числа 10, 20, 30. Но их там нет. Программа в контроллер загружается нормально. Может, должны быть какие-то настройки у компилятора (Borland C)? |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 14 Май 2003 Online Status: Offline Публикации: 770 |
|
Оказывается, с помощью функций read_user_ram и write_user_ram НЕЛЬЗЯ получить доступ к регистрам Модбас. Регистры 42001 - 42512 отображаются в ADAM-5511 на область статической памяти по адресам 3000:F800 - 3000:FBFF. Проще всего обратиться туда непосредственно: ptr = (unsigned char far*)MK_FP(0x3000,0); for (i = 0xf800; i < 0xFFFF; i += 16) {
} Кроме того, можно воспользоваться функциями read_backup_ram/write_backup_ram (индекс 3800 - 4823) и read_ascii_ram/write_ascii_ram (индекс 2100...3123). |
|
Инженер-системотехник
+7 (916) 477 3925 |
|
Prosoft.ru Присоединился: 21 Июнь 2003 Online Status: Offline Публикации: 432 |
|
Вот, что я имел по поводу этих функций в результате переписки с производителем: > > Read_user_ram > > Syntax: > > unsigned char read_user_ram(unsigned int index) > > Description: > > Reads the value in backup RAM at index address, 12 KB total backup > > RAM, index = 0 - 6143; > > > > Write_user_RAM > > Syntax: > > void write_user_RAM(unsigned int index, BYTE data) > > Description: > > Writes a byte to battery backup memory. > > Parameter Description > > index An index for data in the battery backup > > RAM, from 42001 to 48144; 12 KB battery > > backup SRAM in total. > > data A byte of data that the programmer wants > > to write to battery-protected SRAM. > > Return value: > > None. |
|
Новичок Присоединился: 25 Июнь 2004 Online Status: Offline Публикации: 24 |
|
Простите, но Вы сами пробовали воспользоваться рекомендациями производителей на реальном ADAM-5511? Я пробовал. Либо я рекомендаций не понял, либо они - полная лажа, как и описание, пришедшее с контроллером.
Вообще, странная ситуация - уже 2 года как мне (и, видимо, не только мне) не удается получить правильное описание функций write_backup_ram и read_backup_ram. |
|
Новичок Присоединился: 25 Июнь 2004 Online Status: Offline Публикации: 24 |
|
Уточнение :) - не удается получить правильное описание пар функций write_backup_ram/read_backup_ram и write_user_ram/read_user_ram.
|
|
Новичок Присоединился: 03 Ноябрь 2005 Категория: Russian Federation Online Status: Offline Публикации: 13 |
|
Нашел версию Adam5511.exe, с которой, похоже, вышеуказанные функции работают.
|
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 14 Май 2003 Online Status: Offline Публикации: 770 |
|
Пожалуйста, опубликуйте номер версии? |
|
Инженер-системотехник
+7 (916) 477 3925 |
|
Новичок Присоединился: 03 Ноябрь 2005 Категория: Russian Federation Online Status: Offline Публикации: 13 |
|
К сожалению, версию не запомнил, контроллеры с перепрошитой ОС и пользовательской программой ушли на объект. Могу выслать ADAM551.exe на эл.почту.
Но с использованием этой версии программа, содержащая следующие строки, работает, и в регистрах Modbus, соответсвующих документации, содержится информация: switch(stVar.tdTypeVar) { case TD_FLOAT: tdVar.f=atof(&(pCPort90->cByfRc[stVar.iBeg])); write_user_ram(uiAdrVar, tdVar.st.uiH); write_user_ram(uiAdrVar + 1, tdVar.st.uiL); break; case TD_LONG: tdVar.l=atol(&(pCPort90->cByfRc[stVar.iBeg])); write_user_ram(uiAdrVar, tdVar.st.uiH); write_user_ram(uiAdrVar + 1, tdVar.st.uiL); break; case TD_INT: tdVar.i=atoi(&(pCPort90->cByfRc[stVar.iBeg])); write_user_ram(uiAdrVar, tdVar.st.uiH); break; } |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 14 Май 2003 Online Status: Offline Публикации: 770 |
|
Вы можете залить её сюда, она ведь небольшая. Возможно, поможет кому-то. |
|
Инженер-системотехник
+7 (916) 477 3925 |
|
Новичок Присоединился: 03 Ноябрь 2005 Категория: Russian Federation Online Status: Offline Публикации: 13 |
|
Вот оно.
1EF5C_ADAM5511.zip Кстати, вопрос: а прденазначен Adam5511 для непрерывного опроса по Modbus? А то периодически Modbus DDE Server (Wonderware) выдает "Сбой связи". Линия связи хорошая. |
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |