EnglishУкраїнськаmRussian
Login/New
Topic with no new replies

Как правильно отобразить несколько графиков дискретных значений на одной группе?


Author Message
Written on: 13. 01. 2021 [01:23]
samsond
Dmitry Samsonov
Topic creator
registered since: 11.02.2020
Posts: 14
Хотел бы отобразить состояние нескольких кранов на одной группе графиков.
Если вывожу на график значение атрибута параметра типа base.digitBlockUnif, то кривая выглядит наглядно. Виджет сам распознает, что параметр дискретный и закрашивает область под кривой, когда атрибут равен true.
Однако если я хочу вывести несколько таких кривых, то они накладываются друг на друга, и видна только самая верхняя. Можно, конечно, назначить прозрачность в цвете отображения, но наглядности это несильно добавляет.
Логично было бы развести кривые по высоте просто, но я не могу найти, где это настроить.
Думал просто сдвинуть кривую, прибавив какое-то число, однако для дискретного параметра таких настроек не предусмотрено, в виджете тоже.

Пробовал другой вариант - выводить дискретный параметр через атрибут параметра типа base.anUnifSt.
В этом случае удалось сдвинуть и масштабировать кривые так, чтобы их было видно несколько, и они друг другу не мешали.
Однако при этом нет заливки под кривой, как у дискретного атрибута, а также виджет, похоже, применяет какое-то сглаживание, из-за чего фронты не вертикальные.
Мне же важно смотреть задержку изменения аналоговой величины на фоне переключения дискретной, для чего фронты желательны четкие.

Помогите, пожалуйста, настроить такое, если это возможно штатными средствами.

[This article was edited 1 times, at last 13.01.2021 at 01:25.]
Written on: 13. 01. 2021 [20:21]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"samsond" wrote:

Помогите, пожалуйста, настроить такое, если это возможно штатными средствами.

Шкалы для позиционирования дискретных, что тут где-то написано!

Learn, learn and learn better than work, work and work.
Written on: 16. 01. 2021 [21:49]
samsond
Dmitry Samsonov
Topic creator
registered since: 11.02.2020
Posts: 14
"roman" wrote:

"samsond" wrote:

Помогите, пожалуйста, настроить такое, если это возможно штатными средствами.

Шкалы для позиционирования дискретных, что тут где-то написано!


Роман, прошу прощения, но я не очень понял, что вы имеете в виду.
Если речь о том, что есть какой-то путь позиционировать кривые дискретных параметров, и это уже обсуждалось на форуме, то пролистав полностью разделы "Внедрение и разработка в OpenSCADA", "Разработка OpenSCADA", я не нашел упоминаний этого вопроса.

Также еще раз изучил разделы документации:
на аналоговый параметр - http://oscada.org/wiki/Special:MyLanguage/Libs/Main#anUnif
на дискретный параметр - http://oscada.org/wiki/Special:MyLanguage/Libs/Main#digitBlockUnif
на виджет "диаграмма" - http://oscada.org/wiki/Modules/Vision/ru#.D0.9F.D1.80.D0.B8.D0.BC.D0.B8.D1.82.D0.B8.D0.B2_.D0.BF.D0.BE.D1.81.D1.82.D1.80.D0.BE.D0.B5.D0.BD.D0.B8.D1.8F_.D0.B4.D0.B8.D0.B0.D0.B3.D1.80.D0.B0.D0.BC.D0.BC_.28Diagram.29
виджет "группа графиков" - http://oscada.org/wiki/Special:MyLanguage/Libs/Main_graphical_elements#grpGraph

про то, как виджет "группа графиков" обходится с дискретным параметром в этих разделах документации не описано.
единственное упоминание про манипуляцию положением кривой на диаграмме - атрибуты min и max, которые при связывании могут быть автоматически заданы только от аналогового параметра, т.к. у дискретного их просто нет.
также можно догадаться, о смещении кривой аналогового параметра с помощью атрибута "Дополнение ко входу" у аналогового параметра.

Далее, я заглянул в код обработчика виджета "группа графиков". Там единственное упоминание о назначении масштаба диаграмме вот в этих строчках:
JAVASCRIPT
trnd1_sclVer = (cntrLog > cntrAct/2) ? trnd1_sclVer|0x4 : trnd1_sclVer&(~0x4);
trnd1_sclHor = (xCntrLog > xCntrAct/2) ? trnd1_sclHor|0x4 : trnd1_sclHor&(~0x4);


как вообще виджет "диаграмма" различает, дискретный или аналоговый параметр ему назначено отображать, я не понял, поскольку:
1. атрибут varEl типа Real, т.е. дискретное значение приводится к Real в любом случае прямо на входе в виджет.
2. код виджета "диаграмма" не написан в рамках пользовательского API, разобраться в коде C++ я не смог.

В общем, изучив все что доступно пользователю, я по-прежнему не нашел ответа на свой вопрос, поэтому вновь прошу о помощи.
Written on: 16. 01. 2021 [22:06]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
В ДемоБД всё есть!

Learn, learn and learn better than work, work and work.



12903