Это старая версия документа.



Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/inc/parser/handler.php on line 1458

Warning: Declaration of syntax_plugin_tablecalc::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/tablecalc/syntax.php on line 41

Warning: Declaration of syntax_plugin_tablecalc::render($mode, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/tablecalc/syntax.php on line 72

Warning: Declaration of syntax_plugin_offline::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/offline/syntax.php on line 60

Warning: Declaration of syntax_plugin_offline::render($format, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/offline/syntax.php on line 67

Warning: preg_match(): Compilation failed: invalid range in character class at offset 3416 in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/inc/parser/lexer.php on line 118
A PCRE internal error occured. This might be caused by a faulty plugin

====== Типы тегов ====== ===== Формат записи в mtr-файле ===== <code> %EXTERNAL=1E6C %EXTMAIN=01E3 %EXTREQ=0995 %EXTIRR=12F4 </code> Таблица вшешних тэгов имеет структуру: ^type^size^ |periodic |EXTMAIN| |requested |EXTREQ| |irregular |EXTIRR| ===== Irregular tags ===== Все теги в rpsvrtcp и его клиентах имеют свойства: TWorkRecTagProp = (tpNormal, tpIrregular); TWorkRecTagFlag = (tfNone, tfInUse, tfUpdated); Теги типа ''tpIrregular'' запрашиваются из конечного устройства (ПЛК) только тогда, когда этого требует клиент, подключенный к rpsvrtcp. Делается это так. Пусть клиентом будет приложение visscada. При использовании тега внутри приложения выполняется проверка на тип ''tpIrregular'' и, если да, то тегу устанавливается флаг ''tfInUse'': <code delphi> // D:\promauto-src\VisScada\Common\TagStorage.pas function GetTagValue(idx: integer): integer; begin result := 0; if not DataClient.Connected then exit; if (idx >= 0) and (idx < DataClient.client.TagCount) then begin if DataClient.client.Tags[idx].TagProp = tpIrregular then DataClient.client.Tags[idx].TagFlag := tfInUse; result := DataClient.client.Tags[idx].ValIn; end else result := -1; end; </code> После этого в самом ближайшем будущем этот флаг будет модулем, отвечающем за связь с rpsvrtcp, и передан серверу при помощи команды SETFLAG: <code delphi> // D:\promauto-src\Lib\delphi\rpTcpLib\TcpImportClient.pas // Передача флага для irregular тегов if (Tags[i].TagProp = tpIrregular) and (Tags[i].TagFlag <> tfNone) then begin s := IntToHex(i, 1) + ' ' + IntToHex(integer(Tags[i].TagFlag), 1); clnt.IOHandler.WriteLn( 'SETFLAG ' + s + ' ' + IntToHex(CRC16($FFFF, s), 1) ); if not GetAnswer('117 !', false, s, c) then raise Exception.Create(''); Tags[i].TagFlag := tfNone; end; </code> Комманда SETFLAG принимается сервером rpsvrtcp, после чего флаг соответсвующего тега становится ''tfInUse'': Запрос от клиента выполняется коммандами: SETFLAG

doc/rpsvrtcp/irregular.1378718198.txt.gz · Последние изменения: 2013/09/09 13:16 — denis
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0