Written on: 06. 11. 2016 [13:13]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"tka4ev_s" wrote:
Использовал данный код для опроса счетчика СЕ102М
Выходная программа протокола prt:
rez=tr.messIO(io.text());
rez1=rez;
Зачем тут "rez1" вообще?
"tka4ev_s" wrote:
while(true)
{
trez = tr.messIO("");
if( !trez.length ) break;
rez+=trez;
}
io.setAttr("Text",rez);
опрос идет, но стоит только отключить питание как происходит зависание
а если запустить исполнение то скада полностью зависает не запустив среду исполнения.
Не должно тут зависать в принципе и у меня нигде не зависает, разве только что-то всё время вещяет и возвращает какие-то данные. Или ждёт на самом запросе огромных таймаутов транспорта. Кроме того оно должно было прерваться по защитному таймауту!
"tka4ev_s" wrote:
...
Правильное ли это решение?
Не правильно, разбирайтесь, что у Вас по чтению ответа tr.messIO(""); всё время идёт, добавив отладочные сообщения.
Learn, learn and learn better than work, work and work.
|
Written on: 06. 11. 2016 [19:31]
|
tka4ev_s
Сергей Ткачев
registered since: 19.10.2014
Posts: 30
|
Спасибо !!! код приписал заново все заработало
|
Written on: 25. 05. 2017 [13:39]
|
Михаил_ьч
Михаил Королев
registered since: 08.09.2015
Posts: 6
|
Добрый день! Чтобы не плодить темы, спрошу здесь:
как получить статус транспорта?
Запущен. Установлено: 25-05-2017 13:15:18. Трафик входящий 0Б, исходящий 3.73КиБ.
Остановлен. Установлено: 25-05-2017 13:15:18.
Транспорт выходной, используется Модбасом RTU в режиме циклического опроса.
Конструкции типа
SYS.messInfo(0, SYS.Transport.Serial.out_MBRTU.getStatus()); или
SYS.messInfo(0, SYS.Transport.Serial.out_MBRTU.getAttr("status");
Возвращают всегда ноль.
Хелп и поиск перерыл весь, зашел в тупик.
Заранее благодарен за помощь!
|
Written on: 25. 05. 2017 [15:50]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"Михаил_ьч" wrote:
как получить статус транспорта?
...
Конструкции типа
SYS.messInfo(0, SYS.Transport.Serial.out_MBRTU.getStatus()); или
SYS.messInfo(0, SYS.Transport.Serial.out_MBRTU.getAttr("status");
Возвращают всегда ноль.
http://oscada.org/ru/forum/posts/raznoe/rabota_s_obektami
http://oscada.org/ru/forum/posts/raznoe/vopros_xmlzaros
Learn, learn and learn better than work, work and work.
|
Written on: 26. 05. 2017 [12:25]
|
Михаил_ьч
Михаил Королев
registered since: 08.09.2015
Posts: 6
|
Роман, спасибо за подсказку, но сделал по образцу:
//статус контроллера:
SYS.DAQ.ModBus.MSA.status()
//статус транспорта:
SYS.Transport.Serial.out_MBRTU.status()
На совершенно очевидную вещь убил кучу времени...
С запросом интерфейса управления (xmlCntrReq) ничего не получилось, потому что не понял, где брать правильные наименования атрибутов и тд. Возможно, в исходниках...
В примере, по-моему, путь пропущен, слегка с толку сбивает [url=]http://wiki.oscada.org/Doc/FLibSYS?v=9in#h378-7[/url] : //sub_DAQ/mod_ModBus/cntr_1/prm_1 — путь согласно структуре проекта
req = xmlNode("get").setAttr("path",);
За глупые (с Вашей точки зрения) вопросы извините, скада очень нравится своей логичностью, но не всегда хватает способностей эту логику понять.
|
Written on: 26. 05. 2017 [13:01]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"Михаил_ьч" wrote:
С запросом интерфейса управления (xmlCntrReq) ничего не получилось, потому что не понял, где брать правильные наименования атрибутов и тд. Возможно, в исходниках...
string cntrReq( XMLNodeObj req, string stat = "" ); — запрос интерфейса управления к системе посредством XML. Обычный запрос записывается в виде "<get path="/OPath/%2felem"/>". При указании станции stat осуществляется запрос к указанной внешней станции. Адреса, атрибут "path", можно узнать в конфигураторе OpenSCADA, а именно в строке статуса где этот адрес высвечивается при наведении курсора мыши на конфигурационное или информационное поле. Примеры распространённых запросов:
"Михаил_ьч" wrote:
В примере, по-моему, путь пропущен, слегка с толку сбивает [url=]http://wiki.oscada.org/Doc/FLibSYS?v=9in#h378-7[/url] : //sub_DAQ/mod_ModBus/cntr_1/prm_1 — путь согласно структуре проекта
req = xmlNode("get").setAttr("path",);
Не пропущен, это подсветка синтаксиса в Wiki кривая. Убрал.
Learn, learn and learn better than work, work and work.
|