PDA

Просмотр полной версии : Вопрос по отчету - запись переменной в отчет по команде



a_gricaj
19.01.2019, 13:25
Здравствуйте,
подскажите пж как решить такую проблему:
в отчет вставил Источник Данных с кучей переменных (способ формирования по изменению), и нужно чтобы одна из переменных(то есть строка при формированию по изменению) писалась в отчет, только тогда, когда нажата кнопка(команда)
Я так понимаю это можно решить скриптом, но может есть более простой способ
СПС

a_gricaj
22.01.2019, 16:50
Решил добавить картинку, возможно так будет понятней40837
подскажите пожалуйста как сделать одноразовую запись в отчет отгруженного веса по кнопке "ЗАПИСАТЬ"

SCADAMaster
22.01.2019, 16:59
Так а в чем вопрос? Ставите у этой переменной параметр "Основной", у остальных выключаете. А дальше через фильтр оставляете только там где значение этой переменной True.

a_gricaj
22.01.2019, 17:13
Так а в чем вопрос? Ставите у этой переменной параметр "Основной", у остальных выключаете. А дальше через фильтр оставляете только там где значение этой переменной True.

Вся матиматика в ПЛК : "Вес"= "Вес"- "ВесОтгрузка" при нажатии кнопки. То есть переменная "Вес" поменяется и запишется в отчете, но при этом переменная "ВесОтгрузка" не успевает записаться так как по кнопке "Отгрузка" из ПЛК в нее пишется ноль. Вернее она успевает записатся 0=>"новое значение"=>0, а так как параметр "Обработка" - Последнее значение то в отчет попадает ноль

А если у переменной "ВесОтгрузка" параметр "Основной" поставить в True то тогда в отчете вываливаются не нужные строки так как и "Вес" и "ВесОтгрузка" сменят свое значение

Хочу сделать так что бы при смене переменной "Вес" записалось и значение "ВесОтгрузка" но по кнопке ("Вес" - может поменяться и не по кнопке, тогда пишем ноль в ВесОтгрузка")

когда принудительно блокирую "ВесОтгрузка" тогда все пишется отлично

Как тут быть подскажите пж

SCADAMaster
22.01.2019, 17:56
Вернее она успевает записатся 0=>"новое значение"=>0, а так как параметр "Обработка" - Последнее значение то в отчет попадает ноль

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

a_gricaj
24.01.2019, 13:47
СПС за ответы, а подскажите пж как сделать что бы при загрузке скады если значение переменной не поменялось строка в отчете не писалась
вот то что происходит 40855

SCADAMaster
24.01.2019, 14:31
Попробуйте делать.
В переменную, которую будете использовать в отчете пишите из команды, используя действие - Присвоить (например все время присвайте 1 логической переменной).
У этой переменной (которая идет в отчет) включите периодическую архивацию с шагом в 0. Тогда флаг остановки скады в нее писаться не будет.

a_gricaj
24.01.2019, 15:00
Попробуйте делать.
В переменную, которую будете использовать в отчете пишите из команды, используя действие - Присвоить (например все время присвайте 1 логической переменной).
У этой переменной (которая идет в отчет) включите периодическую архивацию с шагом в 0. Тогда флаг остановки скады в нее писаться не будет.

А это не повлечет больших проблем - у меня переменных для архивирования около 400 и если я буду архивировать периодически с шагом 0 будут наверное большие архивы (архивные данные хотя бы пару месяцев должны хранится)?

SCADAMaster
24.01.2019, 15:24
Поскольку вы будете писать именно по сигналу, то записываться значения будут только в момент этого сигнала.
Кроме так можно делать только для одной переменной - которая у вас основная в источнике

a_gricaj
24.01.2019, 15:37
Запутался

Поскольку вы будете писать именно по сигналу, какой сигнал вы тут имеете ввиду???

SCADAMaster
24.01.2019, 16:01
У вас отчет со способом формирования по изменению? И у одной колонок стоит параметр "Основной", а у остальных - выключен. Вот про этот параметры мы и писали - у него сделать периодическую архивацию.

a_gricaj
24.01.2019, 23:17
Чтобы окончательно разобраться:
Допустим МастерСкада получает и пишет данные в теги:
- ДеньЗагрузки
- МесяцЗагрузки
- Материал
- Вес
- Протеин
- Жир
- ОтгруженныйВес

Теперь чтобы сделать отчет я должен:
1. Создать переменные для отчета
- ДеньЗагрузкиОТЧЕТ
- МесяцЗагрузкиОТЧЕТ
- МатериалОТЧЕТ
- ВесОТЧЕТ
- ПротеинОТЧЕТ
- ЖирОТЧЕТ
- ОтгруженныйВесОТЧЕТ
У всех этих переменных включаю периодическую архивацию с шагом в 0. Наполнение этих перемененных будет происходить с помощью элемента "Собитие"- используя действие - Присвоить
2. Делаю отчет со способом формирования по изменению.
Те теги (переменные) при изменении значения которых мне нужна запись в отчете (МатериалОТЧЕТ, ВесОТЧЕТ) - включаю параметр "Основной", а на остальных выключаю (ПротеинОТЧЕТ, ЖирОТЧЕТ,ОтгруженныйВесОТЧЕТ)

Я правильно понял?

SCADAMaster
25.01.2019, 09:03
Вообще предполагалось что отдельные переменные для отчета нужно будет сделать только для тех параметров при изменении которых нужна запись в отчете.
Но как вы описали - тоже можно.

a_gricaj
28.01.2019, 14:14
Подскажите, например элемент Команда "ДеньЗагрузкиОТЧЕТ" которая получает данные от События должна быть константой??
Если у этой команды поставить опрос(вместо константа), то не работает "СОБЫТИЕ"- нет значения "ДеньЗагрузкиОТЧЕТ" так как в событии прописал условие - ДеньЗагрузки <> ДеньЗагрузкиОТЧЕТ - только тогда Событие запишет данные в ДеньЗагрузкиОТЧЕТ

или нужно как-то по другому делать???

SCADAMaster
28.01.2019, 14:50
Пример в приложении

a_gricaj
28.01.2019, 16:26
Пример в приложении

Запутался вообще), это пример для записи переменной по "Нажатию кнопки"?

SCADAMaster
28.01.2019, 17:01
Да................

a_gricaj
28.01.2019, 19:56
Попробуйте делать.
В переменную, которую будете использовать в отчете пишите из команды, используя действие - Присвоить (например все время присвайте 1 логической переменной).
У этой переменной (которая идет в отчет) включите периодическую архивацию с шагом в 0. Тогда флаг остановки скады в нее писаться не будет.

Вроде понял, пример к этому посту, но тогда нужно передергивать "Присвоить" с 0>1>0>1>0..... чтобы постоянно писать в переменную, так как запись происходит при переходе с 0 в 1... и в этом ключе мне не понятно как можно все время присваивать 1 логической переменной???

SCADAMaster
29.01.2019, 11:48
Вроде понял, пример к этому посту, но тогда нужно передергивать "Присвоить" с 0>1>0>1>0..... чтобы постоянно писать в переменную, так как запись происходит при переходе с 0 в 1... и в этом ключе мне не понятно как можно все время присваивать 1 логической переменной???
Используйте событие для вместо команды для присваивания - у нее также есть вкладка "дейсвтие". Формулу события напишите сами - в каком случае нужно выполнять присваивание значения.

a_gricaj
08.02.2019, 21:20
СПС, подскажите еще пж,
если в источнике данных у меня есть переменная MaterialID - целое, которая может иметь три разных значения:0,1 или 2, при этом в столбике (в отчете) вместо 0 писалось '---', если 1 то писалось 'ШД', если 2 то писалось 'ШГ' - по сути просто замена числа на строку. Можно ли это сделать инструментарием отчета???

SCADAMaster
09.02.2019, 10:26
Можно сделать так.
Система - Шкалы - перечислимые. Делаете шкалу.
Назначаете шкалу переменной в дереве объектов. Затем в источнике данных у колонки включаете "Формировать значение" - будет производится форматирование согласно шкалы (замены чисел на ваш текст).