48V Web-IO Digital 4.0
“
Produkt ynformaasje
Spesifikaasjes:
- Produkt Namme: Web-IO Digital 4.0
- Utjefte Ferzje: 1.71
- Release Date: 05/2024
Produkt Usage Ynstruksjes
Tagong fan jo eigen applikaasje
Neist de tal fan standert tagong mooglikheden, de
Web-IO biedt ek de opsje fan tagong ta it fan jo eigen
applikaasjes mei metoaden lykas ASCII, BINARY, REST,
JavaScript / AJAX. Programming examples yn ferskate talen kin wêze
fûn by de fabrikant website.
Modbus TCP - Standertisearre tagong
De Web-IO stipet MODBUS-TCP foar standerdisearre tagong. Details
op funksje koades en register adressen brûkt mei de Web-IO binne
foarsjoen foar dit kommunikaasjepaad.
TCP / IP Sockets - Kommandostrings
Jo kinne ienfâldige kommando-strings útwikselje om ynputen te lêzen,
tellers, en set útgongen mei de Web-IO wurket as in TCP-tsjinner
of UDP peer. Gegevens útwikseling tusken de applikaasje en Web-IO
bart mei ienfâldige kommando-strings.
HTTP-fersyk
HTTP-oanfragen kinne brûkt wurde om te ynteraksje mei de Web-IO foar taken
lykas steat feroarings, counter operaasjes, en clearing útgongen.
JavaScript en AJAX kinne brûkt wurde om ynhâld dynamysk te feroarjen
on web siden.
FAQ
F: Wêr kin ik programmearring eks fineamples foar Web-IO
Digitaal?
A: Programming bvamples yn ferskate talen is te finen op
http://wut.de in the Web-IO Digital section under the Tools link
en programmearring examples tab.
Q: Hoe kin ik tagong ta de Web-IO fan myn eigen applikaasje?
A: Jo kinne tagong krije ta de Web-IO fan jo eigen applikaasje mei help fan
metoaden lykas ASCII, BINARY, REST, JavaScript / AJAX. Soargje derfoar
ferwize nei de hânlieding en programmearring examples foar detaillearre
ynstruksjes.
"`
Referinsje hânboek
Programming en protokollen
Web-IO Digital 4.0 Web-IO Analog 4.0 Web- Thermometer Web- Thermo-Hygrometer Web- Thermo-Hygrobarometer
Utjefte 1.71 05/2024
© 04/2011 by Wiesemann und Theis GmbH
Microsoft, MS-DOS, Windows, Winsock en Visual Basic binne registrearre hannelsmerken fan Microsoft Corporation Under foarbehâld fan flater en feroaring: Om't it mooglik is dat wy flaters meitsje, meie jo gjin fan ús útspraken brûke sûnder ferifikaasje. Asjebleaft, ynformearje ús oer elke flater of misferstân dy't jo komme oer, sadat wy it sa gau mooglik identifisearje en eliminearje.
Fier jo wurk op of mei W&T-produkten allinich út foar safier't se hjir binne beskreaun en nei't jo de hantlieding of gids folslein hawwe lêzen en begrepen. Wy binne net oanspraaklik foar sûnder foech reparaasjes of tampering.
Inhalt
Ynhâld
Oerview ………………………………………………………………………………….6
Tagong fan jo eigen applikaasje……………………………………………………………………… 6 Modbus TCP – standerdisearre tagong……………………………………………… ………………… 6
TCP/IP-Sockets Kommando-strings………………………………..7
TCP-tsjinner………………………………………………………………………………………………………. 12 UDP Peer ………………………………………………………………………………………………… 12 Kommunikaasje tusken Web-IO en tapassing……………………………………………….. 13 De útgongen opfreegje ………………………………………………………………………………… ………………… 16 De útgongen wikselje………………………………………………………………………………………………….. 16 De tellers opfreegje … …………………………………………………………………………………………. 18 Tellers wiskje……………………………………………………………………………………………… 19 By hoc lêzen fan ynputs, útgongen en tellers ……… ………………………………………….. 20 Kommunikaasje tusken Web-IO-analooch en tapassing ………………………….. 20 Sykje nei de IO-kanalen ………………………………………………………………………………………… .. 20 Stel stroom / voltage wearde fan in útfier……………………………………………………………….. 22 Web-IO Klimaat, VOC en tapassing ………………………………………………………………. 22 Opsykje nei de IO-kanalen ……………………………………………………………………………………….. 22 Oanfreegje en datum en tiid ynstelle……………… ………………………………………………………….. 23 Datum en tiid opfreegje………………………………………………………………………… ……………………… 23 Datum en tiid ynstelle………………………………………………………………………………… 23 De flater lêze oantinken………………………………………………………………………………. 24
TCP/IP-sockets – Binary ………………………………………………….. 28
TCP-tsjinner………………………………………………………………………………………………………. 28 TCP-kliïnt ………………………………………………………………………………………………….. 29 UDP-peer ………… ………………………………………………………………………………………………… 29 BINARY De IO-struktueren ………………………………………… ………………………………….. 29 Definysje fan de struktueren……………………………………………………………………………………… 30 Wachtwurdbeskerme tagong ………………………………………………………………………….. 32 Unautorisearre tagongspoging………………………………………… …………………………………. 32 De struktuer Authrequired ………………………………………………………………………………………….. 32 Oanmeldeproseduere ………………………………… ………………………………………………………………………….. 32 De struktuer KeyRequest ………………………………………………………… ………………………. 33
3
Ynhâld
De struktuerkaai ………………………………………………………………………………………………… 33 De struktuer Oanmelde………………………… ………………………………………………………………………………… 34 De struktuer AuthOK ………………………………………………………………… ……………………………….. 34 De struktuer AuthFail………………………………………………………………………………………………… . 35 Digitale IO-tagong mei binêre struktueren ………………………………………………………….. 35 De struktuer ReadRegister………………………………………………………… ………………………………….. 35 De struktuer WriteRegister …………………………………………………………………………………………. 35 De struktuer SetBit ………………………………………………………………………………………………….. 36 De struktuer RegisterRequest ………………… ………………………………………………………….. 37 De struktuer RegisterState ………………………………………………………………………… …………. 37 De struktuer Send Mode ……………………………………………………………………………….. 38 De struktuer ReadCounter ……………………… ………………………………………………………….. 38 De struktuer ReadClearCounter ………………………………………………………………………… …….. 39 De struktuer Teller……………………………………………………………………………………………….. 39 De struktuer ReadAllCounter………… ………………………………………………………………. 40 De Struktuer ReadClearAllCounter…………………………………………………………………………. 40 De struktuer AllCounter………………………………………………………………………………………. 41 De struktuer ClearCounter ………………………………………………………………………………….. 41 De struktuer Opsjes ………………………………… …………………………………………………………. 42 IO-struktueren foar it lêzen fan de logger-ynhâld (#57756)……………………………….. 43 De struktuer LOGGER_REQUEST………………………………………………………………… ………………… 43 De struktuer LOGGER_ NOACCESS ………………………………………………………………….. 43 De struktuer LOGGER_CHECK ………………… ………………………………………………………. 44 De struktuer LOGGER_DATAREQUEST ………………………………………………………………….. 45 De struktuer LOGGER_DATASET ………………………………………………… ………………………… 45 Analoge I/O tagong mei binêre struktueren …………………………………………………………. 48 De struktuer ReadRegister………………………………………………………………………………………….. 48 De IO-struktuer AnalogRegisterState………………………… ………………………………………… 48 De struktuer AnalogSingleRegister………………………………………………………………… 49 De IO-struktuer Send Mode… …………………………………………………………………………………. 50 De IO-struktuer Opsjes…………………………………………………………………………………………………. 51 Apparaatstatus fia binêre struktueren………………………………………………………………………… 52 De struktuer ReadDiagnosis………………………………………………………… ………………………………….. 52 De struktuer Diagnoaze …………………………………………………………………………………………………. 52 De struktuer ClearDiagnosis …………………………………………………………………………………………. 53 Apparaatfunksjes fia binêre struktuer …………………………………………………………………. 54 De struktuer InventoryRequest ………………………………………………………………………………… 54
4
Ynhâld
HTTP-fersyk……………………………………………………………………… 56
Stipe oanfragen (kommando's)………………………………………………………………….. 56 In eksample foar gebrûk fan HTTP-oanfragen ………………………………………………………………. 61 HTML - struktuer fan in statyske web side……………………………………………………………………….. 61 JavaSkript en AJAX – Feroarje ynhâld dynamysk …………………………………………. 63 CORS – Cross Origin Resource Sharing…………………………………………………………. 66 W&T brûke Tags ………………………………………………………………………………………………… 68 HTTP-oanfragen bûten de browser ………………………………… …………………………. 70
REST - Representative State Transfer…………………………. 72
JSON ………………………………………………………………………………………………………………. 72 Lêstagong ………………………………………………………………………………………………………….. 72 Tagong feroarje………………… ………………………………………………………………………………………. 75 XML ………………………………………………………………………………………………………………. 77 Lêstagong ………………………………………………………………………………………………… 77 Tagong feroarje………………………… …………………………………………………………………………. 78 Tekst ………………………………………………………………………………………………………………. 79 Lêstagong ………………………………………………………………………………………………………… 79
Modbus TCP - standertisearre tagong………………………………. 80
Modbus TCP-kommunikaasje………………………………………………………………………………… 80 Funksjekoade 0x01 Read Coils ………………………………………… ………………………………. 83 Funksjekoade 0x02 Lês Diskrete Ynputen……………………………………………………….. 85 Funksjekoade 0x03 Lês Holding Registers ………………………………………… ………………… 85 Funksjekoade 0x04 Lês ynfierregisters……………………………………………………….. 87 Funksjekoade 0x05 Single Coil skriuwe……………… ………………………………………………. 88 Funksjekoade 0x06 Ien register skriuwe ………………………………………………………….. 89 Funksjekoade 0x0F Meardere spoelen skriuwe………………………………………… ………………………….. 90 Funksjekoade 0x10 Meardere registers skriuwe………………………………………………………… 92 Funksjekoade 0x07 Lês útsûnderingsteat ………………… …………………………………………. 93 Ferkearde masteroanfragen ………………………………………………………………………….. 94 Modbus-adresberiken foar Web-IO Digital………………………………………………………. 95 Modbus-ûnthâldyndieling……………………………………………………………………………………….. 97 Modbus-adresberiken foar Web-IO Analog……………………………………………………… 99 Modbus adres berik foar Web-Termometer …………………………………………………103 Firtuele registers foar browser-ynteraksje……………………………………………………….. 105
5
Oerview
Oerview
Tagong fan jo eigen applikaasje
Neist de tal fan standert tagong mooglikheden, de Web-IO biedt jo ek de opsje om tagong te krijen fan ien fan jo eigen applikaasjes.
Dit kin dien wurde mei TCP/IP-sockets fan 'e gewoane talen op hege nivo's, mar it is ek mooglik om fertroude talen te brûken Web technologyen lykas AJAX of PHO om te kommunisearjen mei de Web-IO.
De Web-IO biedt ferskate metoaden foar yndividuele tagong:
· Kommando-strings · Binêre struktueren · HTTP-fersiken · HTTP-fersiken
ASCII BINARY REST JavaSkript / AJAX
Tal fan programmearring examples yn ferskate programmeartalen kinne fûn wurde op http://wut.de yn 'e Web-IO Digital seksje. Under Mear ynformaasje oer dizze produktgroep folgje de keppeling Tools en klikje dêr op de Programming examples algemiene ljepper.
Modbus TCP - standerdisearre tagong
Ek al wurdt MODBUS-TCP normaal net brûkt as kommunikaasjepaad fanút jo eigen applikaasje, wolle wy in oerview fan de funksje koades en register adressen brûkt mei de Web IO op dit punt.
6
TCP/IP-sockets - Kommandostrings
TCP/IP-Sockets Kommando-strings
Troch ienfâldige kommando-strings út te wikseljen kinne jo de yngongen en tellers lêze en de útgongen ynstelle.
Ofhinklik fan de konfiguraasje de Web-IO wurket yn dizze modus as in TCP-tsjinner of as in UDP-peer.
De gegevens útwikseling tusken applikaasje en Web-IO fynt plak mei help fan ienfâldige kommando snaren.
· De kommando-strings besteane út · De prefatory folchoarder: GET / · It eigentlike kommando:
· It skiedingsteken: ? · en ien of mear parameters:
&<…
De folchoarder fan 'e parameters is foarskreaun en kin net frij keazen wurde.
Alle kommando-strings einigje altyd mei &
Kommando-strings binne haadlettergefoelich.
Gjin CR LF (0x0d 0x0a) kin wurde taheakke oan de line ein.
It antwurd fan de Web-IO bestiet út in identifier dy't oanjout wat ferstjoerd wurdt, skieden troch in puntkomma, en de wearden, dy't ek skieden wurde troch in puntkomma. Oan 'e ein wurdt in nulbyte taheakke (0x00).
; [; ; ]+(2x0)
As de Web-IO is konfigurearre as tsjinner foar TCP-sockets, it IP-adres en apparaatnamme kinne stjoerd wurde foar it eigentlike antwurd troch de opsje Prefix-koptekst yn te stellen.
; ; ; [; ; ]+(2x0)
Derneist wurdt it antwurd yn in HTTP-frame ynfoege en pas dan ferstjoerd troch de opsje Antwurd HTTP konformeel yn te stellen.
7
TCP/IP-sockets - Kommandostrings
De folgjende list befettet in oerview fan alle stipe kommando's mei har byhearrende parameters.
Web-IO Digitale kommando's
GET /ynputx
GET /counterx
GET / counter GET / outputx
Parameter
?PW=wachtwurd& It administrator- of brûkerswachtwurd moat brûkt wurde ynstee fan wachtwurd. As der gjin wachtwurd is tawiisd, wurdt PW=& ynfierd. (jildt foar alle kommando's!)
?PW=wachtwurd&
?PW=wachtwurd&
?PW=wachtwurd&
Beskriuwing
Ynfierstatusfersyk x spesifisearret opsjoneel it nr. fan de ynfier en kin wêze tusken 0 en 16 ôfhinklik fan it model. De feedback fan de Web IO is in tekenrige dy't begjint mei inputx; folge troch de ynfierstatus: ON = sinjaal by de yngong en OFF = gjin sinjaal by de yngong As x folslein weilitten is, sil de Web IO jout in bit patroan oerienkomt mei de ynfier sinjalen yn heksadesimale notaasje.
Tellerweardefersyk x kin in wearde wêze tusken 0-11 en jout de ynfier oan. De feedback fan de Web IO is in tekenrige dy't begjint mei counterx;. De tellerwearde fan de selektearre teller wurdt taheakke yn desimale notaasje.
It oanfreegjen fan alle teller wearden De feedback fan de Web IO is in tekenrige begjint mei teller;. De tellerwearden wurde tafoege yn desimale notaasje skieden troch puntkomma's.
Utfier status fersyk x spesifisearret opsjoneel it nûmer fan de útfier en kin wêze tusken 0 en 16 ôfhinklik fan it model. De feedback fan de Web IO is in tekenrige dy't begjint mei outputx; folge troch de útfierstatus: ON = sinjaal by de útgong en OFF = gjin sinjaal by de útfier As x folslein weilitten wurdt, sil de Web IO jout in bit patroan oerienkomt mei de útfier sinjalen yn heksadesimale notaasje.
8
TCP/IP-sockets - Kommandostrings
Kommando's
GET /outputaccessx
GET /counterclearx
GET / allout
GET / tiid GET / settiid GET / diagnoaze
Parameter
Beskriuwing
?PW=wachtwurd& [Mask=XXXX&] State=ON/OFF/YYYY& [NA=ON&] ON: Utfier = 1, OFF: Utfier = 0, TOGGLE: Feroaring fan steat XXXX: Hexwearde tusken 0000 en 0FFF neffens de bits dy't ynsteld wurde YYYY: Hex-wearde tusken 0000 en 0FFF neffens it útfierbitpatroan.
Stel ien of mear útgongen x kin in wearde wêze tusken 0-11 en spec-
jout de yn te stellen útfier. De feedback fan de Web IO is in tekenrige dy't begjint mei ,,útfier;" folge troch in bit patroan oerienkomt mei de útfier sinjalen yn heksadesimale notaasje.
De spesifikaasje fan Mask is opsjoneel. As Mask net ferstjoerd wurdt, jildt it kommando outputaccess foar alle útgongen. Mei NA = ON is it opsjoneel berikt dat gjin antwurd op de outputaccess kommando wurdt stjoerd troch de Web IO.
?PW=wachtwurd& [Set=wearde&] wearde: Tellerfoarinstelling, wearde tusken 0 en 2 miljard
Stelt de teller wearde fan in teller. As de Set parameter wurdt net ferstjoerd, de standert is 0. x kin wêze in wearde tusken 0-11 en spesifisearret de ynfier waans teller moat wurde reset. It antwurd fan de Web IO is in tekenrige dy't begjint mei counterx;. De nije teller fan de selektearre teller wurdt taheakke yn desimale notaasje. As x net oantsjutte is, wurde alle tellers ynsteld.
?PW=wachtwurd&
Kollektive fersyk fan de ynfier, útfier steaten en alle teller wearden. De Web IO reagearret mei in tekenrige fan de folgjende struktuer:
input;0xxx;útfier;0xxx;teller;n0;n1;n2,… 0xxx komt oerien mei de status fan de yn- of útgongen yn heksadesimale notaasje. n0,n1 ensfh befetsje de teller steaten yn desimale notaasje.
?PW=wachtwurd&
Jout it systeem tiid fan de Web IO. Formaat: DD.MM.JJJJ, uu:mm:ss D=Dei, M=Moanne, Y=Jier, h=Oere, m=Minút, s=Twadde
?PW=wachtwurd& tiid=DD.MM.JJJJ,
hh:mm:ss&
Stelt it systeem tiid fan de Web IO nei de wearde trochjûn mei de tiid.
?PW=wachtwurd&
Fersiket de status fan it diagnostyske ûnthâld. De Web IO jout werom:
diagnosis;0000;00000000; 00000000;00000000 de fjouwer-siferwearde jout it oantal opsleine berjochten oan. Mei de trije acht-sifers heksadesimale wearden fertsjintwurdiget elke set bit ien fan de 92 mooglike berjochten.
9
TCP/IP-sockets - Kommandostrings
Kommando's
GET / diagnoazex
Parameter
?PW=wachtwurd&
GET /diaglistx
GET / diagclear GET / errorclear
?PW=wachtwurd&
?PW=wachtwurd& ?PW=wachtwurd&
Beskriuwing
Mei x wurdt de yndeks foar ien fan de op it stuit opsleine berjochten oantsjutte. De Web IO stjoert de korrespondearjende berjochttekst as werom. x moat net grutter wêze as it oantal op it stuit oanwêzich berjochten.
Jout de berjochten werom foar de yndividuele berjochtbits (maks. 92)
Wist berjocht ûnthâld
Wiist laden flaters en makket de troffen útgongen frij.
Web-IO Analoge kommando's
GET /singlex
Parameter
gjin
GET / útfierx
gjin
GET /outputaccessx
?PW=wachtwurd&
State=N,NNN& N,NNN: Strom- bzw. Spannungswert der am entsprechenden output eingestellt wurde soll
GET / tiid GET / settiid
?PW=wachtwurd&
?PW=wachtwurd& tiid=DD.MM.JJJJ, hh:mm:ss&
Beskriuwing
Fersyk foar de aktuele stroom of voltage wearden yn mA of V. x jout opsjoneel it nee. fan de IO kanaal en kin wêze 1 of 2. De feedback fan de Web-IO is in tekenrige dy't de wearde toant mei trije desimale plakken en ienheid [N]N.NNN mA of [N] N.NNN V As x folslein weilitten wurdt, sil de Web IO jout de wearden fan beide kanalen skieden troch puntkomma's.
jout itselde resultaat as GET / singlelex (sels as IO-kanalen as ynfier wurkje)
It ynstellen fan in útfier x kin 1 of 2 wêze en jout de yn te stellen útfier oan. De feedback fan de Web IO is in tekenrige yn it formaat [N]N.NNN mA of [N] N.NNN V. en jout de aktuele wearde oan. Tink derom dat de Web IO hat in pear ms nedich om de winske wearde yn te stellen. Dêrom komt de wearde net oerien mei de winske wearde.
Jout it systeem tiid fan de Web IO. Formaat: DD.MM.JJJJ, uu:mm:ss D=Dei, M=Moanne, Y=Jier, h=Oere, m=Minút, s=Twadde
Stelt it systeem tiid fan de Web IO nei de wearde trochjûn mei de tiid.
10
TCP/IP-sockets - Kommandostrings
Kommando's
GET / diagnoaze
Parameter
?PW=wachtwurd&
GET / diagnoazex
?PW=wachtwurd&
GET /diaglistx GET /diagclear
?PW=wachtwurd& ?PW=wachtwurd&
Beskriuwing
Fersiket de status fan it diagnostyske ûnthâld. De Web IO jout: diagnoaze;0000;00000000; 00000000;00000000 de fjouwer-siferwearde jout it oantal opsleine berjochten oan. Mei de trije acht-sifers heksadesimale wearden fertsjintwurdiget elke set bit ien fan de 92 mooglike berjochten.
Mei x wurdt de yndeks foar ien fan de op it stuit opsleine berjochten oantsjutte. De Web IO stjoert de korrespondearjende berjochttekst as werom. x moat net grutter wêze as it oantal op it stuit oanwêzich berjochten.
Jout de berjochten werom foar de yndividuele berjochtbits (maks. 92)
Wist berjocht ûnthâld
Web-IO Klima (Web-Termometer, ...) en VOC
Kommando's
Parameter
Beskriuwing
GET /singlex
gjin
Oanfraach foar de aktuele klimaatgegevens x jout opsjoneel it nr. fan de sensor. De feedback fan de Web-thermometer is in tekenrige dy't de wearde toant mei ien desimale sifer en ienheid
24,0 ° C As x wurdt weilitten hielendal, de Web IO jout de wearden fan beide kanalen skieden troch puntkomma's.
GET / tiid
?PW=wachtwurd&
Jout it systeem tiid fan de Web IO. Formaat: DD.MM.JJJJ, uu:mm:ss D=Dei, M=Moanne, Y=Jier, h=Oere, m=Minút, s=Twadde
GET / settime
?PW=wachtwurd& tiid=DD.MM.JJJJ,
hh:mm:ss&
Stelt it systeem tiid fan de Web IO nei de wearde trochjûn mei de tiid.
GET / diagnoaze
?PW=wachtwurd&
Fersiket de status fan it diagnostyske ûnthâld. De Web IO jout werom:
diagnosis;0000;00000000; 00000000;00000000 de fjouwer-siferwearde jout it oantal opsleine berjochten oan. Mei de trije acht-sifers heksadesimale wearden fertsjintwurdiget elke set bit ien fan de 92 mooglike berjochten.
11
TCP/IP-sockets - Kommandostrings
Kommando's
GET / diagnoazex
Parameter
?PW=wachtwurd&
GET /diaglistx GET /diagclear
?PW=wachtwurd& ?PW=wachtwurd&
Beskriuwing
Mei x wurdt de yndeks foar ien fan de op it stuit opsleine berjochten oantsjutte. De Web IO stjoert de korrespondearjende berjochttekst as werom. x moat net grutter wêze as it oantal op it stuit oanwêzich berjochten.
Jout de berjochten werom foar de yndividuele berjochtbits (maks. 92)
Wist berjocht ûnthâld
TCP-tsjinner
Om tagong te krijen ta de Web-IO as TCP-tsjinner fia ASCII-sockets, ynskeakelje TCP ASCII-Sockets ûnder Kommunikaasjepaden >> Socket API. Spesifisearje hokker TCP-poarte moat wurde brûkt om te ûntfangen Web-IO ferbinings. De Web-IO kin foarsjen maksimaal acht TCP ferbinings tagelyk op de oantsjutte haven (allinne 7 as UDP-ASCII tagong wurdt ek brûkt), en eltse ekstra ferbining besykjen wurdt ôfwiisd.
As de Web-IO ûntfangt gjin jildich kommando binnen 30 sekonden nei't de ferbining is iepene, it slút de ferbining en makket tagong wer mooglik. De Web-IO gedraacht deselde wize as in defekt of ûnbekend kommando wurdt ûntfongen.
Om te wikseljen de útgongen mei help fan ASCII sockets, Aktivearje útgongen foar ASCII-Sockets moatte wurde kontrolearre.
UDP Peer
Yn tsjinstelling ta TCP, der is gjin fêste ferbining tusken de Web-IO en de oare kommunikaasjepartner by it brûken fan it UDP-protokol. Gegevens wurde útwiksele fia datagrams.
Om tagong te krijen ta de Web-IO as in UDP-peer fia ASCII-sockets, ynskeakelje UDP ASCII-Sockets ûnder Kommunikaasjepaden >> Socket API. Spesifisearje hokker UDP-poarte moat wurde brûkt foar de Web-IO te ûntfangen UDP datagrammen ûnder Local UDP Port.
Yn normale situaasjes moat in 0 ynfierd wurde as de Remote UDP Port sadat de Web-IO stjoert antwurd datagrams nei de UDP-poarte dêr't it fersyk is útjûn. As alternatyf in fêste haven dêr't de Web-IO stjoert alle datagrams kinne wurde oantsjutte ûnder Remote UDP Port.
12
TCP/IP-sockets - Kommandostrings
UDP-kommunikaasje fynt altyd plak troch polling. Dit betsjut dat de applikaasje de kommando-strings brûkt om de winske wearden te freegjen en de útgongen yn te stellen. Om de útgongen te wikseljen mei UDP ASCII-sockets, moatte útgongen ynskeakelje foar UDP-Sockets wurde kontrolearre.
Kommunikaasje tusken Web-IO en applikaasje
De yngongen opfreegje De yngongen wurde oer it algemien lêzen mei help fan polling. Dit betsjut dat de kliïntapplikaasje de kommando-strings brûkt om de winske wearden te freegjen. Of de status fan ien bepaalde ynput kin wurde frege of alle ynputs wurde frege. Om mar ien ynfier te freegjen, foegje de kaaiwurdynfier ta oan it ynfiernûmer. Om alle yngongen te freegjen, skip gewoan de yndikaasje oer. As de Web-IO is wachtwurd beskerme, it wachtwurd wurdt taheakke mei ? as skiedingsteken mei de útspraak PW De kommandostring einiget mei & As der gjin wachtwurd is tawiisd, folget de & direkt efter PW= Example foar it opfreegjen fan Input1 mei it wachtwurd "blau" ynsteld:
GET /ynput1?PW=blau&
De Web-IO jout dan werom:
input1;ON+(0x00)
as in jildich sinjaal wurdt stjoerd nei de ynfier, of:
input1;OFF+(0x00)
As der gjin sinjaal is oanwêzich. Alle antwurden fan de Web-IO einigje mei in nul byte (0x00). Om alle yngongen te freegjen is it kommando:
GET /ynput?PW=blau& 13
TCP/IP-sockets - Kommandostrings
De Web-IO antwurden mei de kaaiwurd ynfier en in ien- of fjouwer-karakter hex getal. It hex-nûmer komt oerien mei it bitpatroan dat resultaat is fan 'e ynstelde of net-ynstelde yngongen
Example foar Web-IO 2xIn,2xOut mei ynfier 1 = ON:
ynfier; 2+(0x00)
De wearde wurdt berekkene neffens de folgjende berekkening:
2
heksadesimale
bit 3 bit 2 bit (ynfier) 1 bit (ynfier) 0
0010
dûbele / binêre
0 x 20 = 0 x 1 = 0
1 x 21 = 1 x 2 = 2
0 x 22 = 0 x 4 = 0
0 x 23 = 0 x 8 = 0
totaal
2 =^ hex 2
Example foar Web-IO 12xIn, 12xOut mei yngongen 1,5,6,8,10 en 11 = ON:
input;0D62 +(0x00)
De wearde wurdt berekkene neffens de folgjende berekkening:
14
TCP/IP-sockets - Kommandostrings
Hege byte
0
D
Foar Web-IO 12xDigitaal altyd 0
Low byte
6
2
heksadesimale
bit 15 bit 14 bit 13 bit 12 bit (útfier) 11 bit (útfier) 10 bit (útfier) 9 bit (útfier) 8 bit (útfier) 7 bit (útfier) 6 bit (útfier) 5 bit (útfier) 4 bit ( útfier) 3 bit (útfier) 2 bit (útfier) 1 bit (útfier) 0
0000110101100010
dûbele / binêre
0 x 20 = 0 x 1 = 0
1 x 21 = 1 x 2 = 2
0 x 22 = 0 x 4 = 0
0 x 23 = 0 x 8 = 0
totaal
2 =^ hex 2
0 x 20 = 0 x 1 = 0
1 x 21 = 1 x 2 = 2
1 x 22 = 1 x 4 = 4
0 x 23 = 0 x 8 = 0
totaal
6 =^ hex 6
1 x 20 = 1 x 1 = 1
0 x 21 = 0 x 2 = 0
1 x 22 = 1 x 4 = 4
1 x 23 = 1 x 8 = 8
totaal
13 =^ hex D
0 x 20 = 0 x 1 = 0
0 x 21 = 0 x 2 = 0
0 x 22 = 0 x 4 = 0
0 x 23 = 0 x 8 = 0
totaal
0 =^ hex 0
Event-oandreaune berjochten (allinich TCP) Guon applikaasjes fereaskje dat feroarings oan bepaalde útgongen wurde automatysk rapportearre op de besteande TCP ferbining.
Ien reden kin it ferminderjen fan de gegevenslading op it netwurk wêze. As de yngongen wurde frege in sykliske yntervallen, der is in trochgeande gegevens load. D'r is ek it risiko dat feroarings oan 'e yngongen tusken twa syklusen net wurde herkend.
Om te hawwen Web-IO stjoert automatysk sinjaalferoarings op 'e yngongen, kontrolearje de oerienkommende Input Triggers ûnder Kommunikaasjepaden >> Socket tagong.
De berjochten fan de Web-IO hawwe deselde struktuer as de antwurden by it freegjen fan alle yngongen
15
TCP/IP-sockets - Kommandostrings
It opfreegjen fan de útgongen
Lêstagong ta de útgongen wurdt dien op deselde manier as it freegjen fan de yngongen, útsein dat de kaaiwurdynfier wurdt ferfongen troch útfier
It wikseljen fan de útgongen
Om de útgongen te wikseljen, brûk it kommando outputaccess.
Of in inkele útfier, alle útgongen tagelyk, of guon fan 'e útgongen kinne wurde oerskeakele.
Ien útfier wikselje Lykas by it lêzen wurdt de útfier oantsjutte. It nûmer fan de te wikseljen útfier wurdt taheakke oan it kaaiwurd útfiertagong
Derneist wurdt de parameter State brûkt, wêrfoar yn dit gefal trije mooglike wearden binne:
· ON · OFF · TOGGLE (tastânferoaring)
Example:
GET /outputaccess1?PW=blau&State=ON&
skeakelt Output 1 oan ON. As Antwort stjoert das Web-IO zB
útfier; 0EAC +(0x00)
wêrby't de feitlik weromjûn wearde hinget ôf fan hokker steat de oare útgongen wiene yn foar it wikseljen.
Inisjele steat fan de útgongen: Utfier 1:
Steat nei it wikseljen:
bitwize fertsjintwurdiging 0000 1110 1010 0100
1 0000 1110 1010 0110
heksadesimale
output; 0EA4 State=ON
output; 0EAC
16
TCP/IP-sockets - Kommandostrings
Tagelyk wikseljen fan alle útgongen Om alle útgongen tagelyk te wikseljen, wurdt gjin útgong oantsjutte en wurdt de parameter State brûkt om it hex-nûmer te stjoeren foar it winske bitpatroan fan 'e útgongen.
As foar eksampAs jo de útgongen 1, 6 en 11 wolle wikselje nei ON en alle oaren nei OFF, sjocht it kommando der sa út:
GET /útfiertagong?PW=blau&State=0842&
yn antwurd de Web-IO stjoert
útfier;0842 +(0x00)
Inisjele steat fan de útgongen: Steat:
Steat nei it wikseljen:
bitwise fertsjintwurdiging
0000 1110 1010 0100 0000 1000 0100 0010 0000 1000 0100 0010
heksadesimale
output; 0EA4 State=0842
output; 0842
Tagelyk wikseljen fan selektearre útgongen Om mar guon fan 'e útgongen te wikseljen, wurdt deselde kommandostruktuer brûkt as foar it wikseljen fan alle útgongen. It ferskil is dat de parameter Mask foarôfgiet oan de steat parameter. De parameter Mask jout oan hokker útgongen moatte wurde oerskeakele, en State spesifisearret nei hokker steat.
Bygelyksample om útgongen 1, 6 en 11 te wikseljen nei ON en útgongen 5 en 10 nei OFF, it kommando sjocht der sa út:
GET /outputaccess?PW=blau&Mask=0C62&State=0842&
yn antwurd de Web-IO stjoert
útfier; 0AC6 +(0x00)
wêrby't de feitlik weromjûn wearde hinget ôf fan hokker steat de oare útgongen wiene yn foar it wikseljen.
Inisjele steat fan 'e útgongen: Masker: Tastân:
Steat nei it wikseljen:
bitwise fertsjintwurdiging
0000 1110 1010 0100 0000 1100 0110 0010 0000 1000 0100 0010 0000 1010 1100 0110
heksadesimale útfier; 0EA4
Mask = 0C62 State = 0842 útfier; 0AC6
17
TCP/IP-sockets - Kommandostrings
It opfreegjen fan de tellers
De Web-IO-yngongen omfetsje in teller dy't wurdt ferhege mei ien mei elke opkommende râne, ie in feroaring fan OFF nei ON.
De tellers wurde frege mei de kommandoteller. Lykas by de yn- en útgongen, kinne de wearden foar alle tellers of gewoan ien teller opfrege wurde.
As in tellerstân fan 2147483648 wurdt berikt, giet it oer nei 0
Ien teller opfreegje It tellernûmer fan de ynfier wêrfan de teller opfrege wurde moat, wurdt taheakke oan de trefwurdteller.
Example foar querying Counter 0:
GET /counter0?PW=blau&
yn antwurd de Web-IO stjoert bgl
teller; 3974 +(0x00)
De tellerwearde wurdt weromjûn yn desimaal formaat, skieden troch in puntkomma, efter de trefwurdteller.
Querying alle tellers As de teller kommando wurdt stjoerd nei de Web-IO sûnder opjaan it oantal fan in ynfier, de Web-IO jout de teller steaten fan alle yngongen skieden troch puntkomma's.
Example foar querying alle tellers fan in Web-IO mei 12 yngongen:
GET /teller?PW=blau&
yn antwurd de Web-IO stjoert bgl
counter;3974;453;99;0;0;984;712;4;334;1076;0;6543 +(0x00)
De tellerwearde wurdt weromjûn yn desimaal formaat en puntkomma skieden efter de trefwurdteller.
18
TCP/IP-sockets - Kommandostrings
It opromjen fan de tellers
It kommando counterclear kin brûkt wurde om in spesifisearre of alle tellers nei 0 te wiskjen of as it nedich is om it/se op in oare wearde yn te stellen.
Clearing ien teller Example foar it wiskjen fan Teller 0:
GET /counterclear0?PW=blau&
yn antwurd de Web-IO stjoert
teller0;0 +(0x00)
Ien teller ynstelle Om in teller foar te setten op in bepaalde wearde, is de opsjonele parameter Set= & wurdt taheakke.
Example foar it ynstellen fan Teller 0 nei 12345:
GET /counterclear0?PW=blau&Set=12345&
yn antwurd de Web-IO stjoert
teller0;12345 +(0x00)
Alle tellers wiskje Example foar it wiskjen fan alle tellers foar in Web-IO mei 12 yngongen:
GET /counterclear?PW=blau&
yn antwurd de Web-IO stjoert
counter0;0;0;0;0;0;0;0;0;0;0;0;0 +(0x00)
Alle tellers ynstelle Om alle tellers foar te setten op in bepaalde wearde, is de opsjonele parameter Set= & wurdt ek taheakke. It is net mooglik om alle tellers foar te setten foar yndividuele tellersteaten yn ien kommando.
Example foar it ynstellen fan alle tellers oan de wearde 12345 foar in Web-IO mei 12 yngongen:
19
TCP/IP-sockets - Kommandostrings
GET /counterclear?PW=blau&Set=12345&
yn antwurd de Web-IO stjoert
counter0;12345;12345;12345;12345;12345;12345; 12345;12345;12345;12345;12345;12345 +(0x00)
By hoc lêzen fan ynputs, útgongen en tellers
Troch it kommando allout te brûken kinne jo de folsleine proseskaart fan 'e Web-IO.
Example:
GET /allout?PW=blau&
yn antwurd de Web-IO mei 12 Inputs en 12 Outputs stjoert foar eksample
input;0C3B;output0842counter;3974;453;99;0;0;984; 712;4;334;1076;0;6543 +(0x00)
Kommunikaasje tusken Web-IO Analooch en tapassing
Undersykje de IO-kanalen
It lêzen fan de IO-kanalen wurdt normaal dien yn polling-modus. Dit betsjut: de kliïntapplikaasje freget de winske wearden mei help fan de oerienkommende kommandostring.
Of de status fan in spesifyk IO-kanaal kin oanfrege wurde of in fersyk wurdt dien foar beide IO-kanalen.
As mar ien IO-kanaal frege wurde moat, wurdt it nûmer fan it IO-kanaal tafoege oan it kaaiwurd single. Foar de query fan alle kanalen wurdt yndeksearring ôfwiisd. Yn tsjinstelling ta de digitale Web IO's, de yndeksearring fan 'e IO-kanalen yn 'e analoge Web IO begjint net by 0 mar by 1.
As antwurd, de Web IO stjoert werom de hjoeddeiske of voltage wearde mei trije desimale plakken folge troch in spaasje en de ienheid. As beide IO-wearden wurde frege, wurde se weromjûn skieden troch in puntkomma.
20
TCP/IP-sockets - Kommandostrings
Example fan polling IO-kanaal 2 by 7.5 mA stroomstream:
GET /single2&
De Web IO stjoert dan werom:
7,500 mA+ (0x00)
Example fan polling fan beide IO-kanalen op 15.340 mA en 7.5 mA stroomstream:
GET /single&
De Web IO stjoert dan werom:
15,340 mA ; 7,500 mA+ (0x00)
As alternatyf foar it inkele kommando kin it útfierkommando ek brûkt wurde om de status fan 'e IO-kanalen út te lêzen (sels as de kanalen binne konfigureare as yngongen). It útfier kommando wurdt brûkt op deselde wize as single. Lykwols, de Web IO foarheaksels it antwurd mei it wurd útfier en, as in kanaal wurdt oanfrege, mei de oerienkommende yndeks skieden troch in puntkomma. Example fan polling IO-kanaal 2 by 7.5 mA stroomstream:
GET /útfier2&
De Web IO stjoert dan werom:
output2;7,500 mA+(0x00)
Example fan polling fan beide IO-kanalen op 15.340 mA en 7.5 mA stroomstream:
GET /útfier&
De Web IO stjoert dan werom:
útfier; 15,340 mA ; 7,500 mA+(0x00)
21
TCP/IP-sockets - Kommandostrings
Stel stroom / voltage wearde fan in útfier
Lykas by lêzen tagong, wurdt yndeksearring brûkt. It nûmer fan de yn te stellen útfier wurdt taheakke oan it kaaiwurd outputaccess.
Derneist wurdt de parameter PW= brûkt om it wachtwurd troch te jaan en de parameter State= om de wearde troch te jaan. De parameter State wurdt oerdroegen mei maksimaal trije desimale plakken en sûnder ienheid.
De parameterset wurdt skieden fan it kommando troch ? en elke parameter einiget mei &.
Example:
GET /outputaccess1?PW=blau&State=15,340&
set útfier 1 oan 15.340 mA.
As antwurd, de Web IO stjoert bgl
GET /outputaccess1?PW=blau&State=15,340& +(0x00)
Web-IO Klima, VOC en tapassing
Undersykje de IO-kanalen
It lêzen fan de klimaatwearden wurdt ek meastentiids dien yn polling modus. Dit betsjut: de kliïntapplikaasje freget de winske wearden mei help fan de oerienkommende kommandostring.
Of de wearde fan in spesifyk kanaal kin oanfrege wurde of in fersyk wurdt dien foar alle besteande kanalen.
As mar ien kanaal frege wurde moat, wurdt it nûmer fan it kanaal tafoege oan it kaaiwurd single. As alle kanalen moatte wurde frege, wurdt yndeksearring weilitten. Oars as de digitale Web IO's, de yndeksearring fan kanalen yn 'e Web IO-klimaat begjint net by 0 mar by 1.
As antwurd, de Web IO stjoert de hjoeddeistige temperatuer, fochtigens, luchtdruk of luchtkwaliteitswearde werom mei trije desimale plakken folge troch in romte en de ienheid. As alle wearden wurde frege, wurde se weromjûn skieden troch in puntkomma.
Example foar de fraach fan kanaal 2 (fochtigens) fan in web thermo-hygrobarometer:
22
GET /single2&
TCP/IP-sockets - Kommandostrings
De Web Thermo-Hygrobarometer stjoert dan werom:
28,6% +(0x00)
Example foar de fraach fan alle kanalen:
GET /single&
De Web Thermo-Hygrobarometer stjoert dan werom:
23,6°C;28,5%;988,8hPa+(0x00)
Freegje en set datum en tiid yn
Oanfraach foar datum en tiid
Brûk de kommando tiid foar in query de ynstelde datum en tiid fan de Web-IO. It fersyk
GET /tiid?PW=blau&
feroarsaket de Web-IO om te antwurdzjen mei
01.08.2016,15:14:59
It ynstellen fan de datum en tiid
It systeem tiid fan de Web-IO kin ynsteld wurde mei it kommando settime. De parameter tiid wurdt brûkt om te stjoeren de winske ynstellings opmakke
tiid=DD.MM.JJJJ,uu:mm:ss
Example:
GET /settime?PW= blau&time= 01.08.2016,15:14:59
de Web-IO antwurden mei
23
TCP/IP-sockets - Kommandostrings
01.08.2016,15:14:59
It lêzen fan de flater ûnthâld
Wannear't de Web-IO detektearret ien of mear flaters wylst it ferwurkjen fan ien fan syn taken, dizze wurde opslein en kin wêze viewed ûnder Diagnostyk yn 'e navigaasjebeam. Yn guon applikaasjes is it winsklik om flaterbehear te behanneljen net mei de hân troch viewyn a website, mar leaver te evaluearjen flaters yn automatisearre moade yn in programma. Foar dit de Web-IO jout in pear kommando snaren dy't kin brûkt wurde mei beide TCP of UDP. It meitsjen fan in list mei mooglike flaterberjochten De Web-IO kin maksimaal 127 ferskillende flatersoarten beheare. It werklike oantal kin fariearje oant dizze limyt ôfhinklik fan de firmware ferzje. Om ûntfange in oerview fan de mooglike flaters, kinne jo stjoere it kommando
GET /diaglistx?PW=wachtwurd&
oan 'e Web-IO. Yn plak fan xa wurdt wearde tusken 0 en 127 brûkt. Ynstee fan wachtwurd ynfiere de behearder of operator wachtwurd yn. De Web-IO antwurdet op it fersyk mei it byhearrende flaterberjocht.
diaglistx; flatertekst
Example: As de applikaasje ferstjoert (wachtwurd = "blau")
GET /diaglist2?PW=blau&
de Web-IO antwurden mei
diaglist2;Formatfehler in der DNS Anfrage
24
TCP/IP-sockets - Kommandostrings
Jo kinne it kommando diaglist brûke mei in foar folgjende lus om alle mooglike flaterberjochten út te lêzen en as in statyske list op te slaan. Yn binêre modus foar bglample kinne jo allinnich bepale hoefolle flaters binne stuit oanwêzich. Dêrnjonken wurde de byhearrende flaternûmers trochstjoerd. Mei de statyske flaterlist kin dan in lêsbere flater wurde útfierd.
Direkte evaluaasje fan de hjoeddeiske flaters Om krijen de hjoeddeiske flater status fan de Web-IO kinne jo it kommando brûke
GET /diagnoaze?PW=wachtwurd&
De Web-IO reagearret mei
diagnoaze;iiii;zzzzzzzz;yyyyyyyy;xxxxxxxx
Yn iii de Web-IO jout it oantal hjoeddeistige flaters yn 4-plak hex opmaak.
zzzzzzzz;yyyyyyyy; xxxxxxxx kin negearre wurde foar normale, standert applikaasjes.
Foar saakkundige programmeurs: zzzzzzzz; yyyyyyyy; xxxxxxxx binne trije 32-bit wearden, elk yn 8-plak hex opmaak. De resultearjende 64 bits ferfange de 64 mooglike flatersoarten. Troch de statyske flaterlist te brûken (sjoch GET / diaglist ...) kinne de yndividuele bits wurde dekodearre. De LSB ferskynt nei rjochts yn it x-berik en de MSB nei lofts yn it y-berik.
Om de hjoeddeiske flaters as in flater tekst, de Web-IO jout it kommando
GET /diagnosisx?PW=&
Hjir x is de yndeks foar de flater yn desimaal formaat begjinnend mei 1.
It antwurd fan de Web-IO sjocht der dan sa út:
diagnoazex; flatertekst
Yn tsjinstelling ta de flater teksten dy't lêzen út de Web-IO mei help fan diaglist, de flatertekst foar diagnoaze kin ek dynamyske eleminten befetsje lykas IP-adressen of poartenûmers.
Example:
25
TCP/IP-sockets - Kommandostrings
De applikaasje stjoert:
GET /diagnoaze?PW=blau&
De Web-IO antwurdet:
diagnosis;0005;00400040;008A0000;00000000
De applikaasje stjoert:
GET /diagnosis1?PW=blau&
De Web-IO antwurdet:
diagnosis1;Mail Server antwortet nicht.
De applikaasje stjoert:
GET /diagnosis2?PW=blau&
De Web-IO antwurdet:
diagnosis2;Das Versenden der Mail wurde abgebrochen und wird wiederholt.
De applikaasje stjoert:
GET /diagnosis3?PW=blau&
De Web-IO antwurdet:
diagnose3; Ziel IP-adres ûnbekannt: 172.16.232.8.
De applikaasje stjoert:
GET /diagnosis4?PW=blau&
De Web-IO antwurdet:
diagnose4;Wachthond Timer abgelaufen!
De applikaasje stjoert:
26
GET /diagnosis5?PW=blau&
TCP/IP-sockets - Kommandostrings
De Web-IO antwurdet:
diagnosis5;TCP Client Alarm: Server nicht erreicht.
It flaterûnthâld wiskje De list mei flaters dy't foarkomme tidens runtime bliuwt opslein yn 'e Web-IO, sels as de flater net mear oanwêzich is op it momint fan query. Om it flaterûnthâld te wiskjen, brûk it kommando
GET /diagclear?PW=wachtwurd&
De Web-IO reagearret mei
diagnoaze;0000;00000000;00000000;00000000
as der gjin hjoeddeiske flaters.
27
TCP/IP-sockets - Binêr
TCP / IP Sockets - Binary
Neist tagong mei help fan kommando snaren, de Web-IO jout ek fjouwer socket tagongen foar binêre gegevens útwikseling.
Alle fjouwer tagongen wurkje ûnôfhinklik fan elkoar. Under Kommunikaasjepaden >> Socket-API kinne jo de binêre tagongen ynskeakelje en opjaan hokker as de trije folgjende modi te brûken binne:
· TCP-tsjinner · TCP-kliïnt · UDP-peer Foar de ferskate funksjes lykas it lêzen fan de yngongen, it ynstellen fan de útgongen ensfh. Web-IO definiearret binêre struktueren. Tagong is allinich troch dizze struktueren te wikseljen.
TCP tsjinner
Under Kommunikaasjepaden >> Socket-API yn it winske binêre gebiet selektearje BINARYx TCP-tsjinner as it Socket-Type en spesifisearje hokker lokale poarte te brûken foar it akseptearjen fan de ferbining.
Oars as TCP Server modus foar kommando stringen wêryn up 8 kliïnten kinne ferbine mei de mienskiplike tsjinner haven, de Web-IO lit mar ien ferbining ta foar de respektivelike binêre tagong. Alle fierdere ferbiningspogingen wurde ôfwiisd salang't in kliïnt ferbûn is.
Binêre tagong kin wachtwurdbeskerme wurde as jo wolle.
By it ynstellen fan input triggers en der is in besteande ferbining, de Web-IO ynformearret automatysk de tapassing fan feroarings oan de selektearre yngongen.
Om de útgongen ek fia binêre tagong te wikseljen, moat dit kontrolearre wurde ûnder Útgongen ynskeakelje foar Binaryx-Sockets.
28
TCP/IP-sockets - Binêr
TCP kliïnt
As BINARYx TCP-Client is selektearre as de Socket-Type, de Web-IO iepenet in ferbining mei in TCP tsjinner applikaasje as der in feroaring oan ien fan de yngongen selektearre ûnder Input / Trigger.
Fier ûnder Server-IP it IP-adres of hostnamme fan 'e bestimmingstsjinner yn en spesifisearje ûnder BINARYx Server Port op hokker TCP-poarte de ferbining moat wurde iepene.
Yn normale situaasjes moat de lokale BINARYx-poarte wurde konfigureare foar AUTO. Dit betsjut dat de stjoerder-poarte dynamysk ferheget by elke ferbining, wat nuttich is by it omgean mei firewalls. As alternatyf kinne jo ek in willekeurich selekteare, fêste stjoerderpoarte brûke.
Under Inactive Timeout kinne jo oantsjutte nei hoefolle tiid sûnder aktiviteit op de yngongen in ferbining moat wurde sluten. In wearde fan 0 betsjut dat de ferbining iepen bliuwt oant it tsjinoerstelde einpunt it slút.
Om de útgongen ek fia binêre tagong te wikseljen, moat dit kontrolearre wurde ûnder Útgongen ynskeakelje foar Binaryx-Sockets.
UDP peer
As BINARYx UDP-Peer is selektearre as de Socket-Type, de Web-IO iepenet in ferbining mei de UDP haven ynsteld ûnder UDP lokale haven foar in ûntfange UDP datagrams.
Allegear datagrammen stjoerd troch de Web-IO gean nei it IP-adres ynfierd ûnder RemotePeer-IP op 'e UDP-poarte konfigureare as UDP-ôfstânhaven.
As der in feroaring oan de yngongen definiearre as Input-Trigger, corresponding datagrams wurde stjoerd nei de ynstelde peer op ôfstân.
Om de útgongen ek fia binêre tagong te wikseljen, moat dit kontrolearre wurde ûnder Útgongen ynskeakelje foar Binaryx-Sockets.
BINARY De IO-struktueren
Nettsjinsteande hokker BINARY Socket Type is selektearre, binne d'r in dúdlik oantal binêre struktueren (fariabele fjilden) foar kommunikaasje tusken de applikaasje en de Web-IO.
29
TCP/IP-sockets - Binêr
Sokke struktueren wurde foarsjoen foar de folgjende funksjes:
· Wachtwurd prompt en ferstjoeren · Lêze fan de yngongen · Lêze fan de yn- en útgongen · Ynstelle fan de útgongen · Lêze fan de tellers · Resetten fan de tellers · Konfigurearje cyclyske en
is in steat feroaring
automatysk
messaging
wannear
dêr
It brûkersprogramma brûkt de handige socket-ynterface (Windows: WinSock, UNIX, Linux: Berkley Sockets) foar it útwikseljen fan de gegevens yn 'e foarm fan dizze IO-struktueren mei de Web-IO en oer it netwurk fia TCP / IP.
Definysje fan de struktueren
Om de ynhâld fan in pakket ûndûbelsinnich te identifisearjen en te evaluearjen, moatte yn BINARY modus alle gegevens stjoerd wurde nei de Web-IO yn 'e foarm fan dizze IO-struktueren.
Alle struktueren begjinne mei deselde koptekst, dy't bestiet út de folgjende 4 WORDS (16-bit_Integer):
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
hege byte 2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
hege byte 4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
hege byte 6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
hege byte 8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
Start_1, Start_2 Start_1 en Start_2 binne der om redenen fan kompatibiliteit mei eardere modellen, mar se wurde net brûkt. Beide wearden binne altyd 0.
StruktTyp De wearde struct_typ identifisearret de struktuer. Sawol de PC-applikaasje as de WebIO brûke de wearde struct_typ as gegevens wurde ûntfongen om te bepalen hoe't de struktuer moat wurde evaluearre.
30
TCP/IP-sockets - Binêr
StructLength-lingte jout de totale lingte fan de struktuer yn bytes oan, dws ynklusyf de earste 4 WORDs.
1Opmerking: It folgjende jildt foar alle IO-struktueren:
In wurd komt oerien mei 16bit hiel getal. In char komt oerien mei ien byte (8bits) In lange komt oerien mei in 32bit hiel getal
Heksadesimale opmaak 0x foar de wearde
1Foar it ferstjoeren en ûntfangen fan de fariabele Low-Byte jildt earst foar alle struktuerfariabelen.
Start_1
Start_2
StructType
StructLength
7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10. 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10
00 00 00 00 01 00 08 00 lege byte
1. byte fan struktuer
hege byte 2. byte fan struktuer
low byte 3. byte fan struktuer
hege byte 4. byte fan struktuer
low byte 5. byte fan struktuer
hege byte 6. byte fan struktuer
low byte 7. byte fan struktuer
hege byte 8. byte fan struktuer
es.l
Yn it eksamples alle nûmers binne yn hex opmaak!
31
TCP/IP-sockets - Binêr
Wachtwurd beskerme tagong
Yn TCP Server modus kin binêre tagong wurde beskerme út net foech besykjen mei help fan in wachtwurd beskerming.
As wachtwurd beskerme tagong wurdt kontrolearre ûnder Kommunikaasjepaden >> Socket tagong> TCP / UDP Sockets BINARY-Modus yn it BINARYx TCP-tsjinner gebiet, is in proseduere foar oanmelden mei meardere stappen nedich.
Unautorisearre tagong besykjen
As in klant applikaasje besiket te begjinnen kommunikaasje mei de Web-IO mei help fan it wachtwurd beskerme binêre tagong, de Web-IO stjoert de struktuer AuthRequired.
De struktuer Authrequired
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
80 04 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
As de AuthRequired-struktuer wurdt ûntfongen, moat de kliïntapplikaasje begjinne mei de oanmeldproseduere.
Oanmelde proseduere
Om tagong te krijen ta de IO's mei wachtwurdbeskerming, moat de kliïntapplikaasje in kaai freegje. Dit wurdt dien troch it ferstjoeren fan de KeyRequest-struktuer.
32
TCP/IP-sockets - Binêr
De struktuer KeyRequest
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
80 02 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
Wannear't de KeyRequest struktuer wurdt ûntfongen de Web-IO genereart in maksimum 64byte lange kaai oan de Web-IO dy't ynbêde is yn 'e Key-struktuer.
De struktuer Key
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
80 03 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 4C hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 00 XX 12. byte fan struktuer
11. byte fan struktuer
10. byte fan struktuer
9. byte fan struktuer
32 bit wearde
76543210
XX 13. byte fan struktuer
1 byte
76543210
XX 14. byte fan struktuer
1 byte
76543210
XX 75. byte fan struktuer
1 byte 76543210
XX 76. byte fan struktuer
1 byte
Start_1
Wurd altyd = 0
Start_2
Wurd altyd = 0
StructType
Wurd Struktuer type
StructLength
Wurdlingte yn bytes
KeyLength
Lang Oantal KeyBytes
eins brûkt
KeyBytes
Lange byte array altyd 64 bytes, sels as de eigentlike kaai is koarter
Hoefolle bytes lang de kaai werklik is, wurdt oanjûn troch de fariabele KeyLength.
33
TCP/IP-sockets - Binêr
De struktuer Login
De kliïntapplikaasje moat no in MD5-hash generearje fan it wachtwurd dat is tawiisd foar de Web-IO en de ûntfongen kaai.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
80 01 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 28 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
76543210
XX 9. byte fan struktuer
1 byte
76543210
XX 10. byte fan struktuer
1 byte
Start_1
Wurd altyd = 0
Start_2
Wurd altyd = 0
StructType
Wurd Struktuer type
StructLength
Wurd Length
in
bytes
MD5-Hash
Lange byte array 32 bytes MD5 hash fan wachtwurd + kaai
76543210
XX 39. byte fan struktuer
1 byte 76543210
XX 40. byte fan struktuer
1 byte
De MD5 hash som wurdt stjoerd nei de Web-IO mei help fan de Login struktuer. As de Web-IO akseptearret de oanmelding, it stjoert de AuthOK-struktuer nei de kliïntapplikaasje en normale gegevensútwikseling kin begjinne.
De struktuer AuthOK
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
80 05 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
34
TCP/IP-sockets - Binêr
De struktuer AuthFail
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
80 06 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
As de oanmelding is ferkeard de Web-IO stjoert de AuthFail-struktuer en slút de TCP-ferbining.
Digitale IO-tagong mei binêre struktueren
De struktuer ReadRegister
It ferstjoeren fan dizze struktuer oan de Web-IO feroarsaket it om de status fan Inputs 0 - 11 te stjoeren nei it applikaasjeprogramma. It pakket bestiet allinich út dizze fjouwer WORDEN. Dizze struktuer wurdt brûkt troch de brûker programma en de Web-IO reagearret altyd troch it stjoeren fan de WriteRegister-struktuer.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 01 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
De struktuer WriteRegister
Dizze struktuer wurdt brûkt om te stjoeren de steat fan de yngongen of útgongen foar de Web-IO 12xDigitaal. As de applikaasje programma stjoert dizze struktuer nei de Web-IO, de WebIO stelt de útgongen yn oerienstimming mei de wearde oerbrocht yn wearde.
As de Web-IO stjoert dizze struktuer nei de brûker programma, wearde hat de wearde dy't oerienkomt mei de ynfier steat.
35
TCP/IP-sockets - Binêr
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 0C hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 01 hege byte
10. byte fan struktuer
low byte 9. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX hege byte
12. byte fan struktuer
low byte 11. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength Bedrach Wearde
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes Wurd altyd = 1 Wurd Binêr ekwivalint fan de ynfierstatus
Foar Web IO's mei relaisútgongen, in pauze fan op syn minst 200ms moat wurde waarnommen tusken twa skeakelprosessen by in útfier!
De struktuer SetBit
Dizze struktuer makket it ynstellen fan yndividuele útgongen by de Web IO. As bglample, de hiele proses status wurdt net yn kaart brocht yn de brûker programma, yndividuele útgongen kinne wurde ynsteld sûnder feroarjen de wearde fan 'e oaren. De bits 0..11 yn set_bits en wearde oerienkomme mei de oerienkommende útgongen. Dizze struktuer wurdt allinich brûkt troch it brûkersprogramma.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 09 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 0C hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX hege byte
10. byte fan struktuer
low byte 9. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX hege byte
12. byte fan struktuer
low byte 11. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength Mask Wearde
Wurd altyd = 0
Wurd altyd = 0
Wurd Struktuer type
Wurdlingte yn bytes Wurdbits dy't feroare wurde moatte = 1 Wurd Binêre ekwivalint fan de útfierstatus
Beispiel.:
set_bits = 0x0124 / wearde = 0x0104 36
TCP/IP-sockets - Binêr
Utfier 2 en Utfier 8 (útfier 0..1 telle) binne ynsteld op ON en Utfier 5 is ynsteld op OFF. Alle oare útgongen wurde net feroare.
De struktuer RegisterRequest
De brûker programma stjoert dizze struktuer nei de Web IO om de ynhâld fan yn- en útgongen yn oer te lêzenview. De Web IO reagearret altyd mei de RegisterStateert I/O-struktuer.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 21 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
De struktuer RegisterState
De Web IO brûkt dizze struktuer om de ynhâld fan 'e yn- en útgongen oer te bringen. Dizze struktuer wurdt allinnich ferstjoerd as de brûker applikaasje hat stjoerd de Register Request struktuer oan de Web IO.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 31 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 0E hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 02 hege byte
10. byte fan struktuer
low byte 9. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX hege byte
12. byte fan struktuer
low byte 11. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX hege byte
14. byte fan struktuer
low byte 13. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength DriverID InputValue OutputValue
Wurd altyd = 0
Wurd altyd = 0
Wurd Struktuer type
Wurdlingte yn bytes Wurd altyd = 2 Wurd Binêr ekwivalint fan de ynfierstatus Wurd Binêr ekwivalint fan de útfierstatus
37
TCP/IP-sockets - Binêr
De struktuer Send Mode
Dizze struktuer wurdt brûkt om oantsjutte de trigger betingsten de Web-IO 12xDigital brûkt om de status fan 'e yngongen nei it brûkersprogramma te stjoeren. D'r binne yn prinsipe trije mooglikheden, mar se kinne mei-inoar kombineare wurde:
1. De brûker programma polls de Web-IO troch it stjoeren fan de READ struktuer 2. De Web-IO stjoert de WriteRegister - struktuer mei de status fan de yngongen yn
in ynstelbere ynterval 3. De Web-IO stjoert de WriteRegister - struktuer mei de status fan de yngongen
nei in steat feroaring fan de ynstelde yngongen
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 0C hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 01 hege byte
10. byte fan struktuer
low byte 9. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX hege byte
12. byte fan struktuer
low byte 11. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength Bedrach Wearde
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes Wurd altyd = 1 Wurd Binêr ekwivalint fan de ynfierstatus
De struktuer ReadCounter
De brûker programma stjoert dizze struktuer nei de Web-IO om de tellerstatus fan in bepaalde ynfierteller te freegjen. Hokker ynfier is bedoeld wurdt stjoerd yn de fariabele counter_index. De Web-IO antwurdet altyd mei de Counter-struktuer.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 B0 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 0A hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 XX hege byte
10. byte fan struktuer
low byte 9. byte fan struktuer
16 bit wearde
38
Start_1 Start_2 StructType StructLength Counterindex
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes Wurdynfiernûmer
TCP/IP-sockets - Binêr
De struktuer ReadClearCounter
De applikaasje programma stjoert dizze struktuer nei de Web-IO om de tellerstatus fan in bepaalde ynfierteller op te freegjen en dan fuortdaliks yn te setten op teller op 0. Hokker ynfier dit giet om wurdt oerdroegen yn de fariabele counter_index. De WebIO antwurdet altyd mei de struktuer Teller.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 C0 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 0A hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 XX hege byte
10. byte fan struktuer
low byte 9. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength Counterindex
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes Wurdynfiernûmer
De struktuer Counter
Mei dizze struktuer de Web-IO stjoert de teller steat fan de ynfier counter oantsjutte yn counter_index.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 B4 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 0E hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 XX hege byte
10. byte fan struktuer
low byte 9. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 14. byte fan struktuer
13. byte fan struktuer
12. byte fan struktuer
11. byte fan struktuer
32 bit wearde
Start_1 Start_2 StructType StructLength CounterIndex CounterValue
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes Wurd Nummer des Inputs Lang Zählerwert
39
TCP/IP-sockets - Binêr
De struktuer ReadAllCounter
De brûker programma stjoert dizze struktuer nei de Web-IO om de tellersteaten oan te freegjen fan alle yngongen yn in gegevenspakket. De Web-IO antwurdet altyd mei de struktuer AllCounter.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 B1 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
De Struktuer ReadClearAllCounter
De applikaasje programma stjoert dizze struktuer nei de Web-IO om de tellerstaten fan alle yngongen yn in gegevenspakket op te freegjen en set de tellers dan fuortendaliks op 0. Web-IO antwurdet altyd mei de struktuer AllCounter.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 C1 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
40
TCP/IP-sockets - Binêr
De struktuer AllCounter
De Web-IO brûkt dizze struktuer te stjoeren de teller steaten fan alle yngongen yn ien kear.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 B5 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 0E hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 XX hege byte
10. byte fan struktuer
low byte 9. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 14. byte fan struktuer
13. byte fan struktuer
12. byte fan struktuer
11. byte fan struktuer
32 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 18. byte fan struktuer
17. byte fan struktuer
16. byte fan struktuer
15. byte fan struktuer
32 bit wearde
Start_1 Start_2 StructType StructLength CounterNoOf CounterValue1 CounterValue2
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurd Lengte yn bytes Wurd Oantal tellers Lange Tellerwearde 1 Lange Tellerwearde 2
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX XX. byte fan struktuer
XX. byte fan struktuer
XX. byte fan struktuer
XX. byte fan struktuer
32 bit wearde
CounterValuen
Lange Tellerwearde n
De struktuer ClearCounter
De brûker programma stjoert dizze struktuer nei de Web-IO te resetten de teller steat fan in bepaalde ynfier teller nei 0. Hokker ynfier is bedoeld wurdt stjoerd yn de fariabele counter_index
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 B2 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
41
TCP/IP-sockets - Binêr
De struktur Opsjes
Dizze struktuer wurdt brûkt om te setten bepaalde opsjes yn de Web IO. Foar dit doel binne 32 bits beskikber yn 'e opsjes fariabele.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
01 F0 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 10 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 00 01 12. byte fan struktuer
11. byte fan struktuer
10. byte fan struktuer
9. byte fan struktuer
32 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 16. byte fan struktuer
15. byte fan struktuer
14. byte fan struktuer
13. byte fan struktuer
32 bit wearde
Start_1 Start_2 StructType StructLength Ferzje opsjes
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
Lange op it stuit 1 Lange Binêre kodearring
Yn de hjoeddeiske ferzje fan de Web IO, allinne bit 0 fan de opsjes fariabele wurdt brûkt.
· Bit 0 = 1 //de Web IO jout de RegisterState-struktuer werom as in útfier is ynsteld. · Bit 0 = 0 //de Web IO jout gjin feedback as in útfier wurdt ynsteld.
Om de status betrouber te ûntfangen nei it ynstellen fan de útfier(s) yn 'e feedback, moat der in tiid wêze fan op syn minst 50ms tusken twa útfierferoarjende tagongen.
42
TCP/IP-sockets - Binêr
IO-struktueren foar it lêzen fan de logger-ynhâld (#57756)
De gegevens records opslein yn de Web-IO 4.0 Digital Logger kin ek lêzen wurde troch it brûken fan binêre struktueren.
Sels as jo gjin tagong wolle ta de yn- of útgongen, mar allinich de logger wolle útlêze, moat Binary1 aktivearre wurde yn 'e Web-IO-menu ûnder Kommunikaasjepaden >> Socket API >> Binary1.
De struktuer LOGGER_REQUEST
De struktuer LOGGER_REQUEST wurdt brûkt om yn earste ynstânsje de tiidperioade foar de winske gegevensrecords nei de Web-IO Digital Logger.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 High-Byte
2. Byte fan struktuer
Low-Byte 1. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 High-Byte
4. Byte fan struktuer
Low-Byte 3. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
01 E0 High-Byte
6. Byte fan struktuer
Low-Byte 5. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 14 High-Byte
8. Byte fan struktuer
Low-Byte 7. Byte fan struktuer
16 Bit Fariabele
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 12. Byte fan struktuer
11. Byte fan struktuer
10. Byte fan struktuer
9. Byte fan struktuer
32 Bit Fariabele
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 16. Byte fan struktuer
15. Byte fan struktuer
14. Byte fan struktuer
13. Byte fan struktuer
32 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0X XX High-Byte
18. Byte fan struktuer
Low-Byte 17. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0X XX High-Byte
20. Byte fan struktuer
Low-Byte 19. Byte fan struktuer
16 Bit Fariabele
Start_1 Start_2 StructType StructLength StartTiid StopTiid StartTiid ms StopTiid ms
Integer Altyd = 0 Integer Altyd = 0 Integer Strukturtype Integer Length yn bytes Lang (sekonden) fan 01.01.1970 Lang (sekonden) fan 01.01.1970 Integer Millisekonden Integer Millisekonden
De start- en stoptiden wurde oantsjutte yn sekonden fan 01.01.1970 00:00:00. Derneist kinne de ms (yn stappen fan hûndert) oant de folgjende folsleine sekonde foar beide kearen opjûn wurde.
De struktuer LOGGER_ NOACCESS
De ynhâld fan 'e gegevenslogger kin allinich troch ien eksimplaar tagelyk lêzen wurde. As in oare lêzen operaasje is al aktyf, de Web-IO Digital Logger reagearret mei de LOGGER_NOACCESS-struktuer.
43
TCP/IP-sockets - Binêr
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 High-Byte
2. Byte fan struktuer
Low-Byte 1. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 High-Byte
4. Byte fan struktuer
Low-Byte 3. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
01 E3 High-Byte
6. Byte fan struktuer
Low-Byte 5. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 High-Byte
8. Byte fan struktuer
Low-Byte 7. Byte fan struktuer
16 Bit Fariabele
Start_1 Start_2 StructType StructLength
Integer Altyd = 0 Integer Altyd = 0 Integer Struktur type Integer Length yn Bytes
Yn dit gefal moat de ferbining beëinige wurde en moat tagong ta de logger opnij besocht wurde op in letter momint.
De struktuer LOGGER_CHECK
As tagong ta de logger wurdt net tawiisd, wurdt de struktuer LOGGER_REQUEST beantwurde troch de Web-IO Digital Logger mei de struktuer LOGGER_CHECK.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 High-Byte
2. Byte fan struktuer
Low-Byte 1. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 High-Byte
4. Byte fan struktuer
Low-Byte 3. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
01 E1 High-Byte
6. Byte fan struktuer
Low-Byte 5. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 14 High-Byte
8. Byte fan struktuer
Low-Byte 7. Byte fan struktuer
16 Bit Fariabele
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 12. Byte fan struktuer
11. Byte fan struktuer
10. Byte fan struktuer
9. Byte fan struktuer
32 Bit Fariabele
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 16. Byte fan struktuer
15. Byte fan struktuer
14. Byte fan struktuer
13. Byte fan struktuer
32 Bit Fariabele
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 20. Byte fan struktuer
19. Byte fan struktuer
18. Byte fan struktuer
17. Byte fan struktuer
32 Bit Fariabele
Start_1 Start_2 StructType StructLength LoggerState MemSize Memprogress
Ynteger Altyd = 0 Ynteger Altyd = 0 Integer Struktur Integer Lengte yn Bytes Lang Kontrolearje steat Lang Unthâldgrutte Lange sykaksje
De Web-IO Digital Logger moat earst kontrolearje hoefolle gegevens records wurde opslein foar de winske tiid perioade. Dit kin wat tiid duorje ôfhinklik fan it ûnthâldgebrûk en de grutte fan 'e tiidperioade. Om de applikaasje te ynformearjen oer de aktuele status fan it sykjen fan gegevensset, de Web-IO Digital Logger jout de oerienkommende ynformaasje mei de LOGGER_CHECK struktuer.
· D'r binne 4 steaten foar LoggerState:
0 = Gjin sykaksje aktyf (noch)
44
TCP/IP-sockets - Binêr
1 = Inisjalisaasje fan it sykproses 2 = Laad in ûnthâldgebiet dat moat wurde trochsocht 3 = Erkenning fan de gegevensrecords 4 = Evaluaasje foltôge
· Yn MemSize de Web-IO Digital Logger jout de totale grutte fan it ûnthâld te skansearjen yn bytes.
· De parameter MemProgress jout oan hoe fier't it sykjen fuortgien is.
Salang't de weromwearde foar logger_state net gelyk is oan 4, moat de applikaasje reagearje mei de LOGGER_CHECK-struktuer, wêrby't LoggerState, MemSize en MemProgress op 0 ynsteld binne.
LOGGER_CHECK-struktueren wurde útwiksele oant LoggerState de wearde 4 hat.
De struktuer LOGGER_DATAREQUEST
Nei't de LOGGER_CHECK-struktuer is ûntfongen mei LoggerState = 4, kinne de gegevensrecords oanfrege wurde.
Dit wurdt dien troch in stjoeren fan in EADriver struktuer mei struktuer type 0x01E2 út de applikaasje nei de Web-IO Digital Logger.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 High-Byte
2. Byte fan struktuer
Low-Byte 1. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 High-Byte
4. Byte fan struktuer
Low-Byte 3. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
01 E2 High-Byte
6. Byte fan struktuer
Low-Byte 5. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 High-Byte
8. Byte fan struktuer
Low-Byte 7. Byte fan struktuer
16 Bit Fariabele
Start_1 Start_2 StructType StructLength
Integer Altyd = 0 Integer Altyd = 0 Integer Struktur type Integer Length yn Bytes
De struktuer LOGGER_DATASET
De Web-IO Digital Logger begjint de gegevenssets te ferstjoeren nei ûntfangst fan de LOGER_ DATAREQUEST-struktuer. Eltse yndividuele gegevens set beskikber foar de winske tiid perioade wurdt ferstjoerd binnen in LOGGER_DATASET struktuer.
45
TCP/IP-sockets - Binêr
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 High-Byte
2. Byte fan struktuer
Low-Byte 1. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 High-Byte
4. Byte fan struktuer
Low-Byte 3. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
01 E2 High-Byte
6. Byte fan struktuer
Low-Byte 5. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 88 High-Byte
8. Byte fan struktuer
Low-Byte 7. Byte fan struktuer
16 Bit Fariabele
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 12. Byte fan struktuer
11. Byte fan struktuer
10. Byte fan struktuer
9. Byte fan struktuer
32 Bit Fariabele
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 16. Byte fan struktuer
15. Byte fan struktuer
14. Byte fan struktuer
13. Byte fan struktuer
32 Bit Fariabele
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 20. Byte fan struktuer
19. Byte fan struktuer
18. Byte fan struktuer
17. Byte fan struktuer
32 Bit Fariabele
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 24. Byte fan struktuer
23. Byte fan struktuer
22. Byte fan struktuer
21. Byte fan struktuer
32 bit fariabele 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX High-Byte
26. Byte fan struktuer
Low-Byte 25. Byte fan struktuer
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX High-Byte
28. Byte fan struktuer
Low-Byte 27. Byte fan struktuer
16 Bit Fariabele
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 32. Byte fan struktuer
31. Byte fan struktuer
30. Byte fan struktuer
29. Byte fan struktuer
32-bit fariabele 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 36. Byte fan struktuer
35. Byte fan struktuer
34. Byte fan struktuer
33. Byte fan struktuer
32 Bit Fariabele
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 48. Byte fan struktuer
47. Byte fan struktuer
46. Byte fan struktuer
45. Byte fan struktuer
32 Bit Fariabele
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 52. Byte fan struktuer
51. Byte fan struktuer
50. Byte fan struktuer
49. Byte fan struktuer
32 Bit Fariabele
………………………
Start_1 Start_2 StructType StructLength MaxCount ProcessCount TimeStamp TiidStamp ms Outputs Inputs Reserve Alarms1-30 Counter0 Counter1
Integer Altyd = 0 Integer Altyd = 0 Integer Struktur type Integer Length yn Bytes Long Qty. fan gegevenssets Lang Aktuele gegevenssets Lang (sekonden) ab 01.01.1970 Lang + Millisekonden Integer Utfierbitpatroan Integer Ynfierbitpatroan Lang net brûkt Lang Alarmbitpatroan Lange Tellerwearde Lang Tellerwearde
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 104. Byte d. Struktur
103. Byte d. Struktur
102. Byte d. Struktur
101. Byte d. Struktur
32 Bit Fariabele
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 108. Byte d. Struktur
107. Byte d. Struktur
106. Byte d. Struktur
105. Byte d. Struktur
32 Bit Fariabele
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 112. Byte d. Struktur
111. Byte d. Struktur
110. Byte d. Struktur
109. Byte d. Struktur
32 Bit Fariabele
………………………
Counter14 Counter15 ErrorCounter0
Lange Tellerwearde Lange Tellerwearde Lange Bidireksjoneel Telfouten
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 138. Byte d. Struktur
137. Byte d. Struktur
136. Byte d. Struktur
135. Byte d. Struktur
32 Bit Fariabele
ErrorCounter7
Lange Bidirectional Counting flaters
· De parameter MaxCount lit it totale oantal gegevensrecords sjen, wylst ProcessCount sjen lit hokker gegevensrecord op it stuit wurdt oerdroegen.
· Elts gegevens record befettet de passende tiid stamp mei TimeStamp (sekonden fan 01.01.1970 00:00:00) en TimeStamp ms (millisekonden).
· De binêre status fan 'e yn- en útgongen wurdt oerdroegen yn' e yn- en útfierfjilden.
46
TCP/IP-sockets - Binêr
· De alarmstatus wurdt sinjalearre yn 'e earste oerienkommende bits fan Alarms. · De struktuer befettet de 16-fold counter array foar de tellerlêzingen. · Yn it gefal dat de bidirectionele teller modus wurdt brûkt en rjochtingsdeteksje
wie net dúdlik mooglik, de tellen flaters wurde ferhege yn de 8-fold ErrorCounter array. · De Web-IO Digital Logger stjoert alle gegevens records foar de selektearre tiid perioade sûnder in nij fersyk fan de applikaasje kant. Dit proses kin net stoppe wurde.
De krekte proseduere foar it útlêzen fan de logger wurdt dúdlik yllustrearre yn it folgjende streamdiagram.
Ferbine mei de logger
Stjoer nei logger: LOGGER_REQUEST
Untfang struktuer fan Logger
Stjoer nei logger: LOGGER_DATASET
Untfang struktuer fan Logger
Ja
Untfongen struktuer
LOGGER_NOACCESS?
Nee
Stjoer nei logger: LOGGER_CHECK
Untfang fan Logger LOGGER_CHECK
Untfongen struktuer
Nee
LOGGER_DATASET?
(1 fan n)
Ja
LOGGER_DATASET 2 fan n ûntfongen
gjin LoggerState = 4?
Ja
LOGGER_DATASET n fan n empfangen
Verbindung zum Logger trennen
47
TCP/IP-sockets - Binêr
Analoge I / O tagong mei binêre struktueren
De struktuer ReadRegister
It ferstjoeren fan dizze struktuer oan de Web-IO soarget foar it stjoeren fan de status fan de havens nei de brûker programma.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 01 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
It pakket bestiet allinich út dizze fjouwer WORDS. Dizze struktuer wurdt allinnich brûkt troch de brûker programma en de Web-IO reagearret altyd troch it stjoeren fan de struktuer AnalogRegisterState.
De IO-struktuer AnalogRegisterState
De Web-IO Analog-In / Out stjoert de status fan beide havens mei dizze struktuer. Dizze struktuer wurdt ferstjoerd as de brûker programma hat stjoerd de ReadRegister struktuer nei de Web-IO, of as in útfierwearde is ynsteld mei dizze struktuer.
Dizze struktuer tsjinnet ek om de útfierwearden fan 'e yn te stellen havens oer te dragen. As de brûker programma stjoert dizze struktuer nei de Web-IO, de Web-IO stelt de útgongen yn neffens de wearde oerdroegen yn Port 1 en Port 2.
Hjir wurdt de wearde net oerdroegen yn 'e konfigureare ienheid, mar altyd yn 1/100,000 fan' e maksimale wearde. In útfierwearde fan 15.4mA moat wurde oerdroegen as 77000 of 0x012CC8.
As de Web-IO stjoert dizze struktuer nei de brûker programma, haven 1 en haven 2 hawwe de wearde oerienkommende mei de ynfier status.
48
TCP/IP-sockets - Binêr
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
01 B8 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 14 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 00 02 12. byte fan struktuer
11. byte fan struktuer
10. byte fan struktuer
9. byte fan struktuer
32 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 0X XX XX 16. byte fan struktuer
15. byte fan struktuer
14. byte fan struktuer
13. byte fan struktuer
32 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 0X XX XX 20. byte fan struktuer
19. byte fan struktuer
18. byte fan struktuer
17. byte fan struktuer
32 bit wearde
Start_1 Start_2 StructType StructLength Bedrach Port1Wearde Port2Wearde
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes Lang altyd 2 Lange wearde yn 1/100.000 Lange wearde yn 1/100.000
De struktuer AnalogSingleRegister
Dizze struktuer wurdt brûkt om de útfierwearde fan in inkele poarte oer te stjoeren Web-IO Analog-In/Out (Poarte 1 = 0, Poarte 2 = 1). De proseduere is itselde as foar AnalogRegisterState.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
01 BB hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 14 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 00 01 12. byte fan struktuer
11. byte fan struktuer
10. byte fan struktuer
9. byte fan struktuer
32 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 00 0X 16. byte fan struktuer
15. byte fan struktuer
14. byte fan struktuer
13. byte fan struktuer
32 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 0X XX XX 20. byte fan struktuer
19. byte fan struktuer
18. byte fan struktuer
17. byte fan struktuer
32 bit wearde
Start_1 Start_2 StructType StructLength Bedrach Channel PortValue
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
Lang altyd 1 Lang Chanel nr. (0 / 1) Lange wearde yn 1/100.000
49
TCP/IP-sockets - Binêr
De IO-struktuer Send Mode
Dizze struktuer definiearret de trigger betingsten wêrmei de Web-IO Analog-In/Out stjoert de status fan de havens nei de brûker programma. De trigger kin ynsteld wurde foar statusferoarings fan beide havens. De respektivelike hysteresis foar de trekker moat ynsteld wurde yn 'e web konfiguraasje.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 10 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 0C hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 0X hege byte
10. byte fan struktuer
low byte 9. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX hege byte
12. byte fan struktuer
low byte 11. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength Mask Interval
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes Wurdbits foar ynfiertrigger = 1 wurdynterval yn 100ms foar oerdracht fan de
De folgjende kombinaasjes kinne wurde konfigureare as fariabele maskers:
0x0000 0x0001 0x0002 0x0003
Poort 1
út oan út oan
Poort 2
ôf oan oan
50
TCP/IP-sockets - Binêr
De IO struktuer Opsjes
Dizze struktuer wurdt brûkt om te setten bepaalde opsjes yn de Web-IO. Foar dit doel binne 32 bits beskikber yn 'e fariabele opsjes.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 High-Byte
2. Byte der Struktur
Low-Byte 1. Byte der Struktur
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 High-Byte
4. Byte der Struktur
Low-Byte 3. Byte der Struktur
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
01 F0 High-Byte
6. Byte der Struktur
Low-Byte 5. Byte der Struktur
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 10 High-Byte
8. Byte der Struktur
Low-Byte 7. Byte der Struktur
16 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 00 01 12. Byte der Struktur
11. Byte der Struktur
10. Byte der Struktur
9. Byte der Struktur
32 Bit Fariabele
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 16. Byte der Struktur
15. Byte der Struktur
14. Byte der Struktur
13. Byte der Struktur
32 Bit Fariabele
Start_1 Start_2 StructType StructLength Ferzje opsjes
Integer Immer = 0 Integer Immer = 0 Integer Strukturtype Integer Länge yn Bytes Lange Ferzje z.Zt. 1 Lange Binäre Kodierung
In der vorliegenden Version des Web-IO wird nur das Bit 0 der Variablen opsjes verwendet.
· Bit 0 = 1 //das Web-IO stjoert de AnalogRegisterState Struktur zurück, wenn in Output setzt wird.
· Bit 0 = 0 //das Web-IO gibt bei Setzen eines Output keine Rückmeldung.
Um in der Rückmeldung zuverlässig den Zustand nach Setzen des/der Output(s) zu bekommen, sollte zwischen zwei Output-verändernden Zugriffen min. eine Zeit 50ms liegen.
51
TCP/IP-sockets - Binêr
Apparaatstatus fia binêre struktueren
De struktuer ReadDiagnosis
As de Web-IO bepaalt dat der in kommunikaasje- of systeemflater is, de lêste stiet op 'e HTML-side diag en kin lêzen wurde mei de browser. Sûnt flater behear fia blêder foar programma-kontrolearre applikaasjes is net altyd beskikber, de flater status fan de Web-IO kin wurde frege mei de struktuer ReadDiagnosis
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 D1 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
De Web-IO antwurden mei in Diagnosis type struktuer.
De struktuer Diagnosis
De Web-IO antwurdet op 'e ReadDiagnosis-struktuer mei in struktuer fan it Diagnosis-type.
52
TCP/IP-sockets - Binêr
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 D0 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 1C hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 00 04 12. byte fan struktuer
11. byte fan struktuer
10. byte fan struktuer
9. byte fan struktuer
32 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 00 XX 16. byte fan struktuer
15. byte fan struktuer
14. byte fan struktuer
13. byte fan struktuer
32 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 20. byte fan struktuer
19. byte fan struktuer
18. byte fan struktuer
17. byte fan struktuer
32 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 24. byte fan struktuer
23. byte fan struktuer
22. byte fan struktuer
21. byte fan struktuer
32 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX XX XX XX 28. byte fan struktuer
27. byte fan struktuer
26. byte fan struktuer
25. byte fan struktuer
32 bit wearde
Start_1
Wurd altyd = 0
Start_2
Wurd altyd = 0
StructType
Wurd Struktuer type
StructLength
Wurdlingte yn bytes
Ferzje
Lang op it stuit = 4
ErrorCount Errorbits1
Lang aktueel flaternûmer Lange binêre flaterkodearring
Errorbits2 Errorbits3
Lange binêre flaterkodearring Lange binêre flaterkodearring
De fariabele diag_error_count jout werom hoefolle ferskate flaters op it stuit yn it flaterûnthâld binne. De Web-IO ûnderskiedt in totaal fan maksimaal 64 ferskillende flater sates, wêrby't elk set bit fan de twa fariabelen diag_errrorbits0 en diag_errorbits1 stiet foar in flater type.
De krekte tekst beskriuwing kin krigen wurde op TCP Port 80. Foar in mear detaillearre beskriuwing, sjoch de seksje oer socket programmearring mei kommando stringen.
De struktuer ClearDiagnosis
Dizze struktuer wisket de flater ûnthâld fan de Web-IO.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 D2 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
53
TCP/IP-sockets - Binêr
Apparaatfunksjes fia binêre struktuer
De struktuer InventoryRequest
Om query de IO apparatuer fan de Web IO, de InventoryRequest struktuer wurdt stjoerd nei de Web IO.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 F1 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 08 hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
Start_1 Start_2 StructType StructLength
Wurd altyd = 0 Wurd altyd = 0 Wurdstruktuertype Wurdlingte yn bytes
de struktuer Ynventarisaasje
As de Web IO ûntfangt de InventoryRequest-struktuer, it reagearret mei de Inventory-struktuer.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
2. byte fan struktuer
low byte 1. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 00 hege byte
4. byte fan struktuer
low byte 3. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 F2 hege byte
6. byte fan struktuer
low byte 5. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 XX hege byte
8. byte fan struktuer
low byte 7. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 XX hege byte
10. byte fan struktuer
low byte 9. byte fan struktuer
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 XX hege byte
12. byte fan struktuer
low byte 11. byte fan struktuer
16 bit wearde
Start_1
Wurd altyd = 0
Start_2
Wurd altyd = 0
StructType
Wurd Struktuer type
StructLength
Wurdlingte yn bytes
Tal
Wurd Oantal IO modus yngongen
IO-modus
Wurd hege byte = IO-kanaal nr. low byte = IO kanaal modus
15 14 13 12 11 10 9 8 7 6 5 4 3
hege byte 12+n*2 Byte
XX low byte 11+n*2 byte fan
16 bit wearde
210
XX
Yn de Bedrach fariabele, de Web IO jout oan hoefolle IO-modus-yngongen de struktuer befettet.
54
TCP/IP-sockets - Binêr
Elke yngong bestiet út it kanaalnûmer as in hege byte en de beskikbere IO-modus as in lege byte. As mear as ien wearde of steat kin wurde ophelle út in IO kanaal, der is in yngong foar eltse opheljen parameter (bgl. foar digitale ynfier, ien yngong foar de ynfier steat en in oar foar de teller wearde). IO-kanaalmodus De IO-modi binne as folget nûmere: 1 analoge yngong (4..20mA of 0..10V) 2 digitale yngong 3 digitale útfier (lês- en skriuwtagong) 4 teller 5 digitale útfier (allinich lêze tagong) 6 analoge útfier IO-kanaal nee It IO-kanaalnûmer komt oerien mei de yndeksearring fan de yndividuele yn- of útgongen. Ofhinklik fan it IO-type kin de yndeksearring begjinne by 0 (bgl Web IO's) of 1 (bygelyks foar analoog Web IO's)
55
HTTP-fersyk
HTTP-fersyk
Neist de klassike socket tagong, de Web-IO kin ek direkt oanpakt wurde fia de HTTP-tagong troch HTTP-oanfragen
Dizze tagong is útskeakele yn fabrieksstanderts en moat aktivearre wurde yn 'e menubeam by Kommunikaasjepaden >> Web-API.
Dêrneist, de Web-IO biedt de opsje fan it uploaden en bewarjen fan jo eigen, selsprogrammearre webside ûnder fisualisaasjes >> Myn website. Dyn eigen website is te berikken fia de menubeam ûnder Myn Website of de namme dy't jo hawwe jûn. Mar der is ek in direkte oprop fia de URL mooglik:
http:// Web-IO> / brûker
Stipe oanfragen (kommando's)
De folgjende list lit alle stipe HTTP-oanfragen sjen
Fierdere details oer tagong mei help web techniken lykas AJAX of PHP kinne fûn wurde op 'e folgjende siden.
Web-IO Digital Kommandos
/ynputx
Parameter
?PW=wachtwurd& It administrator- of brûkerswachtwurd moat brûkt wurde ynstee fan wachtwurd. As der gjin wachtwurd is tawiisd, wurdt PW=& ynfierd. (jildt foar alle kommando's!)
Beskribung
Ynfierstatusfersyk x spesifisearret opsjoneel it nr. fan de ynfier en kin wêze tusken 0 en 16 ôfhinklik fan it model. De feedback fan de Web IO is in tekenrige dy't begjint mei inputx; folge troch de ynfierstatus: ON = sinjaal by de yngong en OFF = gjin sinjaal by de yngong As x folslein weilitten is, sil de Web IO jout in bit patroan oerienkomt mei de ynfier sinjalen yn heksadesimale notaasje.
56
Kommandos
/counterx /counter /outputx
/útfier tagongx
/counterclearx
HTTP-fersyk
Parameter
Beskribung
?PW=wachtwurd&
Tellerweardefersyk x kin in wearde wêze tusken 0-11 en jout de ynfier oan. De feedback fan de Web IO is in tekenrige dy't begjint mei counterx;. De tellerwearde fan de selektearre teller wurdt taheakke yn desimale notaasje.
?PW=wachtwurd&
It oanfreegjen fan alle teller wearden De feedback fan de Web IO is in tekenrige begjint mei teller;. De tellerwearden wurde tafoege yn desimale notaasje skieden troch puntkomma's.
?PW=wachtwurd&
Utfier status fersyk
x spesifisearret opsjoneel it nûmer fan 'e útfier en kin wêze tusken 0 en 16 ôfhinklik fan it model. De feedback fan de Web IO is in tekenrige dy't begjint mei outputx; folge troch de útfierstatus: ON = sinjaal by de útgong en OFF = gjin sinjaal by de útfier As x folslein weilitten wurdt, sil de Web IO jout in bit patroan oerienkomt mei de útfier sinjalen yn heksadesimale notaasje.
?PW=wachtwurd& [Mask=XXXX&] State=ON/OFF/YYYY& [NA=ON&] ON: Utfier = 1, OFF: Utfier = 0, TOGGLE: Feroaring fan steat XXXX: Hexwearde tusken 0000 en 0FFF neffens de bits dy't ynsteld wurde YYYY: Hex-wearde tusken 0000 en 0FFF neffens it útfierbitpatroan.
Stel ien of mear útgongen x kin in wearde wêze tusken 0-11 en spec-
jout de yn te stellen útfier. De feedback fan de Web IO is in tekenrige dy't begjint mei ,,útfier;" folge troch in bit patroan oerienkomt mei de útfier sinjalen yn heksadesimale notaasje.
De spesifikaasje fan Mask is opsjoneel. As Mask net ferstjoerd wurdt, jildt it kommando outputaccess foar alle útgongen. Mei NA = ON is it opsjoneel berikt dat gjin antwurd op de outputaccess kommando wurdt stjoerd troch de Web IO.
?PW=wachtwurd& [Set=wearde&] wearde: Tellerfoarinstelling, wearde tusken 0 en 2 miljard
Stelt de teller wearde fan in teller. As de Set parameter wurdt net ferstjoerd, de standert is 0. x kin wêze in wearde tusken 0-11 en spesifisearret de ynfier waans teller moat wurde reset. It antwurd fan de Web IO is in tekenrige dy't begjint mei counterx;. De nije teller fan de selektearre teller wurdt taheakke yn desimale notaasje. As x net oantsjutte is, wurde alle tellers ynsteld.
57
HTTP-fersyk
Kommandos
/útwreide
/tiid /settiid /diagnoaze
/diagnoazex
/diaglistx /diagclear /errorclear
Parameter
?PW=wachtwurd&
?PW=wachtwurd& ?PW=wachtwurd& tiid=DD.MM.JJJJ, hh:mm:ss& ?PW=wachtwurd&
?PW=wachtwurd&
?PW=wachtwurd& ?PW=wachtwurd& ?PW=wachtwurd&
Beskribung
Kollektive fersyk fan de ynfier, útfier steaten en alle teller wearden. De Web IO reagearret mei in tekenrige fan de folgjende struktuer: input;0xxx;útfier;0xxx;teller;n0;n1;n2,... 0xxx komt oerien mei de status fan de yn- of útgongen yn heksadesimale notaasje. n0,n1 ensfh befetsje de teller steaten yn desimale notaasje.
Jout it systeem tiid fan de Web IO. Formaat: DD.MM.JJJJ, uu:mm:ss D=Dei, M=Moanne, Y=Jier, h=Oere, m=Minút, s=Twadde
Stelt it systeem tiid fan de Web IO nei de wearde trochjûn mei de tiid.
Fersiket de status fan it diagnostyske ûnthâld. De Web IO jout: diagnoaze;0000;00000000; 00000000;00000000 de fjouwer-siferwearde jout it oantal opsleine berjochten oan. Mei de trije acht-sifers heksadesimale wearden fertsjintwurdiget elke set bit ien fan de 92 mooglike berjochten.
Mei x wurdt de yndeks foar ien fan de op it stuit opsleine berjochten oantsjutte. De Web IO stjoert de korrespondearjende berjochttekst as werom. x moat net grutter wêze as it oantal op it stuit oanwêzich berjochten.
Jout de berjochten werom foar de yndividuele berjochtbits (maks. 92)
Wist berjocht ûnthâld
Wiist laden flaters en makket de troffen útgongen frij.
58
HTTP-fersyk
Web-IO Analog Kommandos
/singel
/outputx /útfieraccessx
/tiid /settiid /diagnoaze
/diagnosisx /diaglistx /diagclear
Parameter
keine
keine ?PW=wachtwurd& State=N,NNN& N,NNN: Strom- bzw. Spannungswert der am entsprechenden output eingestellt wurde soll
?PW=wachtwurd&
?PW=wachtwurd& tiid=DD.MM.JJJJ, hh:mm:ss& ?PW=wachtwurd&
?PW=wachtwurd&
?PW=wachtwurd& ?PW=wachtwurd&
Beskribung
Fersyk foar de aktuele stroom of voltage wearden yn mA of V. x jout opsjoneel it nee. fan de IO kanaal en kin wêze 1 of 2. De feedback fan de Web-IO is in tekenrige dy't de wearde toant mei trije desimale plakken en ienheid [N]N.NNN mA of [N] N.NNN V As x folslein weilitten wurdt, sil de Web IO jout de wearden fan beide kanalen skieden troch puntkomma's.
jout itselde resultaat as GET / singlelex (sels as IO-kanalen as ynfier wurkje)
It ynstellen fan in útfier x kin 1 of 2 wêze en jout de yn te stellen útfier oan. De feedback fan de Web IO is in tekenrige yn it formaat [N]N.NNN mA of [N] N.NNN V. en jout de aktuele wearde oan. Tink derom dat de Web IO hat in pear ms nedich om de winske wearde yn te stellen. Dêrom komt de wearde net oerien mei de winske wearde.
Jout it systeem tiid fan de Web IO. Formaat: DD.MM.JJJJ, uu:mm:ss D=Dei, M=Moanne, Y=Jier, h=Oere, m=Minút, s=Twadde
Stelt it systeem tiid fan de Web IO nei de wearde trochjûn mei de tiid.
Fersiket de status fan it diagnostyske ûnthâld. De Web IO jout: diagnoaze;0000;00000000; 00000000;00000000 de fjouwer-siferwearde jout it oantal opsleine berjochten oan. Mei de trije acht-sifers heksadesimale wearden fertsjintwurdiget elke set bit ien fan de 92 mooglike berjochten.
Mei x wurdt de yndeks foar ien fan de op it stuit opsleine berjochten oantsjutte. De Web IO stjoert de korrespondearjende berjochttekst as werom. x moat net grutter wêze as it oantal op it stuit oanwêzich berjochten.
Jout de berjochten werom foar de yndividuele berjochtbits (maks. 92)
Wist berjocht ûnthâld
59
HTTP-fersyk
Web-IO Klima (Web-Termometer, ...) en VOC
Kommandos
Parameter
Beskribung
/singel
keine
Oanfraach foar de aktuele klimaatgegevens x jout opsjoneel it nr. fan de sensor. De feedback fan de Web-thermometer is in tekenrige dy't de wearde toant mei ien desimale sifer en ienheid
24,0 ° C As x wurdt weilitten hielendal, de Web IO jout de wearden fan beide kanalen skieden troch puntkomma's.
/tiid
?PW=wachtwurd&
Jout it systeem tiid fan de Web IO. Formaat: DD.MM.JJJJ, uu:mm:ss D=Dei, M=Moanne, Y=Jier, h=Oere, m=Minút, s=Twadde
/settiid
?PW=wachtwurd& tiid=DD.MM.JJJJ,
hh:mm:ss&
Stelt it systeem tiid fan de Web IO nei de wearde trochjûn mei de tiid.
/diagnoaze
?PW=wachtwurd&
Fersiket de status fan it diagnostyske ûnthâld. De Web IO jout werom:
diagnosis;0000;00000000; 00000000;00000000 de fjouwer-siferwearde jout it oantal opsleine berjochten oan. Mei de trije acht-sifers heksadesimale wearden fertsjintwurdiget elke set bit ien fan de 92 mooglike berjochten.
/diagnoazex
?PW=wachtwurd&
Mei x, de yndeks foar ien fan de op dit stuit
opsleine berjochten wurdt oantsjutte. De Web IO stjoert de korrespondearjende berjochttekst as werom. x moat net grutter wêze as it oantal op it stuit oanwêzich berjochten.
/diaglistx
?PW=wachtwurd&
Jout de berjochten werom foar de yndividuele berjochtbits (maks. 92)
/diagclear
?PW=wachtwurd&
Wist berjocht ûnthâld
60
HTTP-fersyk
In eksample foar gebrûk fan HTTP-oanfragen
De folgjende eksample lit sjen hoe't jo kinne konstruearje in sels-ferfrissend Web side foar de Web-IO mei help fan JavaScript en
HTML - struktuer fan in statyske web side
HTTP-oanfragen (AJAX). Earst de suver HTML seksje fan 'e Web side, dy't yn essinsje tsjinnet as in displaybasis foar AJAX:
Web-IO Digital, Brûker
* { font-family: arial; } tabel { font-size:14px; } .borderLeft { border-left:1px solid #000000; } .button {font-size:9px; breedte: 40px; } .ce { text-align:center; } .beskriuwing {font-size:18px; text-align:center; } .info {font-size:10px; text-align:center; } .italic { font-style:kursyf; } .namme {font-size:20px; font-weight:bold; text-align:center } .sideSpace { padding-left:5px; padding-rjochts: 5px; } .table { eftergrûnkleur:#d6e8ff; grins-ynstoarten: ynstoarten;
grins: 1px bêst # 000000; } .whiteBack { background-color:#ffffff; }
dit is eins de JavaScript-seksje fan 'e side, dy't hjirûnder yn mear detail beskreaun wurdt.
tags=apparaatnamme>tags=apparaat_tekst>
Wachtwurd:
Ynputen
61
HTTP-fersyk
Steat Loket Opklearje Útgongen Steat Omskeakeljetags=ynfier0> - -
tags=útfier0> -
tags=ynfier1> - -
tags=útfier1> -
Hjir is hoe't dit derút sjocht yn 'e browser:
62
HTTP-fersyk
JavaScript en AJAX - Feroarje ynhâld dynamysk
De hjirûnder werjûn funksjes binne basearre op twa basistechniken:
· Identifikaasje en letter wizigjen fan in HTML-objekt mei in unike ID · Kommunikaasje mei de tsjinner (Web-IO) nei it laden fan de Web side mei help fan
HTTP fersiken
De JavaScript dy't diel útmakket fan 'e Web side brûkt dizze beide techniken.
Earste maxi en maxo wurde brûkt om te bepalen hoefolle yn- en útgongen moatte wurde stipe. In fariabele applikaasjestap is definiearre foar de ferskate programmastappen. 500ms wurdt oantsjutte as it fersyk ynterval, en in fariabele wurdt ynfierd foar it wachtwurd.
var maxi = 2; var maxo = 2; var applikaasjestap = 0; var ynterval = 500; var iopassword = ,`;
De funksje HextoInt berekkent heksadesimale stringen oant desimale wearden.
function HexToInt(HexStr) { var TempVal;
var HexVal=0; foar(var i=0; i 57)
{ TempVal = HexStr.charCodeAt(i) – 55; } oars { TempVal = HexStr.charCodeAt(i) – 48; } HexVal=HexVal+TempVal*Math.pow(16, HexStr.length-i-1); } werom HexVal; }
De funksje CommandLoop kombinearret de HTTP-oanfragen en stjoert se nei de DataRequest-funksje.
function CommandLoop() { var commandstring =”;
applikaasjestap++; switch (applikaasjestap) { gefal 1:
commandstring = `ynput?PW=' + iopassword + `&'; brekke; gefal 2:
commandstring = `útfier?PW=' + iopassword + `&';
63
HTTP-fersyk
brekke; gefal 3:
commandstring = `counter?PW=' + iopassword + `&'; applikaasjestap = 0; brekke; } DataRequest(commandstring); maintimer = setTimeout(“CommandLoop()”, ynterval); }
De funksje DataRequest is it hert fan dit JavaScript. It ûntfangt it HTTP-fersyk en stjoert it nei de tsjinner (Web-IO). De funksje DataRequest ûntfangt ek it antwurd fan 'e Web-IO en stjoert it nei de updateDisplay-funksje.
funksje DataRequest(SendString)
{ var xmlHttp;
if( finster.ActiveXObject)
// Internet Explorer
{ xmlHttp = new ActiveXObject(Microsoft.XMLHTTP”);
}
else if(window.XMLHttpRequest ) // Mozilla, Opera en Safari
{ xmlHttp = new XMLHttpRequest();
}
as (xmlHttp)
{ xmlHttp.onreadystatechange = function()
{ if (xmlHttp.readyState == 4)
{ if (xmlHttp.status == 200)
{ if (xmlHttp.responseText.length > 0)
{ updateDisplay(xmlHttp.responseText);
}
xmlHttp=nul;
}
}
}
xmlHttp.open(“GET”, SendString, true);
xmlHttp.setRequestHeader(“Ferbining”, “slute”);
xmlHttp.setRequestHeader(“If-Modified-Since”, “Thu, 1 Jan 1970
00:00:00 GMT");
xmlHttp.send(null);
}
}
De funksje updateDisplay evaluearret it antwurd fan 'e Web-IO en oerienkommende past de browser werjefte. Der wurdt kontrolearre oft de Web-IO antwurd ferwiist nei yngongen, útgongen of tellers. JavaSkript brûkt document.getElementById(ID) om de objekten te identifisearjen foar feroaring en past har eigenskippen oan oan 'e werklike IO-status
function updateDisplay(ReceiveStr) { var HexVal;
var steat; var ReceiveData = ReceiveStr.split(`;') // Display Input state if (ReceiveData[ReceiveData.length – 2].substring(0, 1) == `i') { HexVal = HexToInt(ReceiveData[ReceiveData.length – 1]);
64
HTTP-fersyk
foar (var i = 0; i < 2; i++)
{ state = false;
if ((HexVal & Math.pow(2, i)) == Math.pow(2, i))
{ steat = wier;
}
document.getElementById(`input'+i).firstChild.data =(!state) ?
`OFF':'ON';
document.getElementById(`input'+i).style.color
=(!state)? `#000000′ : `#006600′;
document.getElementById(`input'+i).style.fontWeight
=(!state)? `normaal': `fet';
}
}
// Display Utfier steat
if (ReceiveData[ReceiveData.length – 2].substring(0, 1) == `o')
{ HexVal = HexToInt(ReceiveData[ReceiveData.length – 1]);
foar (var i = 0; i < 2; i++)
{ state = false;
if ((HexVal & Math.pow(2, i)) == Math.pow(2, i))
{ steat = wier;
}
document.getElementById(`output'+i).firstChild.data = (!state) ?
`OFF': `ON';
document.getElementById(`output'+i).style.color
=(!state)? `#000000′ : `#006600′;
document.getElementById(`output'+i).style.fontWeight
=(!state)? `normaal': `fet';
}
}
// Display Counter
if (ReceiveData.length – maxi – 1 >= 0)
{ if (ReceiveData[ReceiveData.length – maxi – 1].substring(0, 1) == `c')
{ foar (var i = 0; i < maxi; i++)
{ document.getElementById(`counter' + i).innerHTML
= ReceiveData[ReceiveData.length – maxi + i]
}
}
}
// Display wiske Counter
if (ReceiveData[ReceiveData.length – 2].substring(0, 1) == `c')
{ document.getElementById(`counter'
+ ReceiveData[ReceiveData.length – 2].substring(7,
ReceiveData[ReceiveData.length -
2].length)).innerHTML =
ReceiveData[ReceiveData.length – 1];
}
}
De funksje setOutput stjoert it oerienkommende kommando foar it wikseljen fan de selektearre útfier nei de DataRequest-funksje.
function setOutput(iNr) { var commandstring = `outputaccess'+iNr+'?PW='+iopassword+'&State=TOGGLE&';
DataRequest(commandstring); }
De funksje clearCounter stjoert it korrespondearjende kommando foar it wiskjen fan de
65
HTTP-fersyk
teller steat fan de selektearre teller oan de DataRequest funksje.
function clearCounter(iNr) { DataRequest(`counterclear'+iNr+'?PW='+iopassword+'&'); }
It setPassword nimt it ynfierde wachtwurd en skriuwt it nei de iopassword-fariabele, dy't in komponint is fan 'e kommandostring.
function setPassword() { iopassword = document.getElementById(`pw').value;
document.getElementById(`pw').value = `'; }
De hjir werjûn AJAX-technyk, dy't basearre is op HTTP-oanfragen, kin allinich brûkt wurde as de web side is kin allinnich brûkt wurde as de web side wurdt laden direkt út de Web IO. Om feiligensredenen foarkomme de meast foarkommende browsers dat HTTP-fersiken dy't dêrnei ferstjoerd wurde nei oare servers dan dejinge wêrfan de orizjinele web side waard laden waard laden. Dizze technyk wurdt Same Origin Policy (SOP) neamd.
In beslissend neidieltage fan dizze SOP beheining is dat de normale AJAX technology net tastean in mienskiplik web side te werjaan, bygelyksample, de steaten fan twa ferskillende web IOs.
CORS - Cross Origin Resource Sharing
Om de SOP-beheining te omzeilen, wurdt dielen fan boarnen mei cross-origin brûkt. dielen. Om dizze technyk te brûken mei de Web IO, Cross Origin moat aktivearre wurde ûnder Kommunikaasjerûtes >> Web API yn it gebiet Avansearre ynstellings, Cross Origin moat wurde aktivearre.
De URL fan de tsjinner wêrfan it orizjineel web side waard laden moatte wurde ynfierd as de URL fan de oanfreger, wêrfan it orizjineel web side waard laden.
As de web side wurdt laden direkt fan de hurde skiif fan de lokale PC, ,,*" moatte wurde ynfierd as de URL fan de oanfreger. ,,*" is synonym foar allegear URLs tastien.
66
HTTP-fersyk
Yn it JavaScript-diel moat benammen de DataRequest-funksje oars strukturearre wurde.
function DataRequest(apparaat, SendString) { var cor;
if(window.XDomainRequest) { cor = new XDomainRequest(); } else { cor = new XMLHttpRequest(); } if (cor) { cor.onreadystatechange = function()
{ if(cor.readyState == 4) { updateDisplay(cor.responseText); }
} cor.open(`GET', `http://'+device+'/'+SendString); cor.send(); } else { alert(`Jo blêder stipet gjin Cross Origin Request'); } }
Yn tsjinstelling ta de orizjinele funksje is de útwreide fersykmetoade XDomainRe-
67
HTTP-fersyk
quest() of XMLHttpRequest() wurdt brûkt. By it opstellen fan it fersyk, de folsleine URL ynklusyf it IP-adres of de hostnamme moat trochjûn wurde (fariabel apparaat).var device = `10.40.22.242′;
De funksjes dy't DataRequest neame moatte fansels dêrop oanpast wurde.
function CommandLoop() { var commandstring =”;
applikaasjestap++; switch (applikaasjestap) { gefal 1:
commandstring = `ynput?PW=' + iopassword + `&'; brekke; gefal 2:
commandstring = `útfier?PW=' + iopassword + `&'; brekke; gefal 3:
commandstring = `counter?PW=' + iopassword + `&'; applikaasjestap = 0; brekke; } DataRequest(apparaat, kommandostring); maintimer = setTimeout(“CommandLoop()”, ynterval); }
function setOutput(iNr) { var commandstring=outputaccess'+iNr+'?PW='+iopassword+'&State=TOGGLE&';
DataRequest(apparaat, kommandostring); }
function clearCounter(iNr) { DataRequest(device, `counterclear'+iNr+'?PW='+iopassword+'&');
Mei help fan W&T Tags
Lykas beskreaun yn paragraaf ,,5.1.4 Labeling en teksten” de Web-IO sels kin brûkt wurde om frij nammen en label yngongen, útgongen en tellers.
In oerienkommende werjefte yn 'e browser wurdt berikt troch it brûken fan W&T tags. W&T tags binne plakhâlders dy't wurde ferfongen troch de Web-IO by it ferstjoeren fan de Web side nei de browser mei de opsleine nammen. Dit makket it mooglik foar ien en itselde Web side te hawwen in oare ferskining yn ferskillende Web-IOs.
Dizze tags bestiet úttags= en de eigentlike funksje oprop.
tags=tiid>
foar bvample toant de aktuele systeemtiid en de datum yn 'e browser.
68
HTTP-fersyk
D'r is in spesjale eigenskip fan 'e W&T tags dy't de status fan 'e útgongen en de tellerstaten fan 'e ynputtellers sjen litte.
tags=ox> entags=cx>
As d'r in behearder of operator is oanmelde, hat de werjûn ynhâld (ON/OFF of tellerstatus) in hyperlink. Troch op dizze keppeling te klikken feroaret de tastân fan de útgongen of set de teller op 0.
Sadat de feroare steat wurdt dan werjûn, de browser automatysk reloads de Web side.
De folgjende W&T tags binne beskikber:
W&T-Tag tags=apparaat_namme>tags=apparaat_ tekst>tags=lokaasje>
tags=kontakt>
tags=ynputx>
Beskriuwing / Funksje Foegje de namme taskreaun foar de Web-IO yn web site.
Foegje de beskriuwing definiearre foar de Web-IO yn web site. Foegje de lokaasje tawiisd foar de Web-IO yn web site. Foegje it kontakt tawiisd foar de Web-IO yn web site.
Foegje de namme yn oantsjutte foar ynfier nr. x.
tags=ix>tags=cx>tags=útfierx>
x kin in getal tusken 0-11 wêze en jout oan op hokker ynfier de oprop ferwiist. Dit jildt ek foar de hjirûnder beskreaune útfier en tsjinoanroppen.
Jout de steat (ON/OFF) oan fan de ynfier dy't oerienkomt mei x.
Fügt den Zählerstand des Counters für Input x in die Webseit ein.
Foegje de namme yn dy't spesifisearre is foar Utfier x
69
HTTP-fersyk
W&T-Tag tags=ox>
tags=tiid>
Beskriuwing/Funksje
Toant de steat (ON / OFF) fan de útfier oerienkommende mei x. By it oanmelden mei Operator- of Administrator-rjochten wurdt de state-yndikaasje in hyperlink jûn. Troch te klikken op dizze keppeling feroaret de steat fan 'e oerienkommende útfier en ferfarsket de web site
Fier it systeem tiid en gegevens fan de Web-IO yn Web site.
HTTP-oanfragen bûten de browser
De hjir werjûn HTTP-oanfragen kinne ek brûkt wurde mei oare web techniken lykas PHP.
De web IO's kinne ek wurde kontroleare fia HTTP-oanfragen mei helpmiddels lykas cURL.
By it roppen fan cURL, de URL moatte wurde pleatst yn omkearde komma's by it trochjaan fan de parameters:
Example:
curl "http://10.40.22.242/outputaccess1?PW=&State=TOGGLE&"
In kombinaasje fan cURL en PHP is ek mooglik:
<?php
$URL = 'http://10.40.22.242/outputaccess1?PW=&State=TOGGLE&';
$ch = curl_init();
$options = array(
CURLOPT_URL
=> $URL,
CURLOPT_RETURNTRANSFER => wier,
CURLOPT_HEADER
=> falsk,
CURLOPT_ENCODING
=> "",
CURLOPT_USERAGENT
=> "webio",
CURLOPT_CONNECTTIMEOUT => 20,
CURLOPT_TIMEOUT
=> 20,
CURLOPT_MAXREDIRS
=> 1,
CURLOPT_SSL_VERIFYHOST => falsk,
CURLOPT_SSL_VERIFYPEER => false);
curl_setopt_array($ch, $opsjes);
$data = curl_exec($ch);
if ($data==false)
{ die('FOUT '.$URL); }
oars
{ $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
as ($http_status==200)
70
{ echo $data; } else { die('Net fûn '.$URL); } } curl_close($ch);
?>
HTTP-fersyk
71
REST - Representative State Transfer
REST - Representative State Transfer
Mei REST (Representative State Transfer), de Web IOs jouwe in oar webbasearre kommunikaasje kanaal.
Kommunikaasje fynt plak fia Web IO-spesifike HTTP-oanfragen fia de HTTP- as HTTPS-poarte ynfierd ûnder Basisynstellingen >> Netwurk >> Tagong foar Web Tsjinsten.
Om REST-gegevens út te wikseljen, moat tagong earst aktivearre wurde fia Kommunikaasjepaden >> Rêst.
As REST-tagong beskerme moat wurde tsjin net-autorisearre tagong, hawwe jo de opsje om digest-autentikaasje te aktivearjen. De oanfragen moatte dan makke wurde as brûker "admin" mei it administratorwachtwurd of as brûker "operator" mei it brûkerswachtwurd.
Foar de Web-IO Digitale en Analoge ienheden, it kin ek wurde oantsjutte oft de útgongen kinne wurde feroare fia REST.
Foar lêzen tagong brûkt REST it HTTP kommando GET.
De Web IO stipet trije formaten foar antwurden op REST-oanfragen:
· JSON · XML · Tekst
JSON
Lês tagong
Foar lêzen tagong brûkt REST it HTTP kommando GET.
De Web-IO stipet trije formaten foar antwurden op REST-oanfragen:
It formaat dat brûkt wurdt foar antwurden kin bepaald wurde mei it fersyk. Using
http://<ip-adresse>/rest/json
72
REST - Representative State Transfer
foar bvample iepenet it hiele proses byld fan de Web-IO yn JSON-formaat. De re-
ply sjocht der dan sa út:
{ "ynfo": { "request": " / rest / json", "tiid": "2016 - 09 - 09, 09: 42: 54", "ip": "10.40.22.227", "devicename": "WEBIO – CAFE27” }, “iostate” : { “input” : [ { “number” : 0, “state” : 0 }, { “number” : 1, “state” : 0 } ], “output” : [ { "nûmer" : 0, "state" : 0 }, { "nûmer" : 1, "state" : 0 } ], "counter" : [ { "nûmer" : 0, "state": 0 }, { " number" : 1, "state" : 0 } ] }, "system" : { "tiid" : { "tiid" : "2016 – 09 – 09, 09 : 42: 54” }, “diagnoaze” : [ { “ time” : “06.09.2016 09 : 42 : 54”, “msg” : “Gerätestatus : OK” } ], “diagarchive” : [
73
REST - Representative State Transfer
{ "tiid": "06.09.2016 09: 42: 54", "msg": "Gerätestatus: OK"
} ] } }
Mei de Web-IO Analogue, it antwurd soe wurde strukturearre as folget:
{ "info": { "request": "/rest/json", "time": "2020-01-27,10:37:23", "ip": "10.40.22.13", "devicename": "WEBIO-0873E3" }, "iostate": { "útfier": [{ "namme": "kanal 1", "nûmer": 0, "ienheid": "mA", "wearde": 3.8 }, { "namme" ": "Kanaal 2", "nûmer": 1, "ienheid": "mA", "wearde": 16.8 }] }, "systeem": { "tiid": "2020-01-27,10:37: 23", "diagnosis": [{ "tiid": "27.01.2020 10:37:23", "msg": "Gerätestatus: OK" }], "diagarchive": [{ "tiid": "27.01.2020 10:37:23", "msg": "Gerätestatus: OK" }] }
}
Om allinich yndividuele gebieten of punten te freegjen, kin de fraach yn mear detail formulearre wurde. Hjir, bygelyksample, de fraach fan 'e yngongen fan in Web-IO Digitaal:
http://<ip-adresse>/rest/json/iostate/input
Dit feroarsaket de Web IO om de status fan alle yngongen werom te jaan:
{ "iostate" : { "ynput" : [ { "nûmer" : 0,
74
REST - Representative State Transfer
"steat" : 0 }, {
"nûmer" : 1, "steat" : 0 } ] } }
Mei
http://<ip-adresse>/rest/json/iostate/input/0
de steat fan ynfier 0 kin spesifyk wurde frege.
{ "iostate" : { "ynput" : [ { "nûmer" : 0, "state": 0 } ] }
}
Feroarje tagong
Foar tagongen dy't de wikselstatus fan 'e útgongen feroarje of de tellers wiskje, wurdt POST brûkt.
Bygelyksample, om Output 1 op ON te setten, wurdt in POST nei de folgjende stjoerd URL:
http://<ip-adresse>/rest/json/iostate/output/1
De folgjende parameters wurde trochjûn as loadload:
Set=ON
De Web IO reagearret mei
{ "iostate": { "útfier": [ { "nûmer": 1, 75
REST - Representative State Transfer
"steat" : 1 } ] } }
De Web IO reagearret mei
De útfier kin wurde oerskeakele út fia deselde URL mei de parameter Set=OFF. It wiskjen, bygelyks fan Counter1, wurdt dien fia in POST nei de folgjende URL:
http://<ip-adresse>/rest/json/iostate/counterclear/1
De Web IO reagearret mei
{ "iostate" : { "counter" : [ { "nûmer": 1, "state": 0 } ] }
}
Om de antwurden yn ien fan 'e oare formaten te krijen, ferfange gewoan it kaaiwurd json troch xml of tekst.
76
REST - Representative State Transfer
XML
Lêze tagong
Mei
http://<ip-adresse>/rest/xml
it hiele proses byld fan de Web IO kin ophelle wurde yn XML-formaat. It antwurd sjocht der dan sa út:
<webio>
/rest/xml 2017-04-04,13:32:39 10.40.22.236WEBIO-CAFE36
0 1
1 0 0 0 1 0 0 13136 1 2127 2017-04-04,13:32:39 18.04.2017 13:32:39 Gerätestatus: OK 18.04.2017 13:32:39 Gerätestatus: OK
77
REST - Representative State Transfer
</webio>
Om allinich yndividuele gebieten of punten te freegjen, kin it fersyk yn mear detail formulearre wurde:
http://<ip-adresse>/rest/xml/iostate/input
Dit feroarsaket de Web IO om de status fan alle yngongen werom te jaan:
<webio>
0 1 1 0
</webio>
Feroarje tagong
POST wurdt brûkt foar tagongen dy't de wikselstatus fan 'e útgongen feroarje of de tellers wiskje.
Bygelyksample, om útfier 1 op ON te setten, wurdt in POST nei de folgjende stjoerd URL:
http://<ip-adresse>/rest/xml/iostate/output/1
De folgjende parameters wurde oerdroegen as loadload:
Set=ON
De Web IO reagearret mei
<webio>
1 1
</webio>
78
REST - Representative State Transfer
De útfier kin wurde oerskeakele út fia deselde URL mei de parameter Set=OFF.
It wiskjen, bygelyks fan Counter1, wurdt dien fia in POST nei de folgjende URL:
http://<ip-adresse>/rest/xml/iostate/counterclear/1
De Web IO reagearret mei
<webio>
1 0
</webio>
Tekst
Lêze tagong
Mit
http://<ip-adresse>/rest/text
it hiele proses byld fan de Web IO kin ophelle wurde yn tekstformaat. It antwurd sjocht der dan sa út:
"info":"request":"/rest/text";
“time”:”2017-04-04,13:43:01″;
"ip": "10.40.22.236"; "apparaatnamme":"WEBIO-CAFE36″;"iostate":: "nûmer":0;
"steat":0; : "nûmer":0; "steat":0; "nûmer":1; "steat":0; : "nûmer":0;
"steat": 13612; "nûmer":1; "steat": 2604; "systeem": "tiid":"2017-04-
04,13:43:01″; : "tiid":"18.04.2017 13:43:01″; "msg":"Gerätestatus: OK"; :
"tiid":"18.04.2017 13:43:01"; "msg":"Gerätestatus: OK";
Om allinich yndividuele gebieten of punten te freegjen, kin it fersyk yn mear detail formulearre wurde:
http://<ip-adresse>/rest/text/iostate/input
Dit feroarsaket de Web IO om de status fan alle yngongen werom te jaan:
"iostate": : "nûmer":0; "steat":0; "nûmer":1; "steat":0;
79
Modbus TCP
Modbus TCP - standerdisearre tagong
Modbus TCP is in software ynterface foar adres-basearre tagong ta proses gegevens. De W&T Web-IO's as passend ynsteld fungearje as Modbus-tsjinners dy't kinne wurde regele troch Modbus-controllers (kliïnten as masters).
Programmierer, die den Modbus-Zugang in eigen Applikationen nutzen möchten, finden hier in detaillierte Beschreibung zu den vom Web-IO unterstützten Registrearje en Funksjekoades.
Mei help fan Modbus TCP tagong kinne jo lêze de status fan útgongen, yngongen en tellers. steat en systeem polling is ek mooglik. Dêrneist kinne de útgongen wurde oerskeakele fia Modbus TCP en de tellers wiske.
De Web-IO leveret 64 16-bit registers dy't frij kinne wurde skreaun en dy't tagonklik wurde kinne fanút de browser.
Unter Kommunikationswege >> Modbus-TCP kin der Modbus-Zugang des WebIO aktivearre waarden. Von Hause út is der lokale TCP-Port, wie foar Modbus-TCP üblich auf 502 voreingestellt.
Utgongen dy't oer Modbus-TCP wurde besjoen wurde, kinne jo útgongen foar Modbus/TCP freige wurde aktivearre.
Modbus TCP kommunikaasje
Modbus TCP is in master/slave proseduere wêryn in Modbus master in fersyk stjoert nei de slave (Web-IO) en de slaaf (Web-IO) antwurden mei in antwurd.
Gegevens útwikseling tusken de Modbus client en de Web-IO fynt plak mei Modbus TCP-pakketten.
De Web-IO hat in ûnthâld dêr't de Modbus master kin lêze of dêr't it kin skriuwe. Dit ûnthâld is ferdield yn gebieten dy't fertsjintwurdigje bepaalde skaaimerken fan de Web-IO.
Der binne gebieten foar de status fan yngongen, útgongen en tellers. Oare gebieten jouwe de systeemstatus oan of hawwe betrekking op de alaarms.
80
Modbus TCP
In bysûndere skaaimerk fan de Web-IO is in ûnthâldgebiet dat oan 'e iene kant frij lêzen of skreaun wurde kin fia Modbus tagong en oan' e oare kant kin wurde oproppen fia de Web ynterface. Mei passend Web side programmearring in Modbus systeem kin dêrom brûkt wurde foar it fisualisearjen fan proses gegevens yn de blêder.
In oare spesjale funksje fan de Web-IO is dat in alaarm kin wurde aktivearre troch te skriuwen nei in bepaald ûnthâld gebiet.
In list mei de krekte ûnthâld organisaasje folget letter yn dizze paragraaf.
De Modbus-gegevenspakketten besteane altyd út in koptekst, de funksjekoade, it startadres en oare parameters en registers.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX hege byte
1. byte
lege byte 2. byte
16 bit wearde / Wurd
XX
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 hege byte
3. byte
00 low byte 4. byte
16 bit wearde / Wurd
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 hege byte
5. byte
lege byte 6. byte
16 bit wearde / Wurd
XX
76543210
7. byte
01
8 bit/1 byte
76543210
XX 8. byte
8 bit/1 byte
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX hege byte
9. byte
XX leech byte
10. byte
16 bit wearde / Wurd
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX hege byte
11. byte
XX leech byte
12. byte
16 bit wearde / Wurd
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX hege byte
n. byte
XX leech byte
n+1. byte
16 bit wearde / Wurd
Transaksje ID Protokol ID Lengte Unit ID Funksje Code Startadres
16 bit Wurdt ferhege mei 1 per fersyk troch de 16 bit altyd = 0x0000 16 bit Oantal bytes nei dit fjild 8 bit altyd = 0x0001 8 bit Bepaalt it doel fan it fersyk 16 bit Adres fan de te lêzen/skriuwen registers
Mear Parameters of registrearje
8 bit, 16 bit, 32 bit
Transaksje Identifier Wurdt brûkt om te klassifisearjen it antwurd út de Web-IO nei it fersyk fan de klant. De kliïnt fergruttet normaal de ID mei 1 by elke ferstjoering fan gegevens. De Web-IO jout altyd de ûntfongen wearde 1:1.
Protokol Identifier Hat gjin betsjutting foar kommunikaasje mei de Web-IO en is altyd 0x0000
81
Modbus TCP
Length Oantal bytes ferstjoerd troch Length (hiele oantal bytes ferstjoerd - 6).
Unit identifier Altyd 0x01 foar Modbus TCP
Funksje Code De Funksje Code spesifisearret hoe't de Modbus ûnthâld fan de Web-IO wurdt tagong:
. By bytsje. By register (16-bits)
en wat it doel fan it fersyk is:
. 0x01 Read Coils - lês yndividuele bits. 0x02 Lês diskrete yngongen - lês yndividuele bits. 0x03 Lês Holding Registers- lês meardere registers. 0x04 Lês ynfierregister - lês meardere ynfierregisters. . 0x05 Skriuw Single Coil - skriuw in bytsje. 0x06 Skriuw ien register - skriuw mar ien register. 0x07 Lês útsûndering steat - lês flater status. 0x0F Skriuw Meardere Coils - skriuw meardere bits. 0x10 Skriuw meardere registers - skriuw meardere registers
Startadres Startadres jout oan hokker gebiet fan it Modbus-ûnthâld yn 'e Web-IO sil tagong wurde. Dit bepaalt ek hokker karakteristyk tagong wurdt (ynputen, útgongen, tellers, alaarms, ...).
In list mei de krekte ûnthâldorganisaasje is letter yn dizze paragraaf te finen.
1Sawol de Funksje Code as Startadres bepale wat it ferstjoerde fersyk moat trigger foar de Web-IO.
Oare parameters en registers Ofhinklik fan hokker Funksje Code wurdt brûkt oare parameters en registers kinne folgje.
82
Modbus TCP
Funksje Code 0x01 Read Coils
Funksje Code 0x01 is bedoeld foar binêre lêzing fan de status fan de Web-IO útgongen.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX hege byte
1. byte
XX low byte 2. byte
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 hege byte
3. byte
00 low byte 4. byte
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 hege byte
5. byte
06 low byte 6. byte
16 bit wearde
76543210
7. byte
01
8 bit/1 byte
76543210
8. byte
01
8 bit/1 byte
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
10 hege byte
9. byte
20 lege byte
10. byte
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX hege byte
11. byte 16 bit wearde
XX leech byte
12. byte
Transaksje ID
Protokol ID
Lingte
Unit ID
Funksje Code
8 bit 0x01 Read Coil
Startadres 16 bit Adres fan de te lêzen registers
Kwantiteit fan Outputs
16 bit Oantal yngongen te lêzen
Startadres Spesifiseart begjinnend op hokker adresbits (útgongen) lêzen wurde moatte.
Quantity of Outputs Hjir wurdt it oantal te lêzen bits (útgongen) oerdroegen.
Troch it ferstjoeren fan in gegevenspakket mei FC 0x01 kin ien of mear Booleaanske wearden (útfierstaten, ie 0/1 of ON/OFF) oanfrege wurde.
De Web-IO antwurdet as folget:
83
Modbus TCP
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
XX hege byte
1. byte
XX low byte 2. byte
16 bit wearde
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
00 oere
Dokuminten / Resources
![]() |
W en T 48V Web-IO Digital 4.0 [pdfYnstruksjes 48V Web-IO Digital 4.0, 48V, Web-IO Digital 4.0, Digital 4.0, 4.0 |