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

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


Author Message
Written on: 14. 12. 2011 [07:49]
punk
Василий Петров
Topic creator
registered since: 09.05.2011
Posts: 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
- или, может быть, есть более прямое решение для такого рода задач
Written on: 14. 12. 2011 [08:03]
Vandrizm
Игорь М
registered since: 31.07.2010
Posts: 55
"punk" wrote:

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



Чтение и запись значений атрибутов подсистемы "Сбор данных" функцией
Written on: 14. 12. 2011 [08:44]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3747
"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.



5683