УкраїнськаEnglishmRussian
Вхід/Новий
У темі немає нових постів

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


Автор Повідомлення
Повідомлення створено: 22. 03. 2019 [09:49]
arcsin
Аркадий Кисель
Contributor
Автор теми
Зареєстрован(а) с: 17.02.2017
Повідомлення: 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) хотел для удобства попривязывать графики в обзоре архивов но привязка сохранялась сама через раз, жестко привязать на этапе проектирования тоже не вышло.

[Повідомлення редагувалось 5 раз(ів), останній раз 22.03.2019 в 13:57.]
Вкладений файл

interpol0and1.JPG (Тип файлу: image/jpeg, Розмір: 138.57 кілобайтів) — 1415 завантажень
general.jpg (Тип файлу: image/jpeg, Розмір: 848.21 кілобайтів) — 1375 завантажень
modulation.png (Тип файлу: image/png, Розмір: 658.55 кілобайтів) — 1394 завантажень
SignalGen.db (Тип файлу: application/octet-stream, Розмір: 84 кілобайтів) — 1381 завантажень
testSignalGenerator.tar.gz (Тип файлу: application/gzip, Розмір: 177.81 кілобайтів) — 1416 завантажень
Повідомлення створено: 25. 03. 2019 [08:00]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 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.
Повідомлення створено: 25. 03. 2019 [10:39]
arcsin
Аркадий Кисель
Contributor
Автор теми
Зареєстрован(а) с: 17.02.2017
Повідомлення: 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"
Повідомлення створено: 25. 03. 2019 [11:25]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 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.



4033