O společnostiProduktyObchodPodpora
Moravské přístroje
Hlavní stránka
O společnosti
Stažení software
Stažení dokumentů
Produkty
Control Web
Strojové vidění VisionLab
Kamery DataCam a osvětlovače DataLight
Průmyslový počítačový systém DataLab
Vědecké kamery
Speciální technika
Ceník
Aktivace produktů
Služby
Školení
Zakázková řešení
Podpora
Volba kamery a objektivu pro Strojové vidění
Control Web - Ukázkové aplikace

Hlavní stránkaProduktyProgramový systém Control WebPředchozí verze systému Control Web

Control Web 5 Service Pack 1
Service Pack 1 pro Control Web 5 nejen opravuje problémy nalezené v systému Control Web 5, ale přidává řadu významných rozšíření a vylepšení. Service Pack 1 lze stáhnout ze sekce Stažení software nebo můžete objednat CD-ROM se Service Pack 1 za režijní cenu.

Opravy chyb

  • Přístroj httpd mohl za běhu spotřebovávat systémové zdroje (handle objektů typu Event) a vyžadovat tak po určité době restart serveru.

  • V přístrojích alarm_viewer a data_viewer odstraněn pád po stisknutí tlačítka Zrušit v dialogovém okně pro zadání rozsahu tisku.

  • V přístroji alarm_viewer odstraněn pád při zapínaní/vypínaní stromu datových elementů, v situaci kdy nebyl viditelný řádek nástrojů.

  • V přístroji data_viewer odstraněn pád při tisku z historického režimu v módu table.

  • V přístroji data_viewer odstraněn pád při přepínání z módu table do módu chart (pokud je po startu aplikace přístroj v módu table).

  • Přístroj draw v runtime verzi neumožnil změnu kurzoru myši a výběr objektů.

  • Odstraněn problém inspektora objektu přístroje draw — přidané barvě přechodu se nedal ihned nastavit seznam alternativních barev.

  • V IDE odstraněna chyba, kdy při přetažení přístroje z palety přístrojů nebo ze stromu přístrojů do stromu přístrojů Control Web hlásil chybu a nedovolil přístroj vložit.

  • V IDE odstraněna chyba, kdy vložení přístroje do přístroje selector (přímo do něj, nikoli do jeho větví) způsobilo pád systému.

  • Odstraněna chyba, která při instalaci ovladače s pirátskou licencí způsobila pád systému.

  • Odstraněny chyby překladu po chybě v přístroji; chyby se projevovaly různým způsobem (nadbytečná a matoucí chybová hlášení, pád, ...).

  • Odstraněno několik chyb souvisejících se systémovou zálohou. Chyby se projevovaly jednak pády při vytváření záloh, jednak chybným obnovováním hodnot a jednak nesouvislým zálohováním.

  • Odstraněna chyba časování, která mohla způsobit u absolutně časových přístrojů aktivace zcela mimo pořadí a která mohla po delším běhu takto dotčené aplikace způsobit vznik trvalého skluzu.

  • Opravena chyba datově řízených aplikací, kdy změna hodnoty výrazových elementů nezpůsobovala aktivaci závislých přístrojů.

  • Opravena chyba přístrojů pid_regulator, boolean_regulator a step_regulator, kdy při určitém nastavení jejich parametrů mohlo dojít při přechodu do grafického editoru k pádu systému.

  • Opraveno několik chyb vzdáleného přístupu; chyby se projevovaly jednak při přenosu řetezcových datových elementů a polí, jednak při opakovaném navazování spojení (kdy se Control Web buď nepřipojil, nebo se připojil po době delší, než očekávané) a jednak při přenosu databázových dat (zde se při ukončení či rozpojení spojení mohl objevit pád).

  • Opravena chyba synchronizace sekcí se scope = synchronized_shared_remotely, která v určitých konfiguracích způsobila, že se synchronizované servery navzájem nenašly.

  • Přístroj multi_switch se v módu menu občas nedostatečně překresloval.

  • Přístroj multi_label se po přechodu s notace, kdy pozice obsahovala informace jen o poloze levého horního rohu, nastavil na nepříliš vhodnou velikost. Správnou velikost bylo poté nutno nastavit ručně. Nyní je velikost automaticky nastavena na největší rozměr textu nebo podle největší použité ikony.

  • Přístroj switch svým vzhledem neukazoval, kdy je selektován. Nyní je správně kreslen navíc selektovací rámeček.

  • U dialogového okna pro změnu hesla se již zobrazují správné popisky u editačních řádků (a nikoliv chybně třikrát "Staré heslo").

  • Relativně zadané pozice světelných zdrojů ve 3D scéně (přístroj gl_scene) nereagovaly na změny velikosti souřadného systému scény.

Úpravy chování

  • V nativní proceduře OpenRecordset přístroje sql byl zrušen parametr Async, který povoloval asynchronní vykonání SQL příkazu, příkazy tato procedura vykonává synchronně. Přístroj má novou nativní proceduru OpenRecordsetAsync, která vykoná SQL příkaz asynchronně.

  • Příkaz pause procedur byl pro čekání kratší než 15 milisekund významně zpřesněn, takže tento příkaz lze nyní použít s plným rozlišením.

  • Atribut timer datových sekcí a elementů lze nyní definovat pouze pro datové sekce.

  • HTTP server httpd vrací prohlížeči stránku (pokud existuje) i po požadavku POST, nikoliv pouze po GET.

  • Přístroj httpd pracoval s IP adresou v tzv. síťovém tvaru („big-endian“). Nyní je IP adresa vždy převedena do tvaru používaného na lokálním počítači („little-endian“ v případě PC s procesory x86).

  • Pokud datové sekce ukládají data do databází s využitím Microsoft JET Engine (Access/MDB/MDW), je standardně po startu aplikace provedena komprimace databáze. Toto chování lze ovlivnit nastavením parametru compact_mdb_on_start v sekci settings nebo v záložce Datové inspektory/Nastavení aplikace/Databáze, parametr Komprimovat MDB databázi před startem aplikace.

Rozšíření

  • do datových sekcí přibyly nové událostní procedury OnStartup, OnTerminate a OnActivate.

  • Přístroj sql byl rozšířeno o několik nových OCL procedur:

    • ExecCommandAsync Asynchronně vykoná předdefinovaný SQL CommandId.

    • ExecuteAsync Asynchronně vykoná SQL příkaz.

    • GetData Nové varinaty procedury umožňují číst hodnoty přímo do pole řetězců.

    • GetDataType a GetDataTypeName Umožňují zjistit název datového typu sloupce.

    • SetData nové varianty procedury umožňují zapisovat hodnoty z pole řetězců.

  • Přístroj active_x je schopen volat i metody Active X komponent, které jako parametry vyžadují předání obecné (netypové) struktury VARIANT. Díky tomu je možné použít např. komponentu WWW prohlížeče Internet Explorer a pomocí metody Navigate2 jí zadávat požadovanou URL apod.

    Poznámka:

    Tato vlastnost již byla součástí systému Control Web 2000, v systému Control Web 5 se objevuje až od SP1.

  • Legenda přístroje data_viewer byla doplněna o tlačítka pro zapínání a vypínání viditelnosti jednotlivých průběhů za běhu aplikace a o posouvací lišty.

  • Do přístroje data_viewer byla přidána možnost uživatelského pojmenování sloupců datových elementů v módu tabulky. Jako jméno sloupce je použit obsah parametru description v definici skupiny datových elementů data_group. Není-li zadán, je použit parametr comment v definici datového elementu v sekci. Není-li zadán ani ten, je v záhlaví sloupce uvedeno jméno datového elementu.

  • Do přístrojů alarm_viewer a data_viewer byla doplněny parametry date_mask a time_mask pro masku datových a časových informací ( v popisu časové osy, v informačním okně časového kurzoru, datum a čas alarmů).

  • V přístroji alarm_viewer byl doplněn atribut history parametru content umožňující zapnutí historického módu při startu aplikace.

  • Přístroje data_viewer a gl_data_viewer bylz rozšířeny o několik nových OCL procedur:

    • GetXAxisStart() : real — metoda vrátí Juliánské datum počátku časové osy.

    • GetXAxisEnd() : real — metoda vrátí Juliánské datum konce časové osy.

    • GetXAxisRange( var JDStart, JDEnd : real ) — v proměnných JDStart a JDEnd vrátí Juliánské datum počátku a konce časové osy.

    • GetFirstJD( var JulianDate : real ) : boolean — v proměnné JulianDate vrátí Juliánské datum odpovídající prvnímu platnému záznamu v aktuálním rozsahu časové osy, případně v prvním řádku tabulky (v módu viewer_mode = table přístroje data_viewer). Funkce vrátí true pokud pronměnná JulianDate obsahuje platné datum (v tabulce nebo v grafu je zobrazen alespoň jeden platný záznam).

    • GetLastJD( var JulianDate : real ) : boolean — v proměnné JulianDate vrátí Juliánské datum odpovídající poslednímu platnému záznamu v aktuálním rozsahu časové osy, případně v posledním řádku tabulky (v módu viewer_mode = table přístroje data_viewer). Funkce vrátí true pokud pronměnná JulianDate obsahuje platné datum (v tabulce nebo v grafu je zobrazen alespoň jeden platný záznam).

  • Přibyly nové systémové nativní procedury system.ExecuteProgram a files.GetTemporaryFilePath. Podrobný popis je v dokumentaci k produktu.

Rozšíření přístroje httpd

Virtuální přístroj httpd byl velmi významně rozšířen. Přibyla řada nových parametrů i OCL procedur, které umožňují nasazení systému Control Web v roli podnikových WWW serverů. Všechny změny jsou detailně popsány v dokumentaci k přístroje httpd, zde uveďme jen přehled novinek.

  • Bylo změněno chování přístroje v případě obdržení HTTP požadavku POST. I po POST lze vracet data klientovi obdobně jako po požadavku GET s daty v URL (podrobně je chování po POST popsáno v dokumentaci přístroje).

  • Implementace protokolu HTTP byla rozšířena o možnost zasílat serveru soubory prostřednictvím požadavku POST dle RFC 1867 (Form-based File Upload in HTML).

  • Přístroj httpd nyní kompletně spolupracuje s lokální vyrovnávací pamětí klientů a prostřednictvím hlaviček Last-Modified and If-Modified-Since redukuje síťový provoz (vrací odpověď 304 Not Modified, pokud má klient aktuální data).

  • Byla zpřísněna syntaktická kontrola při překladu přístroje. Pokud byly v přístroji zadány stejné identifikátory vyhledávané v HTML stránce, jejich náhrada způsobí nesprávnou funkci. Nově jsou detekovány i výskyty podřetězců a není nadále možno zadat dva různé řetězce, z nichž ale jeden je podřetězec druhého.

  • Nové parametry přístroje:

    • Parametr ip_address umožňuje práci více serverů na počítači s více IP adresami.

  • Nové nativní procedury:

    • PutFile umožní vložit do generovaného textu obsah souboru.

    • RedirectToFile umožní přerušit dynamické generování dokumentu a odeslání souboru (např. obrázku) jako dokumentu.

    • SetStatusCode umožní měnit stavový kód odpovědi HTTP. Umožní tak realizovat např. přesměrování apod.

    • SetContentType umožní přímo měnit typ vracených dat.

    • SetLastModified umožňuje nastavovat datum u dynamicky tvořených dokumentů.

    • GetURLData zpřístupňuje původní řetězec dat předaný z formuláře prostřednictvím požadavku GET.

    • DateToString a StringToDate převádí datum a čas do a z textové podoby užívané v HTTP protokolu.

    • IPAddressToString a StringToIPAddress převádí číselnou podobu IP adresy (typu longcard) na textovou podobu (čtveřici čísel oddělených tečkami).

    • DecodeURL mění řetězec zakódovaný do podoby přenášené v URL požadavku do nezakódované podoby.

    • StripTags odstraní z řetězce HTML značky.

  • Nové událostní procedury

    • OnFormData je vyvolána vždy když přístroj obdrží data z formuláře metodami POST i GET.

    • OnPostFile je vyvolána pokud klient odešle z formuláře soubor serveru (viz. RFC 1867).

Rozšíření 3D vykreslovacího systému

Ve 3D vykreslovacím systému byly některé existující mechanismy optimalizovány pro dosažení vyššího výkonu a některé nové vlastnosti byly přidány.

  • Optimalizace načítání modelů ve formátu *.OBJ - sobory s 3D modely v tomto textovém formátu jsou často docela veliké. Navíc je nutno je načítat dvouprůchodově. V tomto servisním balíčku bylo pomocí hluboké optimalizace pamětově mapovaných proudů dat dosaženo téměř desetinásobného zrychlení načítání těchto modelů. Nyní již v řadě případů zabere více času inicializační preprocessing dat než samotné načítání datových souborů. A toto předzpracování dat již asi znatelně urychlit nelze. U vizualizací s OBJ modely nyní zaznamenáme výrazně rychlejší start aplikačního programu.

  • Načítání 3D modelů ve formátu *.3DS - systém byl rozšířen o načítání modelů ve velmi populárním a rozšířeném formátu 3DS. Ze souborů jsou získávána vektorová data a materiály povrchů, ostatní informace o scéně (jako jsou např. vlastnosti světel a kamer) se neuplatňují - jsou dodány scénou, do které je takto dovezený model zařazen. Načítání je rovněž optimalizováno na vysokou rychlost. 3DStudio má jinou orientaci os prostoru než je tomu u nás. Prostor modelu je patřičnými transformacemi při načítání automaticky konvertován do našeho souřadnéhu systému.

  • Bitmapové soubory *.CEL a *.PIC jako textury - možnosti načítání obrazových souborů jako textur jsou rozšířeny o tyto dva nové formáty.

  • Možnost volby metody přenosu vektorových dat z CPU do GPU - pomocí nového parametru geometry_transfer_method můžeme definovat způsob přenosu geometrických dat do grafického procesoru.

    Tento parametr může nabývat jedné ze čtyř možností:

    • automatic - implicitní nastavení. Podle schopností grafické karty je automaticky vybráno z obvykle nejvýkonějších mezi client_arrays a server_arrays.

    • immediate - paměťově nejúspornější a obvykle nejpomalejší metoda (geometrie se přenáší po jednotlivývh vertexech pomocí volání funkcí API). Nicméně proti tomuto pravidlu existuje řada výjimek - v případě rychlého CPU a relativně pomalé grafické karty (platí pro veškerou grafiku na sdílené sběrnici a karty s 64 bitovou sběrnicí), může být výkon dokonce lepší než u ostatních metod (při přetrvávající výhodě menší spotřeby paměti).

    • client_arrays - geometrické data se do grafického ovladače přenáší po blocích, které jsou umístěny v pamětovém prostoru aplikace. Výraznější zrychlení přináší především u rychlých grafických karet.

    • server_arrays - u moderních karet, které mají schopnost pracovat s bloky vektorových dat umístěnými přímo v rychlé paměti na grafické kartě (VBO - Vertex Buffer Objects), přináší tato metoda dramatické (cca tří až pětinásobné) zrychlení vykreslování. To může být pro některé aplikace zásadním přínosem.

      Poznámka:

      Některé méně výkonné karty mohou mít schopnost pracovat s těmito serverovými objekty (např. NVIDIA MX440), ale výsledkem může být dokonce pomalejší vykreslování než v módu immediate. Aplikaci je proto dobré vyzkoušet na cílovém počítači a rozhodnout se podle skutečných výsledků. Při sdílené grafické paměti obvykle nelze používání těchto optimalizovaných metod nic získat, podmínkou úspěchu je zde jednoznačně vyhrazená rychlá videopaměť přímo na široké sběrnici grafického procesoru (výborné výsledky dosahují právě nejnovější karty ATI Radeon a NVIDIA GeForce).

  • Nový příznak flares_disabled ve vlastnostech světelného zdroje - tento parametr umožňuje zakázat čočkové efekty pro zvolený světelný zdroj.

    Dva zdroje světla ve scéně, oheň vytváří měkký prostorový stín, ale nikoliv čočkové efekty jako světlo v lampě

  • Nová nativní procedura 3D přístrojů SetLightAbsPosition( LightOrder, X, Y, Z, W : real ) - umožňuje nastavit pozici zdroje světla v absolutních souřadnicích prostoru scény (a nikoliv v relativních jednotkách, jejichž absolutní velikost je dána velikostí prostoru scény).

  • Nové nativní procedury 3D přístrojů - vrací data daná obsahem sekce location - na vracených datech se neuplatňují případné další transformace dané aktivitou evaluátorů nebo transformačních nativních procedur.

    • GetLocationTranslate( var X, Y, Z, : real ) - vrací posun vůči počátku souřadného systému scény

    • GetLocationRotate( var Angle, AxisX, AxisY, AxisZ : real ) - vrací natočení vůči orientaci souřadného systému scény

    • GetLocationScale( var X, Y, Z : real ) - vrací poměr meřítka prostoru virtuálního přístroje vůči měřítku souřadného systému scény

  • Pro 3D scénu (přístroj gl_scene) je možno definovat tzv. skybox - skybox je tvořen šesti texturami ve všech směrech uzavírajícími náš výhled do volného prostroru.

    Výhled do volného prostoru je definován texturami skyboxu

    Jednotlivé textury zadáváme podle jejich umístění v kladném či záporném směru jednotlivých os souřadného systémy scény. Sekce s definicí skyboxu může vypadat např. takto:

    skybox
      texture_filter = linear;
      negative_z = 'mountains_negz.jpg';
      positive_z = 'mountains_posz.jpg';
      negative_x = 'mountains_negx.jpg';
      positive_x = 'mountains_posx.jpg';
      negative_y = 'mountains_negy.jpg';
      positive_y = 'mountains_posy.jpg';
    end_skybox;
    

    Sekce skybox může obsahovat tuto parametry:

    • box_mapping - způsob kladení textur na horní a dolní stěny krychle. Na přední, zadní a obě boční stěny krychle jsou textury vždy mapovány tak, aby byly správně orientovány při pohledu zevnitř krychle skyboxu. Orientaci horní a dolni textury si můžeme zvolit ze tří možností

      • top_bottom_rotated_180 - horní a dolní textura jsou správně natočeny, podíváme-li se nahoru a dolů z pohledu v kladném směry osy Z (tedy jakoby směrem zevnitř ven z obrazovky). Tato konvence je asi používána nejčastěji (takto je orientován skybox např. ve většině ukázek od firmy nVidia).

      • top_bottom_rotated_0 - horní a dolní textura jsou správně natočeny, podíváme-li se nahoru a dolů z pohledu v záporném směry osy Z (směrem dozadu dovnitř do obrazovky).

      • top_bottom_rotated_plusminus_180 - horní a dolní textura jsou proti sobě otočeny o 180 stupňů.

      Poznámka:

      Máme-li textury orientovány ještě nějak jinak (a možností je zde skutečně hodně) pak nezbývá než si je správně natočit v nějakém bitmapovém editoru.

    • texture_filter - způsob filtrace textury můžeme volit ze dvou možností:

      • nearest - textura je vykreslena ostře a zobrazuje se až do okrajů

      • linear - textura je spojitě lineárně vyhlazena. Při této filtraci se na starších verzích OpenGL než 1.2 nemusí nezobrazovat úzké okraje (šířku definuje parametr filter_edge), které bývají lineární filtrací obvykle poškozeny. U novějších verzí OpenGL jsou textury zobrazovány správně až do okrajů.

    • filter_edge - ořez okrajů textur při použití lineární filtrace. Nastavovat tento parametr má smysl jen tehdy, máme-li starší verzi OpenGL než je verze 1.2. Od této verze již systém dokáže bezchybně lineálně filtrovat textury až k jejich okrajům a dotek dvou textur je pak zcela neviditelný. Implicitní hodnota je 0.0 - u starých verzí OpenGL může být prospěšné nastavit tuto tento parametr na hodnoty připližně 0.0015 pro textury velké 512 bodů. Pro větší textury může být nastaveno méně, pro menší bude občas nutno tento parametr i zvětšit.

      Poznámka:

      Na starší verzi OpenGL než je 1.2 dnes již narazíme jen velmi zřídka. Nejčastěji se vyskytuje u méně výkonných notebooků se sdílenou grafikou. Parametru filter_edge si v převážné většině případů vůbec nemusíme všímat - je zde jen proto, že autor systému neztrácí z mysli blaho uživatelů starších počítačů :-).

    • negative_z - textura pro pohled ve směru záporné osy Z.

    • positive_z - textura pro pohled ve směru kladné osy Z.

    • negative_x - textura pro pohled ve směru záporné osy X.

    • positive_x - textura pro pohled ve směru kladné osy X.

    • negative_y - textura pro pohled ve směru záporné osy Y.

    • positive_y - textura pro pohled ve směru kladné osy Y.

    Poznámka:

    Skybox definuje výhled do volného prostoru. Ať se s kamerou pohybujeme kamkoliv, stále jsme uprostřed pomyslné krychle skyboxu. Snaha podívat se co je za ním je bohužel marná :-)

 
 | O společnosti | Produkty | Podpora | Stažení software | Stažení dokumentů | 
Moravské přístroje, a.s., Masarykova 1148, Zlín-Malenovice, 76302