Blog
Dataformater og protokoller
Fra brugerens synspunkt kan disse data være en lang række oplysninger såsom .B temperaturer, skiftetilstande, vægte, tider, positioneringsdetaljer og meget mere.
Men uanset hvilket indhold der er involveret, til elektronisk databehandling eller computerteknologi, er data altid et ubestemt antal byte.
En byte svarer til en numerisk værdi mellem 0 og 255.
Dataudveksling betyder overførsel af bytes fra A til B
Kontrolleret dataudveksling ved hjælp af protokoller
For at modtageren kan forstå de data, han modtager fra afsenderen, er det vigtigt, at det bestemmes, i hvilken form dataene overføres.
I systemer, hvor flere komponenter er netværksforbundet med hinanden, skal det desuden bestemmes, hvem en dataoverførsel er beregnet til. Ud over de brugerdata, der rent faktisk skal overføres, skal der derfor knyttes adresseoplysninger til dataoverførslen.
Hvis brugerdata og adresseringsoplysninger følger en given rammestruktur, kaldes dette en protokol.
Tidligere blev feltbussystemer ofte brugt til dataoverførsel mellem industrielle komponenter. Feltbusser er serielle forbindelser mellem de involverede komponenter. Forskellige standarder har etableret sig side om side, som ikke kun adskiller sig i protokol og transmissionshastighed. Den fysiske transmission op til de anvendte mekaniske tilslutningsmuligheder varierer også meget.
Nyere industrielle protokoller adskiller sig på protokolniveau i kodningen af dataene, men som et fysisk transportmedium bruger de fleste TCP / IP Ethernet.
Der er således en fælles standard, der har mange fordele:
- eksisterende infrastruktur kan anvendes
- forskellige industrielle protokoller kan bruges side om side i det samme netværk
- Ensartet transmissionsteknologi og stik
- Kommunikation på tværs af websteder mulig
- frit kan udvides
Filformater
For protokoller, der bruger TCP / IP Ethernet som en fælles standard, er adressering allerede udført via IP-adressen, med nogle få undtagelser.
Den egentlige industrielle protokol definerer snarere den form, hvori de transporterede data overføres.
Der er to grundlæggende dataformater:
- Meddelelsestekst
- Binære data
Hvornår hvilken variant der spiller ind, afhænger af mange faktorer.
Data som tekst
Især i webbaserede applikationer sendes data af enhver art som tekst. Tekst betyder, at informationen overføres som en menneskelig læsbar streng. Hvert tegn optager en byte.

Tidligere blev kodning udført i henhold til ASCII-standarden. Tildelingen af hvilket tegn svarer til hvilken numerisk værdi der er defineret i ASCII-tabellen (ASCII = American Standard Code for Information Interchange).

Det særlige ved fortiden var, at kun 7 af de 8 tilgængelige bits af en byte blev brugt, hvilket begrænser det anvendelige tegnpræfiks til 128 læsbare tegn.
Nyere standarder som UTF8 overvinder denne begrænsning og tillader specialtegn at bruge endda to byte til et tegn.
Ud over frit formuleret tekstindhold har standardiserede tekstformater etableret sig i web- og industriprotokoller:
- XML
- JSON
Vi vil kort forklare begge formater her.
XML – Extensible Markup Language
XML er et såkaldt markup-sprog. De faktiske brugerdata er indlejret i tags. Mærkerne er navne på de respektive værdier eller indhold. Hvert mærke begynder med et åbningsvinkelbeslag og slutter med et lukkende.
Hver XML-konstruktion begynder med et startmærke, der som minimum angiver XML-versionen. Yderligere parametre, såsom den anvendte tegnkodning, er også mulige:
Efter starttagget følger det andet indhold, der er integreret i tags. Alt indhold undtagen starttagget har et åbningstag og et lukketag med samme navn. Navngivningen begynder dog med en skråstreg (“/”) ved det afsluttende tag.
Eksempel:
irgendetwas
XML tillader også strukturerede tags indlejret i hinanden efter hierarki. Her er et eksempel på sensorværdierne for et W&T Web termisk hygrobarometer:
Temperatur
0
°C
23.900000
rel. Feuchte
1
%
36
Luftdruck
2
hPa
992
Indrykningerne er ikke obligatoriske med XML, men er almindelige, da de øger læsbarheden betydeligt.
Fordelen ved XML som transmissionsformat er, at både menneske og maskine eller et evaluerende program kan læse indholdet godt.
Ulempen er den meget høje bruttodatavolumen for lidt indhold.
JSON – JavaScript Object Notation
Syntaksen, dvs. strukturen af JSON, er baseret på en delmængde af JavaScript-syntaks.
JSON bruger navnepar og værdi/indhold til at kode dataene.
Eksempel: “indhold” : “noget”
JSON tillader også en struktureret struktur indlejret i hinanden i henhold til hierarkiet. Her er et eksempel på sensorværdierne for et W&T Web Thermal Hygrobarometer:
{
"iostate":
{
"sensor":
[
{
"name": "Temperatur",
"number": 0,
"unit": "°C",
"value": 24.1
},
{
"name": "rel. Feuchte",
"number": 1,
"unit": "%",
"value": 35.9
},
{
"name": "Luftdruck",
"number": 2,
"unit": "hPa",
"value": 991.8
}
]
}
}
Både navne og værdier er indlejret i anførselstegn øverst. En undtagelse er numeriske værdier – her kan anførselstegnene udelades.
Navne-/værdipar adskilles af kommaer.
Relaterede navne-/værdipar skal grupperes sammen med krøllede seler.
Grupper, der hører sammen, kan danne et array og grupperes i firkantede parenteser adskilt af kommaer.
En detaljeret beskrivelse af JSON-formatet findes under https://www.json.org.
JSON er meget mere kompakt med hensyn til datavolumen end XML og alligevel let at læse af mennesker og maskiner.
Base64-kodning
base64 er en metode, der koder eller afkoder binære data i en kæde af læsbare ASCII-tegn. På denne måde kan binært indhold også transporteres med tekstbaserede transmissionsformater.
Proceduren er ret simpel. Tre byte af den binære kode overføres bitvis til fire 6-bit tal.

Hvert af de fire tal tildeles det tegn, der svarer til værdien i henhold til følgende tabel. Således erstattes tre binære bytes af fire tegn, dvs. læsbare tegn.

Denne proces gentages, indtil alle binære bytes er kodet. Hvis individuelle bytes forbliver i slutningen, tilføjes udfyldningsbyte for at kode de sidste tre byte. Fyld bytes har en værdi på 0.
For at kunne sortere fyldbyte under den efterfølgende afkodning, dvs. gendannelsen af de originale binære byte, tilføjes et “=” -tegn til den kodede streng for hver udfyldningsbyte i slutningen.
De mest almindelige brugssager til Base64-kodning er webbaserede applikationer og e-mail.
Binær
Data er altid et vist antal byte.
Hvilken byte tjener hvilket formål på hvilket tidspunkt bestemmes enten af en standardiseret protokol eller applikationen. En eller flere bytes skjuler en værdi, et værdiarray, en streng eller endda et funktionskald.
Individuelle værdier kan overføres i en dataoverførsel. Ofte anvendes der dog også datastrukturer, hvor det bestemmes, på hvilket punkt i den overførte bytekæde hvilken værdi der er gemt.
Her er et eksempel på data fra et Modbus-funktionsopkald. Funktionskoden er f.B. altid placeret i 8. byte:

En anden almindelig metode til binær datakonstruktion er TLV, som står for Type Length Value. Flere indhold af enhver størrelse kan overføres fortløbende i en dataoverførsel.
For hvert indhold gælder sekvensen:
- Type – hvilken slags indhold er det?
Typebestemmelse bestemt af ansøgningen - Længde – hvor mange bytes indeholder indholdet?
- Værdi – Bytes af værdien eller indholdet.
Hvis der er flere bytes bag en sådan sekvens, er dette den næste sekvens.
Her er et simpelt eksempel:

De overførte bytes indeholder to værdier: en 16-bit værdi (2 byte) og en 32-bit værdi (4 byte).
Fordelen ved binær dataoverførsel er den meget kompakte struktur af dataene.