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

Генератор сигналов


Author Message
Written on: 22. 03. 2019 [09:49]
arcsin
Аркадий Кисель
Contributor
Topic creator
registered since: 17.02.2017
Posts: 77
Разработан генератор периодических сигналов. Для каждого сигнала можно задать Амплитуду, смещение(Offset), период или частоту (что задано позднее), фазу (в секундах или градусах). Типы сигналов:
-EValue; констана EVal
-zero; константа 0, которую можно сместить Offset'ом. т.о. любое число.
-sin;
-square; меандр
-triangle; треугольник
-saw; пила
-isaw; убывающая пила
-rand; случайное число
//все вышестоящие имеют выход -Amplitude...+Amplitude
-PWM; шим, коэффициент заполнения в доп переменной Aux [-1...1].
если Aux > 0, то Output = [0...+Amplitude] иначе [0...-Amplitude];
-interpol0;
-interpol1 интерполяторы пользовательских данных. в Aux поместить данные: каждая строка это координаты пространства 0...1,-1...1. нулевой интерполятор просто держит значение до следующей точки, интерполятор первого вида строит прямую до следующей точки. (см рис)
выход реализован связью, что позволяет записывать куда-то значения. например таким образом реализована Амплитудная и частотная модуляция(см рис).

прикладываю библиотеку и проект с примерами. к проекту привязан обзор архивов для удобства. библиотека лежала в домашней папке, возможно надо будет перепривязать.
PS
1)sel string в имени элемента не ожидает число, и неверно реагирует. поэтому тип "zero" а не "0"(вроде EVal тоже не прокатило, поэтому EValue)
2)долго искал проблему в коде интерполяторов, пока не понял что нужно типы явно приводить.
JAVASCRIPT
t0 = points[points.length-1].parse(0," ").toReal();
x0 = points[points.length-1].parse(1," ").toReal();

без этого была лажа, и оба интерполятора работали одинаково.
3)для того чтобы архивы писались чаще секунды надо на вкладке Архивы-История->Значения->Период получения данных поставить соответствующее число милисекунд. в документации конечно же написано, но как обычно дошло не сразу.
4) хотел для удобства попривязывать графики в обзоре архивов но привязка сохранялась сама через раз, жестко привязать на этапе проектирования тоже не вышло.

[This article was edited 5 times, at last 22.03.2019 at 13:57.]
Attachment

interpol0and1.JPG (File type: image/jpeg, Size: 138.57 kilobytes) — 1433 downloads
general.jpg (File type: image/jpeg, Size: 848.21 kilobytes) — 1396 downloads
modulation.png (File type: image/png, Size: 658.55 kilobytes) — 1414 downloads
SignalGen.db (File type: application/octet-stream, Size: 84 kilobytes) — 1400 downloads
testSignalGenerator.tar.gz (File type: application/gzip, Size: 177.81 kilobytes) — 1438 downloads
Written on: 25. 03. 2019 [08:00]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"arcsin" wrote:

Разработан генератор периодических сигналов. Для каждого сигнала можно задать Амплитуду, смещение(Offset), период или частоту (что задано позднее), фазу (в секундах или градусах).

И опять не в тему, поскольку это проект в OpenSCADA, место публикации которых тут, если конечно не хотите чтобы оно тут затерялось, как и предыдущее!

"arcsin" wrote:

1)sel string в имени элемента не ожидает число, и неверно реагирует. поэтому тип "zero" а не "0"(вроде EVal тоже не прокатило, поэтому EValue)

Если строка то ему всё-равно что там и оно нормально реагирует на цифры!

"arcsin" wrote:

2)долго искал проблему в коде интерполяторов, пока не понял что нужно типы явно приводить.
JAVASCRIPT
t0 = points[points.length-1].parse(0," ").toReal();
x0 = points[points.length-1].parse(1," ").toReal();

без этого была лажа, и оба интерполятора работали одинаково.

Логично.

"arcsin" wrote:

4) хотел для удобства попривязывать графики в обзоре архивов но привязка сохранялась сама через раз, жестко привязать на этапе проектирования тоже не вышло.

Включен пользовательский выбор, который предусматривает и загрузку сохранённого выбора из таблицы сеанса.
Соответственно удалить эту таблицу сеанса или выключить пользовательский выбор, если оно не нужно!

Learn, learn and learn better than work, work and work.
Written on: 25. 03. 2019 [10:39]
arcsin
Аркадий Кисель
Contributor
Topic creator
registered since: 17.02.2017
Posts: 77
"roman" wrote:

И опять не в тему, поскольку это проект в OpenSCADA, место публикации которых тут, если конечно не хотите чтобы оно тут затерялось, как и предыдущее!

там люди разместили готовые проекты. а у это просто подключаемая библиотека (narodmon). не того уровня масштаб.
по поводу данного генератора, публиковал в разработке, так как думал что Вы включите в OscadaLibs, так полезную функцию для тестирования, отладки. В некоторых скадах (TraceMode) такую функцию видел.


"roman" wrote:

Если строка то ему всё-равно что там и оно нормально реагирует на цифры!

вероятно у меня были не обновленные библиотеки, после обновления эта проблема ушла. но какой-то странный баг на таких тестах:
JAVASCRIPT
0
0;1;2;3;4;5;6;7;8;10;11
EVal;sin;0;square;triangle;saw;isaw;rand;PWM;interpol0;interpol1

выбираю любой элемент кроме EVal(важно что он нулевой в списке) и 0. потом выбираю EVal. и часто(>50%) список сам перескакивает на "0". если Eval выбираю после "0", то перескоков нет.
JAVASCRIPT
0
0;1;2;3;4;5;6;7;8;10;11
squ;sin;1;square;triangle;saw;isaw;rand;PWM;interpol0;interpol1

на этом тесте выбираю любой элемент, кроме "sin"( важно что он первый в списке) и "1". потом выбираю "sin", и опять же в большинстве случаев выбор сам перескочет на "1"
Written on: 25. 03. 2019 [11:25]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"arcsin" wrote:

"roman" wrote:

И опять не в тему, поскольку это проект в OpenSCADA, место публикации которых тут, если конечно не хотите чтобы оно тут затерялось, как и предыдущее!

там люди разместили готовые проекты. а у это просто подключаемая библиотека (narodmon). не того уровня масштаб.
по поводу данного генератора, публиковал в разработке, так как думал что Вы включите в OscadaLibs, так полезную функцию для тестирования, отладки. В некоторых скадах (TraceMode) такую функцию видел.

Не знаю под каким соусом-категорией оно предполагалось к размещению в OscadaLibs да и смысла-необходимости в таком никогда не было, в общем-унифицированном во всяком случае: в моделях достаточно было своего специально для него предназначенного, для симуляции в отрыве от объекта есть встроенное.

"arcsin" wrote:

"roman" wrote:

Если строка то ему всё-равно что там и оно нормально реагирует на цифры!

вероятно у меня были не обновленные библиотеки, после обновления эта проблема ушла. но какой-то странный баг на таких тестах:

Второе воспроизвелось.

Оказалось это в QTCfg и из-за полного цикла обхода перечня с общей переменной имени и индекса, где на начале цикла там имя.

Исправлено!

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



7131