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

DAQ.Siemens & массивы - как?


Автор Сообщение
Сообщение создано: 14. 12. 2011 [07:49]
punk
Василий Петров
Создатель темы
Зарегистрирован(а) с: 09.05.2011
Сообщения: 57
Есть задачка - отобразить несколько десятков целых параметров. Насколько я понял, DAQ.Siemens с объектами работать на может. Из-за этого приходится делать так:
1. Внешним скриптом генерируется что-то типа
INSERT INTO "xxlib_xx_io" VALUES('PARM','val1','val1','',1,144,'DB|0','',10);
INSERT INTO "xxlib_xx_io" VALUES('PARM','val2','val2','',1,144,'DB|2','',11);
INSERT INTO "xxlib_xx_io" VALUES('PARM','val3','val3','',1,144,'DB|4','',12);

и.т.д, это дело скармливается sqlite3, и попадает в библиотеку шаблонов openscada
2. Этот шаблон используется в качестве шаблона параметра (по сути это все аналог тупого забивания ручками)
3. Там, где нужно прочитать параметр из JavaLikeCalk, вставляются строки (опять же, сгенерированные внешним скриптом)
ValArr[1]=Siemens.cntr.prm.val1;
ValArr[2]=Siemens.cntr.prm.val2;
ValArr[3]=Siemens.cntr.prm.val3;

после чего можно наконец-то что-то прочитать по индексу.
Собственно вопросы:
- есть ли функции для обращения к значению параметра, что-то типа
n=5;
parname="Siemens.cntr.prm.val"+n;
val=_getva_l("parname");

- можно ли сгенерировать список опроса для DAQ не из библиотеки, а динамически из JavaLikeCalk
- или, может быть, есть более прямое решение для такого рода задач
Сообщение создано: 14. 12. 2011 [08:03]
Vandrizm
Игорь М
Зарегистрирован(а) с: 31.07.2010
Сообщения: 55
"punk" wrote:

- есть ли функции для обращения к значению параметра, что-то типа
n=5;
parname="Siemens.cntr.prm.val"+n;
val=_getva_l("parname");



Чтение и запись значений атрибутов подсистемы "Сбор данных" функцией
Сообщение создано: 14. 12. 2011 [08:44]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"punk" wrote:

Есть задачка - отобразить несколько десятков целых параметров. Насколько я понял, DAQ.Siemens с объектами работать на может. Из-за этого приходится делать так:

Если строку воспринимать ка свёрнутое выражение объекта-массива то может.

"punk" wrote:

1. Внешним скриптом генерируется что-то типа
INSERT INTO "xxlib_xx_io" VALUES('PARM','val1','val1','',1,144,'DB|0','',10);
INSERT INTO "xxlib_xx_io" VALUES('PARM','val2','val2','',1,144,'DB|2','',11);
INSERT INTO "xxlib_xx_io" VALUES('PARM','val3','val3','',1,144,'DB|4','',12);

и.т.д, это дело скармливается sqlite3, и попадает в библиотеку шаблонов openscada
2. Этот шаблон используется в качестве шаблона параметра (по сути это все аналог тупого забивания ручками)
3. Там, где нужно прочитать параметр из JavaLikeCalk, вставляются строки (опять же, сгенерированные внешним скриптом)
ValArr[1]=Siemens.cntr.prm.val1;
ValArr[2]=Siemens.cntr.prm.val2;
ValArr[3]=Siemens.cntr.prm.val3;


Жуть всё это! Цепляйте строку на структуру в блоке данных Сименса, а затем из этой строки просто выбирайте элементы.

"punk" wrote:

- есть ли функции для обращения к значению параметра, что-то типа

Есть.
"punk" wrote:

- можно ли сгенерировать список опроса для DAQ не из библиотеки, а динамически из JavaLikeCalk

Можно, но не нужно. Почему - выше.
"punk" wrote:

- или, может быть, есть более прямое решение для такого рода задач

Есть

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



0546