|
Borland C и adam5511 |
|
Здравствуйте!
Простая программа для проверки работоспособности 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)? |
|
![]() |
|
|
Оказывается, с помощью функций 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 |
|
![]() |
|
|
Вот, что я имел по поводу этих функций в результате переписки с производителем: > > 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. |
|
![]() |
|
Простите, но Вы сами пробовали воспользоваться рекомендациями производителей на реальном ADAM-5511? Я пробовал. Либо я рекомендаций не понял, либо они - полная лажа, как и описание, пришедшее с контроллером.
Вообще, странная ситуация - уже 2 года как мне (и, видимо, не только мне) не удается получить правильное описание функций write_backup_ram и read_backup_ram. |
|
![]() |
|
|
Уточнение :) - не удается получить правильное описание пар функций write_backup_ram/read_backup_ram и write_user_ram/read_user_ram.
|
|
![]() |
|
|
Нашел версию Adam5511.exe, с которой, похоже, вышеуказанные функции работают.
|
|
![]() |
|
|
Пожалуйста, опубликуйте номер версии? |
|
|
Инженер-системотехник
+7 (916) 477 3925 |
|
![]() |
|
|
К сожалению, версию не запомнил, контроллеры с перепрошитой ОС и пользовательской программой ушли на объект. Могу выслать 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; } |
|
![]() |
|
|
Вы можете залить её сюда, она ведь небольшая. Возможно, поможет кому-то. |
|
|
Инженер-системотехник
+7 (916) 477 3925 |
|
![]() |
|
|
Вот оно.
1EF5C_ADAM5511.zip Кстати, вопрос: а прденазначен Adam5511 для непрерывного опроса по Modbus? А то периодически Modbus DDE Server (Wonderware) выдает "Сбой связи". Линия связи хорошая. |
|
![]() |
|
Ответить
|
| Переход на форум | Права доступа на форуме ![]() Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |