Webpanel API
Komunikace je založena na protokolu HTTP. Klienti odesílají HTTP POST požadavky a získávají odpovědi odpovídající zaslanému požadavku. Pokud jsou pro projekt nastaveny přihlašovací údaje, musí je obsahovat každý požadavek.
Přihlášení
Požadavek
URL: http://[ip-address-of-the-plc]/login.cgi
{ ver : 1,//version //optional - only for non-authenticated access //credentials c: {u: "karel", p: "x"} }
Odpověď
{ ver : 1,//version code: "ok", //return code msg: "", //error message c : {u: "karel", p:"x"} //must be used for further communication }
Požadavek na data
Požadavek
URL: http://[ip-address-of-the-plc]/values.cgi
{ ver : 1,//version //optional - only for non-authenticated access //credentials c: {u: "karel", p: "x"}, //variable IDs v: [ "svc://defaultConnection/myVarId1", "svc://otherConnection/xxxYYYYDDD"] }
- ID proměnné je jedinečný řetězec. V budoucnu se může lišit podle platformy nebo verze protokolu (uPLC – int?, SharkRT – string).
Příklad
{ "ver": 1, "c": { "u": "Visitor", "p": "b39576d3da8eb2b0e262645e84707cdc" }, "v": ["svc://DefaultConnection/9104[0,4]", "svc://DefaultConnection/9105[0,4]", "svc://DefaultConnection/9129[456,4]"] }
Specifikace proměnných pro Mervis RT
- svc – protokol
- Connection – obecně mohou klienti požadovat data z více zdrojů (více či méně odpovídá definici připojení v PLC). Pro lokální data (data náležející PLC, které požadavek zpracovává) lze použít
defaultConnection. - ID proměnné má tvar
commUID[offset,length]. HodnotucommUIDlze získat ze souboru.vlistprojektu v Mervis IDE a jednoznačně určuje proměnnou. Proměnné mohou být komplexních nebo velkých datových typů. V takovém případě lze pomocí parametrůoffsetalengthnačíst pouze požadovanou část proměnné. - Příklad:
svc://defaultConnection/8776[0,2]
- Představuje proměnnou s hodnotou
commUID8776. Vrátí se 2 bajty od offsetu 0.
Tělo POST požadavku může mít následující podobu:
- Řetězec JSON (výchozí chování AngularJS):
{"ver":1,"c":{"u":"karel","p":"x"},"v":["svc://defaultConnection/myVarId1","svc://otherConnection/xxxYYYYDDD"]}
- Převedené POST parametry (výchozí chování jQuery):
ver=1&c%5Bu%5D=karel&c%5Bp%5D=x&v%5B%5D=svc%3A%2F%2FdefaultConnection%2FmyVarId1&v%5B%5D=svc%3A%2F%2FotherConnection%2FxxxYYYYDDD
Odpověď
{ ver : 1,//version code: "ok", //return code msg: "", //error message v: [{ i: "svc://defaultConnection/myVarId1", //variable Id v: "ACA1", //value - binary encoded q: "G",//quality t: 654654321654 //timestamp UTC, milliseconds since 1970 } ] }
Kódování hodnot – verze 1
- Každá hodnota je přenášena jako binární reprezentace zadané proměnné (včetně offsetu a délky) v pořadí bajtů big endian.
Příklad
{ "ver": 1.0, "code": "ok", "msg": "", "v": [{ "i": "svc://DefaultConnection/9104[0,4]", "v": "C376DC63", "q": "good", "t": 636940178310000000 }, { "i": "svc://DefaultConnection/9105[0,4]", "v": "C0400000", "q": "good", "t": 636940178310000000 }, { "i": "svc://DefaultConnection/9129[456,4]", "v": "C0400000", "q": "good", "t": 636940178310000000 } ] }
Požadavek na vykonání příkazu
Požadavek
URL: http://[ip-address-of-the-plc]/command.cgi
{ ver : 1,//version //optional - only for non-authenticated access //credentials c: {u: "karel", p: "x"}, v: [{ i: "svc://defaultConnection/myVarId1", //variable Id //digital setter time: "20.0", //digital setter has some time property... state: "2", //state that should be applied defaultValue: "6", //some default value //analogPlusMinusInit, TPG, ... set: 5, //set: "<?cdata....?>" //TPG //login - pin login: "1234" } ] }
- Upozornění: Na nejmenších platformách (uPLC) se očekává pouze jedna proměnná v požadavku. Ostatní proměnné jsou ignorovány.
Požadavek na historická data
Požadavek
URL: http://[ip-address-of-the-plc]/history.cgi
{ ver : 1,//version //optional - only for non-authenticated access //credentials c: {u: "karel", p: "x"}, v: [ {i:"svc://defaultConnection/myVarId1", from: XXXX, to: YYYY }, {i:"svc://defaultConnection/myVarId1", from: XXXX, to: YYYY } ] }
Odpověď
{ "ver": 1, "code": "ok", "msg": "", "v": [{ "i": "svc://DefaultConnection/15[0,1]", "v": [{ "t": 636579093300049300, "v": "00" }, { "t": 636579093600055900, "v": "00" }], "n": 10 }, { "i": "svc://DefaultConnection/16[0,1]", "v": [ { "t": 636579093300049300, "v": "00" }, { "t": 636579093600055900, "v": "00" }],"n": 10 }] }
Nativní vestavěné datové typy
Poznámka: Kódování používá pořadí bajtů big endian (v1).
- integer (představuje int8 až int64)
- unsigned integer (představuje uint8 až uint64)
- double (double64)
- float (float32)
- bool (boolean – 0 = false, 1 = true)
- dt (datum a čas – počet intervalů o délce 100 ns, které uplynuly od 1. ledna 0001 00:00:00)
- time (čas – počet intervalů o délce 100 ns)
- Výčtové typy (enum) jsou kódovány jako 32bitové celé číslo.