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

Borland C и adam5511

 Ответить Ответить
Автор
Сообщение
Kamsky Paul Смотреть выпадающим
Новичок
Новичок


Присоединился: 03 Ноябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 13
Свойства публикации Свойства публикации   Ответить, цитируя автора - Kamsky Paul Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Borland C и adam5511
    Опубликовано: 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
Свойства публикации Свойства публикации   Ответить, цитируя автора - Максим Ананских Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 20 Декабрь 2005 17:13

Оказывается, с помощью функций 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)

{

printf ("3000:%04X- ", i);

for (j = 0; j < 16; ++j)

printf ("%02X ", *(ptr + i + j));

for (j = 0; j < 16; ++j)

{

if (*(ptr + i + j) < 0x20) putchar ('.');

else printf ("%c", *(ptr + i + j));

}

printf ("\n");

if ((i & 0xFF) == 0xF0)

if (getch() == 27) break;

if (i == 0xFFF0) break;

}

Кроме того, можно воспользоваться функциями read_backup_ram/write_backup_ram (индекс 3800 - 4823) и read_ascii_ram/write_ascii_ram (индекс 2100...3123).

См. также http://forum.cta.ru/forum_posts.asp?TID=749&PN=1

Инженер-системотехник
+7 (916) 477 3925
Наверх
KozlovKS Смотреть выпадающим
Prosoft.ru
Prosoft.ru


Присоединился: 21 Июнь 2003
Online Status: Offline
Публикации: 432
Свойства публикации Свойства публикации   Ответить, цитируя автора - KozlovKS Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 20 Декабрь 2005 17:18

Вот, что я имел по поводу этих функций в результате переписки с производителем:

> > 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.

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


Присоединился: 25 Июнь 2004
Online Status: Offline
Публикации: 24
Свойства публикации Свойства публикации   Ответить, цитируя автора - Holo Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 23 Декабрь 2005 10:42
Первоначально опубликовано KozlovKS

Вот, что я имел по поводу этих функций в результате переписки с производителем...

Простите, но Вы сами пробовали воспользоваться рекомендациями производителей на реальном ADAM-5511? Я пробовал. Либо я рекомендаций не понял, либо они - полная лажа, как и описание, пришедшее с контроллером.

 

Вообще, странная ситуация - уже 2 года как мне (и, видимо, не только мне) не удается получить правильное описание функций  write_backup_ram и read_backup_ram.

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


Присоединился: 25 Июнь 2004
Online Status: Offline
Публикации: 24
Свойства публикации Свойства публикации   Ответить, цитируя автора - Holo Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 23 Декабрь 2005 11:13

Уточнение :) - не удается получить правильное описание пар функций  write_backup_ram/read_backup_ram и write_user_ram/read_user_ram.

 

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


Присоединился: 03 Ноябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 13
Свойства публикации Свойства публикации   Ответить, цитируя автора - Kamsky Paul Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 26 Декабрь 2005 13:33
Нашел версию Adam5511.exe, с которой, похоже, вышеуказанные функции работают.
Наверх
Максим Ананских Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 14 Май 2003
Online Status: Offline
Публикации: 770
Свойства публикации Свойства публикации   Ответить, цитируя автора - Максим Ананских Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 26 Декабрь 2005 14:26

Пожалуйста, опубликуйте номер версии?

Инженер-системотехник
+7 (916) 477 3925
Наверх
Kamsky Paul Смотреть выпадающим
Новичок
Новичок


Присоединился: 03 Ноябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 13
Свойства публикации Свойства публикации   Ответить, цитируя автора - Kamsky Paul Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 26 Декабрь 2005 18:04
К сожалению, версию не запомнил, контроллеры с перепрошитой ОС и пользовательской программой ушли на объект. Могу выслать 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
Свойства публикации Свойства публикации   Ответить, цитируя автора - Максим Ананских Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 26 Декабрь 2005 18:20

Вы можете залить её сюда, она ведь небольшая. Возможно, поможет кому-то.

Инженер-системотехник
+7 (916) 477 3925
Наверх
Kamsky Paul Смотреть выпадающим
Новичок
Новичок


Присоединился: 03 Ноябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 13
Свойства публикации Свойства публикации   Ответить, цитируя автора - Kamsky Paul Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 28 Декабрь 2005 12:22
Вот оно.
1EF5C_ADAM5511.zip
Кстати, вопрос: а прденазначен Adam5511 для непрерывного опроса по Modbus? А то периодически Modbus DDE Server (Wonderware) выдает "Сбой связи". Линия связи хорошая.
Наверх
 Ответить Ответить

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

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