Eli
Forum Member / Участник форума
Участник № / Member № 6089
отправлено / posted
Здравствуйте, скажите есть ли возможность реакции на действие пользователя (ввести и передать значение), не по нажатию кнопки, а по окончанию ввода значения (хочу сделать реакцию на ввод нового значения) ?
Сообщения / Posts 44 | Из / From: РФ
| IP / IP: IP адрес / IP address |
отправлено / posted
Реакцию на вводимое оператором значение можно осуществить только после штатного завершения диалога ввода, когда значение уже будет введено в аргумент экрана. Анализировать введенное значение и организовывать последующие действия можно только программным путем.
Сообщения / Posts 17324 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Eli
Forum Member / Участник форума
Участник № / Member № 6089
отправлено / posted
Хорошо сделал небольшой вот скрипт, который крутится циклически (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 сервером и механизмом вызова программы это работает через раз. Если бы можно было предпринять реакцию на оконченный ввод нового значения это бы все легко отрабатывалось. Вообще вся эта чехарда, ради логирования действия оператора. Существующий механизм ТМ, видите ли не подходит заказчику, который выбрал сам в качестве скады ТМ. Если например для агрегатов с дискретным управлением всё это реализуется (через подобный скрипт). То с аналоговыми величинами вот такая вот беда, нужно что-то анализировать и тд.
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
лучше внешней программой обрабатывать файд контроля действий пользователя(cfr21),который имеет защиту от не санкционированного редактирования
<номер действия> <дата и время действия> <имя пользователя в проекте> <посланное значение> (<ID канала вызова экрана> –>[<ID канала, в который значение записано>] <имя канала>.<номер атрибута>) {<N1>}{<N2>}{<N3>}{<N4>}{<N5>}
Сообщения / Posts 875 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Eli
Forum Member / Участник форума
Участник № / Member № 6089
отправлено / posted
А чем их анализировать ? (с ТМ ранее вообще не работал). Нужно покупать лицензию ?
Сообщения / Posts 44 | Из / From: РФ
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
написать собственную внешнюю программу для конвертации одного текстового файла в другой а не писать такое в в шаблонах TM поскольку строки отличаются дополнительными статическими словами
Сообщения / Posts 875 | Из / From: Россия
| IP / IP: IP адрес / IP address |