Real Time изменение конфигурации

Общие вопросы по оборудованию и программному обеспечению Компании ДЭП
Faster
Сообщения: 653
Зарегистрирован: 11 июл 2007, 09:38

Сообщение Faster » 14 дек 2009, 03:21

Здравствуйте ДЭП, как всегда я с не линейным вопросом.

Есть конфига в которой опрашивается масса МОД БАС устройств с адреами 1-6 но есть засада в том что устройства могут бытьизменены, точнее технологически они одинаковые выплняют одно и тоже но адреса попротоколу модбас разные ...

мне бы в таблице модбас мастер (параметры опроса) менять определённые параметры ... я вроде натыкался тут на такие варианты , расскажите по подробней как и чем это делать ?
ну и все тонкости напримернужно ли перезапускать контроллер ...

ещё вопрос можно ли из си блока перезапустить контроллер так чтобы это не считалось ошибкой ? просто рестарт эффект такой же как например выбор в системном меню "НОРМАЛЬНЫ" когда он уже в неём находится ...

жду ответа :)
Последний раз редактировалось Faster 26 янв 2010, 03:19, всего редактировалось 1 раз.

galina
Сообщения: 79
Зарегистрирован: 03 дек 2007, 09:56
Откуда: Компания "ДЭП"

Real Ti,e изменение конфигурации

Сообщение galina » 14 дек 2009, 11:58

Faster писал(а):ещё вопрос можно ли из си блока перезапустить контроллер так чтобы это не считалось ошибкой ? просто рестарт эффект такой же как например выбор в системном меню "НОРМАЛЬНЫ" когда он уже в неём находится ...

жду ответа :)


WORD wRestart = 0;
smSetValue(SMP_SYS_SYSTEM_MODE, &wRestart, NULL);

Баев Владимир
Сообщения: 108
Зарегистрирован: 15 мар 2007, 14:56
Откуда: Компания ДЭП

Real Ti,e изменение конфигурации

Сообщение Баев Владимир » 14 дек 2009, 12:38

Из поста совершенно непонятно какой параметр Вы собираетесь менять, но вот описание функций чтения-записи параметров из APMAN.H

// прочитать/записать значение параметра (CompID, ParmID) в *Value:
// Arg1 - номер строки в таблице (нумерация с 0),
// Arg2 - смещение номера таблицы в диапазоне (нумерация с 0)
_LIBIMPORT WORD amGet(WORD CompID,WORD ParmID,void *Value,xWORD Arg1,WORD Arg2);
_LIBIMPORT WORD amSet(WORD CompID,WORD ParmID,void *Value,xWORD Arg1,WORD Arg2);

для вычисления CompID нужно использовать макрос MAKE_COMPID(c,i), с - ID компонента, i - номер экземпляра компонента в конфигурации.
например,
amSet(MAKE_COMPID(33290, 0), 21, &val, 0, 0);

ID компонента можно посмотреть в свойствах компонента;
ParamID - меню в главном окне конфигуратора Администратор - Администратор задач, закладка Задачи, таблица Список полей выбранной таблицы.

После записи параметра, чтобы он начал действовать, требуется рестарт контроллера.

Faster
Сообщения: 653
Зарегистрирован: 11 июл 2007, 09:38

Сообщение Faster » 15 дек 2009, 03:28

Так а теперь тоже на примере, например смены адреса контроллера
Это получается копонент 19 экземпляр 0 а дальше ? как узнать какая таблица ? немного по подробней ?

Если можно кусок си кода :)

Баев Владимир
Сообщения: 108
Зарегистрирован: 15 мар 2007, 14:56
Откуда: Компания ДЭП

Сообщение Баев Владимир » 15 дек 2009, 17:09

amSet(MAKE_COMPID(19, 0), 1, &val, 0, 0);


ParamID - меню в главном окне конфигуратора Администратор - Администратор задач, закладка Задачи, таблица Список полей выбранной таблицы.

скрин здесь: http://slil.ru/28348604

Arg2 - смещение номера таблицы - это, например, =1 для таблицы "Формат DEP_1" или "Среда RS485_1"
Если смещение _N ("таблица_N") в названии отсутствует, то =0, как в примере выше.