В документации на ADAM5511 написано, что у контроллера есть энергонезависимая память ~60К. Пробовал работать с библиотечнымифункциями read_bk_ram(), write_bk_ram():
1) читаем память;
2) печатаем на экране содержимое;
3) пишем в память;
4) читаем память;
5) печатаем на экране содержимое.
Однако после выполнения теста убеждаюсь, что память обнуляется после выхода из программы в командную строку.
Мне же необходимо, чтобы данные можно было считать даже после отключения/включения контроллера (иначе зачем эта память нужна ?).
Если кто-нибудь использовал эту память для хранения коэффициентов, стостояния регуляторов и т.д. для восстановления после перезагрузки или простоя, подскажите в чем дело и как работать с этой памятью.
С Уважением, Zevaka.
В описании ошибки. Энергонезависимую память пользуют другие функции:
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.
Мало того, firmware должно быть старше версии А2.4, а то были глюки со смещением адресов.
Спасибо за ответ, буду пробовать.
Я тут пытал функции read_ASCII_ram() и write_ASCII_ram(),
обнаружил, что через них можно тоже писать (куда ?), но
данные сохраняются только в количестве около 7К.
В документации об этих функциях ничего нет.
Короче, ребята, ADAM5511 - глючная машина.
С Уважением, Zevaka.
Первоначально опубликовано Zevaka
Короче, ребята, ADAM5511 - глючная машина.
Ошибки в документации и глюки - это две большие разницы...
К контроллеру ADAM-5510 в составе досовской утилиты прилагается пример ex5.c, который описывает работу с этими функциями. ADAM-5511 в этом отношении ничем не должен отличаться. Ну а если функциями пользоваться не хочется, то в описании сказано, что Backup RAM расположена по адресам 30000H...3EFFFH.
Инженер-системотехник
+7 (916) 477 3925
Не ответит ли г-н Максим Ананских как специалист Prosoft, сколько же все-таки Backup RAM реально можно использовать для своих нужд в ADAM-5511 ? В документации сказано, что 60К. Эксперименты показывают, что реально можно использовать около 7К. По поводу примера ex5.c. Пробовал, не работает. В примере используются функции read_backup_ram() и write_backup_ram(), о моих экспериментах с этими функциями см. сообщение 1.
В заключение вопрос к Максиму Ананских. Исправляются ли ошибки в документации и где можно почитать эти исправления, чтобы не отнимать время у участников форума.
С уважением, Zevaka.
Доброго времени суток!
Не знаю, насколько может быть полезна моя информация, но в свое время, столкнувшись с аналогичной проблемой, я обнаружил следующее:
1. Объявлений функций read_backup_ram и write_backup_ram в файле 5511drv.h просто нет, но в библиотеке utility.lib тела функций есть. Так что пришлось добавить объявления руками.
2. Функции read(write)_backup_ram работают, если указывать адреса в диапазоне 0x1000-0x2FFF, т.е. доступно 8KB.
Сильно сомневаюсь, что стоит использовать такой "доморощенный" метод работы с контроллером, но, к сожалению, попытки прояснить ситуацию с наличием корректного описания к ADAM-5511 ни к чему не привели.
С уважением.
Спасибо, HOLO, попробую использовать Вашу информацию.
С уважением, Zevaka.
В ADAM-5511 обе пары функций, read_backup_ram / write_backup_ram и read_user_ram / write_user_ram, работают с диапазоном физических адресов 3C000H...3EFFFH, то есть с их помощью можно обращаться к 12 кбайт статической памяти. Первая пара читает и записывает байты, в то время как вторая работает со словами.
При отсутствии доступа к первым 4 кбайт этой памяти, по информации от Advantech, помогает обновление Firmware контроллера (программки adam5511.exe) до версии 1.10.
Адреса 30000H...33FFFH, по-видимому, тоже можно использовать для хранения данных. Однако через библиотечные функции они не доступны. Это наводит на мысль, что они зарезервированы для нужд системы. Адреса 34000H...3BFFFH и 3F000H...3FFFFH используются системой.
В заключение хотелось бы отметить, что сейчас имеется более современная линейка контроллеров, в которую входят ADAM-5510M, ADAM-5510E, ADAM-5510/TCP и т.д.
Инженер-системотехник
+7 (916) 477 3925
Проблема в том, что мне досталась программа, написанная 5 лет назад, и столько же лет работающая на нескольких Adam 5511. Она считывает с портов модуля ADAM-5090 и перекладывает их в регистры Modbus для дальнейшей передачи. Исходники от программы есть не все (кмпиляция не возможна). Но есть кусок, в котором эти данные просто перекладываются в регистры при помощи write_user_ram (хотя, конечно, может быть, исходники у меня не рабочие). Может, была версия Adam5511.exe, позволяющая писать в регистры при помощи этой функции?
Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме