This is topic Обработка действия оператора in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/001180.html

Posted by Eli (Участник № / Member № 6089) on :
 
Здравствуйте, скажите есть ли возможность реакции на действие пользователя (ввести и передать значение), не по нажатию кнопки, а по окончанию ввода значения (хочу сделать реакцию на ввод нового значения) ?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Реакцию на вводимое оператором значение можно осуществить только после штатного завершения диалога ввода, когда значение уже будет введено в аргумент экрана.
Анализировать введенное значение и организовывать последующие действия можно только программным путем.
 
Posted by Eli (Участник № / Member № 6089) on :
 
Хорошо сделал небольшой вот скрипт, который крутится циклически (1 CALC). Ловит изменения параметров датчика и записывает это в ОТ (через Call.String).
PROGRAM
VAR_OUTPUT message_1 : STRING; END_VAR
VAR_OUTPUT message_2 : STRING; END_VAR
VAR_OUTPUT message_3 : STRING; END_VAR
VAR_OUTPUT message_4 : STRING; END_VAR
VAR_OUTPUT message_5 : STRING; END_VAR
VAR_OUTPUT message_6 : STRING; END_VAR
VAR_OUTPUT message_number : REAL; END_VAR
VAR_INPUT user_name : STRING; END_VAR
VAR_INPUT HH_new : REAL; END_VAR
VAR_INPUT AH_new : REAL; END_VAR
VAR_INPUT WH_new : REAL; END_VAR
VAR_INPUT WL_new : REAL; END_VAR
VAR_INPUT AL_new : REAL; END_VAR
VAR_INPUT LL_new : REAL; END_VAR
VAR_INPUT HH_old : REAL; END_VAR
VAR_INPUT AH_old : REAL; END_VAR
VAR_INPUT WH_old : REAL; END_VAR
VAR_INPUT WL_old : REAL; END_VAR
VAR_INPUT AL_old : REAL; END_VAR
VAR_INPUT LL_old : REAL; END_VAR
VAR HH : REAL; END_VAR
VAR AH : REAL; END_VAR
VAR WH : REAL; END_VAR
VAR WL : REAL; END_VAR
VAR AL : REAL; END_VAR
VAR LL : REAL; END_VAR


if HH_new <> HH_old then
message_1:="Пользователь ("+user_name+") изменил ВГ("+HH_old+")-->("+HH_new+")"; //HH
message_number:=0.0;
elsif AH_new <> AH_old then
message_2:="Пользователь ("+user_name+") изменил АВ("+AH_old+")-->("+AH_new+")"; //AH
message_number:=1.0;
elsif WH_new <> WH_old then
message_3:="Пользователь ("+user_name+") изменил ПВ("+WH_old+")-->"+"("+WH_new+")"; //WH
message_number:=2.0;
elsif WL_new <> WL_old then
message_4:="Пользователь ("+user_name+") изменил ПН("+WL_old+")-->"+"("+WL_new+")"; //WL
message_number:=3.0;
elsif AL_new <> AL_old then
message_5:="Пользователь ("+user_name+") изменил АН("+AL_old+")-->"+"("+AL_new+")"; //AL
message_number:=4.0;
elsif LL_new <> LL_old then
message_6:="Пользователь ("+user_name+") изменил НГ("+LL_old+")-->"+"("+LL_new+")"; //LL
message_number:=5.0;
end_if;


END_PROGRAM
Выход message_number подключено к входу Call.String.R. Тексты соответственно к аргументам этого Call.String. User_name имя текущего пользователя.
Для этой цели я создал 12 каналов типа Float (HH_in (input float) и т.д., и HH_out (output float)и т.д.) - так как данные пойду через OPC сервер (переменная либо пишется либо записывается - чито???), а TM не подразумевает наличие переменных, которые и пишутся и записываются, адреса в OPC у них одни и те же (одна переменная разные направления чтения/записи) (((

К входам программы HH_new присоединен HH_out.Входное значение, HH_old присоединен HH_in.Реальное значение. Теоретически все должно работать (если скажем я привязываю HH_new и HH_old к аргументам экрана все замечательно работает. Но видимо из-за механизма обмена данными с каналами OPC сервером и механизмом вызова программы это работает через раз.
Если бы можно было предпринять реакцию на оконченный ввод нового значения это бы все легко отрабатывалось.
Вообще вся эта чехарда, ради логирования действия оператора. Существующий механизм ТМ, видите ли не подходит заказчику, который выбрал сам в качестве скады ТМ.
Если например для агрегатов с дискретным управлением всё это реализуется (через подобный скрипт). То с аналоговыми величинами вот такая вот беда, нужно что-то анализировать и тд.

И вот как мне с этим всем быть ?
 
Posted by Nico (Участник № / Member № 5342) on :
 
лучше внешней программой обрабатывать файд контроля действий пользователя(cfr21),который
имеет защиту от не санкционированного редактирования

<номер действия> <дата и время действия> <имя пользователя в проекте> <посланное значение> (<ID канала вызова экрана> –>[<ID канала, в который значение записано>] <имя канала>.<номер атрибута>) {<N1>}{<N2>}{<N3>}{<N4>}{<N5>}
 
Posted by Eli (Участник № / Member № 6089) on :
 
А чем их анализировать ? (с ТМ ранее вообще не работал). Нужно покупать лицензию ?
 
Posted by Nico (Участник № / Member № 5342) on :
 
написать собственную внешнюю программу для конвертации одного текстового файла в другой
а не писать такое в в шаблонах TM
поскольку строки отличаются дополнительными статическими словами
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2