Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Миханик

Страницы: 1 ... 3 4 [5] 6 7 ... 14
61
Ошибки / Re: Ошибка компилятора
« : 13 Мая 2019, 07:30:20 »
В текущей версии ошибка выявится в момент выполнения скрипта, в журнал сервера будет выведено сообщение об ошибке с указанием проблемной строки.
Только так её и обнаружил, а до этого сидел гадал почему не работает скрипт.

62
Ошибки / Ошибка компилятора
« : 07 Мая 2019, 11:19:32 »
Версия 2.3.4.7
Обнаружил такую ошибку:
Код: (delphi)
var
  vrStr : string;
  vrArray : array [1..5] of integer;
Begin
  vrStr := '2';
  vrArray[vrStr] := 10;
End.
то есть если обратится к массиву, а в качестве индекса будет строковая переменная, то компилятор не выдает ошибку.

63
Спасибо, разобрался.

64
Добрый день, уважаемые разработчики.
У меня есть предложение по улучшению объекта "Кнопка". А именно по ее действию при нажатии по ней.
Сейчас, если присвоить кнопке булевую переменную и выбрать тип "без фиксации", то при нажатии по кнопке, переменная примет значение True и в этом же значении останется после отпускания кнопки. А мне нужно чтобы при нажатии по кнопке (и ее удержании), переменная имела значение True, а при отпускании кнопки - значение False. Очень удобно в этом плане сделано в ПО EasyBuilder от Weintek - там можно назначить различные действия по нажатию кнопки (см. скрин), у них этот режим называется "Моментально".
Это конечно можно легко сделать на скриптах OnClick и OnMouseUp, но для единичных случаев это допустимо, а когда таких ситуаций много или когда приходится переназначать переменные у объекта, то удобнее иметь обозначенный функционал.

65
Спасибо за разъяснения, буду искать у себя.

66
Добрый день.
Расскажите по подробнее про общее свойство объектов "Доступен". Если это свойство имеет состояние FALSE, то могу ли я управлять видимостью этого объекта (да и другими свойствами) из скриптов? То есть, другими словами, свойство "Доступен" запрещает только обращение к объекту пользователя из клиента или из скриптов свойства тоже становится недоступными?
Просто после перехода на версию 2.3.4.7 те объекты, у которых свойство "Доступен" имело значение FALSE перестали быть доступными из скриптов, хотя раньше всё работало. Не знаю ошибка это или так и задумано.

67
int2246
Вот здесь Обсуждение MQTT уже обсуждалось.

68
Спасибо за помощь.

2. Также для каждого вложенного компонента на событие "Взять значение" присвоить следующий код:
Не могу найти где в отчете назначить событие на компонент?

69
Тогда действительно остается только увеличивать время отчета на один час.
Увеличить то интервал не проблема, но как потом скрыть первую строку в отчете? У меня никак не получается: я пробовал делать и фильтрацию, чтобы показывал данные начиная со второй записи, но тогда он не берет в расчеты эту строку. И пробовал ставить условие на вывод - не отображать данные, если это первая строка, но также тогда данные вылетают из расчета.

Код: (с#)
{Format("{0:N2}",IIF(Данные.gp201_TC_M2 == 0,Previous(Данные,"gp201_TC_M2"),Данные.gp201_TC_M2))}
Это конечно не исключает того, что в первый интервал выпадет 0 и предыдущее опять же не будет существовать. Но зато не нужно минусовать 1 час, при котором добавится лишняя строка в начале.
Немного не понял как это мне поможет? И почему если данные равны нулю, то я должен брать предыдущее значение?

70
Что представляет собой колонка gp201_TC_VHS? Значение в часах? Она аналогична колонке Время? Если да, то 20:00:00 - 17:00:00 = 3 часа. Просто не учитывается то, что первая строка это результат обработки ещё одного часа и чтобы формула работала корректно нужно просто прибавлять один час.
gp201_TC_VHS это время нормальной работы теплосчетчика в часах. Просто прибавлять 1 час нельзя, так как мы не знаем работало ли оборудование в этот час. Тоже самое и с полями Q, M1, M2, M3

Цитировать
Чтобы правильно организовать вывод итогов не нужно выводить в итог колонку из источника данных, ведь Вы увидите только последнюю стоку из колонки. Вместо этого расположите в бэнде итогов объект Текст и укажите в нём расчет итога, как показано на скрине во вложении. Для первого значения используйте "First", для минимального "MinD".
Здесь разобрался, спасибо.

Цитировать
Если это периодический источник, то первая строка должна содержать данные за период от 16:00 до 17:00, вместо пустого значения. Можете выслать текущую версию проекта с отчетами?
Выслал вам на почту. Скорее всего нужно сделать как предложил Nikso - формировать отчет за то время которое выбрал пользователь плюс добавлять один час впереди, если это почасовый отчет.

71
Оставшиеся вопросы:
1) Никак не могу победить пустое значение в первой строке (см. скрин).
2) Неправильно ведется подсчет в строке Итого (часов наработки должно быть 4, а не 3)
Выражение стоит такое: {(double)LastIf(Данные.gp201_TC_VHS) - (double)FirstIf(Данные.gp201_TC_VHS)}
3) В бэнде "Итог данных" неправильно берутся "Первые" и "Минимальные" значения из источника данных (из первого сообщения).

P.S. может это поможет указать мне на ошибку - данные архивируются раз в 10 минут

72
Nikso
огромное спасибо, получилось.

Вопрос только как быть с первым значением, которое получается пустым, ведь для первой строки не существует предыдущего значения?

Я пока сделал так:
Код
{PreviousIsNull(Данные,"gp201_TC_M2")
? Данные.gp201_TC_M2 - (double)First(Данные.gp201_TC_M2)
: Данные.gp201_TC_M2 - (double)Previous(Данные,"gp201_TC_M2")}

но все равно первая строка выводится пустая

73
Добрый день.
Подскажите несколько моментов по отчетам.
1) Почему-то неправильно берутся "Первые" и "Минимальные" значения из источника данных (видно на скрине) в периодическом отчете.
2) Если у меня в скаде архивируются интегральные значения переменной (например масса М1, М2, М3 по теплосети или тепло Q), то как сделать чтобы в периодическом отчете отображались не интегральные значения, а разница между соседними интегральными значениями? Такое вообще возможно методами отчета?
Например:
как есть     как нужно
59270,5813,55
59284,3313,75
59298,0013,67

74
Ошибки / Re: "Мелкие" ошибки
« : 13 Февраля 2019, 12:53:30 »
Выставьте переменной тип DateTime в редакторе скады. И выведите его в компонент Календарь с форматом времени "чч:мм:сс". Как в этом случае отображается время? 00:00:00?
Да, часы отображают 00:00:00

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

Вы уверены, что при создании переменной указали соответствующий OPC-сервер?
Переменная была добавлена с помощью импорта. Это как раз та, переменная, которая считалась с управляющим символом переноса строки.

Дополнение:
заново импортировал переменную и не стал удалять управляющий символ переноса строки - всё заработало. Значит не нужно добавлять автоматическое удаление управляющих символов при импорте переменных.

75
Ошибки / Re: "Мелкие" ошибки
« : 13 Февраля 2019, 12:11:33 »
Добрый день. Удалил управляющий символ в адресе и тег нормально читается.
Вопрос другой: читаю переменную типа DateTime из этого OPC-сервера и если поставить в скаде тип переменной как DateTime и вывести значение в Поле, то в поле отображается только дата (без времени) и горит восклицательный знак над полем. Если задаю тип переменной как String, то в поле вообще ничего не отображается и горит восклицательный знак над полем. Попробовал прочитать тег программой OPC Quick Client (из набора KEPware), там значение читается правильно (скрин).

Страницы: 1 ... 3 4 [5] 6 7 ... 14