PDA

Просмотр полной версии : ПЛК73: SWITCH_TO_EDITOR



Солнечный заяц
15.05.2012, 15:51
В библиотеке Ind_Mode есть функция SWITCH_TO_EDITOR, работа которой совершенно не описана:
Входной параметр имеет тип данных PARAM_NODE. Что сюда вводить?
В примере имеется текст:

PROGRAM PLC_PRG
VAR
ton1,ton2: TON; (*таймер задержки*)
starting:BOOL:=FALSE;
temp:REAL;
df:DECODE_FLOAT;
param_ptr:POINTER TO parameter_descriptor;
error:BYTE:=0; (*код ошибки*)
pnode_: DWORD;
flag: BOOL:= FALSE;
flag1: BOOL:= FALSE;
flag2: BOOL:= FALSE;
dm:disp_modes;
ft: F_TRIG;
END_VAR
VAR CONSTANT
key:BYTE:=136; (*код сочетания альт+стрелка вверх*)
END_VAR

IF NOT starting THEN (*то, что выполняется один раз при запуске программы*)
SetWorkScreenCount(1);
ClearScreen(0);
ShowString(0, 0, 0, 'Темп.:'); (*выводим надпись *)
ShowString(0, 0, 1, 'Уставка:'); (*выводим надпись *)
param_ptr:=READ_BY_HASH(16#37B7,0); (*чтение дескриптора параметра*)
pnode_:=param_ptr^.pnode; (*ссылка на элемент меню в pnode_*)
ver:='1.0'; (*внесем информацию о версии ПО*)
starting:=TRUE; (*установим флаг чтобы больше не входить в этот цикл*)
END_IF;
Совершенно непонятна подчеркнутая строка: Откуда берется значение 16#37B7?
И, самое главное, как связать переменную, которую требуется изменить и этот HASH?

Александр Приходько
16.05.2012, 12:06
Здравствуйте.
К сожалению есть ляпы в описании данных библиотек. Тип Param_NODE не описан.
Сам тип присутствует в библиотеке ARM7_specific и имеет следующее описание:



TYPE PARAM_NODE : (*Ни в коем случае не изменять что-либо в этой структуре!*)
STRUCT
offset_conf:POINTER TO BYTE; (*//Адрес начала описателя модуля/канала в конфигурации от начала конфигурации*)
offset_eeprom:WORD;
num_of_subnodes:BYTE;
subnode:POINTER TO POINTER TO DWORD ; (* //указатель на массив подветок меню*)
END_STRUCT
END_TYPE


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

Теперь по шагам.
1) Для того, чтобы попасть в режим SWITCH_TO_EDITOR необходимо
а) Перейти в монопольный режим Switch_To_Single_Mode
б) Выждать 1 секунду
в) Вызвать функцию SWITCH_TO_EDITOR для перехода в режим редактирования.
г) Отредактировать параметр.
д) Перевести дисплей в нужный режим.

2) В функцию SWITCH_TO_EDITOR необходимо передать указатель на структуру, описывающую переменную. Для этого необходимо
а) Залезть в конфигурацию ПЛК
б) Найти интересующий вас параметр
г) Если он из разряда стандартных, то необходимо найти место где разрешается/запрещается работа по сети с данным параметром, далее найти поле HASH и скопировать от туда значение. Если переменная из SubMenu, то ей нужно поставить галочку редактировать по сети по протоколу ОВЕН, в поле Имя ввести название которое вам нравится и из поля HASH скопировать сформированное значение.
д) Далее необходимо получить в программе структкру, которая описывает данную переменную. Получить ее можно функцией READ_BY_HASH, что и делается в примере:
param_ptr:=READ_BY_HASH(16#37B7,0);
е) Теперь из этой структуры нужно выдернуть подструктуру pnode и передать ее в функцию SWITCH_TO_EDITOR

На диске с ПЛК есть раздел примеры и полехности. Там есть пример для ПЛК63. Данный пример я переделал для работы с ПЛК73-М.
На всякий случай сделал свой пример, который переводит ПЛК в режим редактирования значения на первом выходе ПЛК по кнопке F1.

Во вложении скриншет, где посмотреть Hash.

Солнечный заяц
16.05.2012, 15:48
Большое спасибо! Теперь понятно.

Slazonger
16.05.2012, 16:54
Извиняюсь, но я решительно не понимаю, зачем нужна эта возня с переключением режимов, когда, указав в конфигурации контроллера в пункте SubMenu какой-либо параметр по имени, и присвоив ему значения по-умолчанию прямо там же, можно пользоваться этим значением в программе, обращаясь к нему по имени. Зачем нужны эти READ_BY_HASH и иже с ними? Или я что-то не прочитал? Проясните ситуацию?

Николаев Андрей
16.05.2012, 18:47
ПЛК обладает несколькими режимами индикации.
Например в случае аварии Вы можете вывести любое сообщение, независимо от того в каком Submenu Вы находитесь...

Александр Приходько
16.05.2012, 23:33
Извиняюсь, но я решительно не понимаю, зачем нужна эта возня с переключением режимов, когда, указав в конфигурации контроллера в пункте SubMenu какой-либо параметр по имени, и присвоив ему значения по-умолчанию прямо там же, можно пользоваться этим значением в программе, обращаясь к нему по имени. Зачем нужны эти READ_BY_HASH и иже с ними? Или я что-то не прочитал? Проясните ситуацию?

Не ко всем параметрам можно обращаться по переменной, некоторые можно менять исключительно через хэш. При этом можно разрешать/запрещать редактирование параметра или разрешить/запретить его отображение в меню.

Slazonger
17.05.2012, 06:32
А где узнать список этих параметров и их 16-ричный эквивалент. Где прочитать подробно про хэш? Про относительную адресацию этих параметров в кодесис и описание библиотек для работы с ними?

Солнечный заяц
17.05.2012, 08:08
Извиняюсь, но я решительно не понимаю, зачем нужна эта возня с переключением режимов, когда, указав в конфигурации контроллера в пункте SubMenu какой-либо параметр по имени, и присвоив ему значения по-умолчанию прямо там же, можно пользоваться этим значением в программе, обращаясь к нему по имени. Зачем нужны эти READ_BY_HASH и иже с ними? Или я что-то не прочитал? Проясните ситуацию?
Мне совершенно не подходит "Рабочий режим" с его переключением экранов через "Вверх" "Вниз" и возможностью изменения конфигурации входов-выходов. А единственным способом ввода пользовательских значений из "монопольного режима", на сколько я понимаю, является SWITCH_TO_EDITOR.

Александр Приходько
17.05.2012, 10:12
Мне совершенно не подходит "Рабочий режим" с его переключением экранов через "Вверх" "Вниз" и возможностью изменения конфигурации входов-выходов. А единственным способом ввода пользовательских значений из "монопольного режима", на сколько я понимаю, является SWITCH_TO_EDITOR.

Все верно!

Александр Приходько
17.05.2012, 10:14
А где узнать список этих параметров и их 16-ричный эквивалент. Где прочитать подробно про хэш? Про относительную адресацию этих параметров в кодесис и описание библиотек для работы с ними?

Читайте выше, там даже скриншет есть.
Отдельным списком у нас это ни где не размещено, но сложностей, в том чтобы открыть конфигурацию и посмотреть возникать не должно.

Slazonger
17.05.2012, 10:52
Все теперь понятно, спасибо

AndrwBJ
26.09.2013, 12:57
A можно через SWITCH_TO_EDITOR или другим способом добраться до редактирования ветки submenu целиком, а не одного параметра из нее? Именно из монопольного режима.
А что такое MENU_MODE и как в нее попасть?
Ну и в догонку в конфигурации ПЛК73 отключаю флаг "Показывать в меню" на ветке configuration - все равно показыват при выходе в конфигурационный режим... (

Turonk
07.02.2017, 16:21
Добрый день, не могу скачать вложение с примерами из поста Александра Приходько. Если не трудно, прошу выложить их еще раз. Заранее спасибо.

Saem
14.07.2017, 23:46
Здравствуйте, так-же с этим столкнулся, видимо очень трудно.

Saem
26.07.2017, 10:34
Здравствуйте, возможно-ли перезалить вложения, ссылки не работают. спасибо.

Saem
26.07.2017, 10:37
Так, не открывается-ж ничего........(((

Saem
26.07.2017, 10:38
Читайте выше, там даже скриншет есть.
Отдельным списком у нас это ни где не размещено, но сложностей, в том чтобы открыть конфигурацию и посмотреть возникать не должно.
Так, не открывается-ж ничего........(((