Страница 1 из 1

Добавлено: 14 дек 2009, 03:21
Faster
Здравствуйте ДЭП, как всегда я с не линейным вопросом.

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

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

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

жду ответа :)

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

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

жду ответа :)


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

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 - меню в главном окне конфигуратора Администратор - Администратор задач, закладка Задачи, таблица Список полей выбранной таблицы.

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

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

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

Добавлено: 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, как в примере выше.