08.05.2018 Views

Elektor Electronics 2018 01 02 469

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ns_p:header<br />

Type<br />

ns_p:HeaderType<br />

ns_p:HeaderType<br />

specificationVersion<br />

Type ns_p:SpecificationVersionType<br />

addressSource<br />

Type ns_p:FeatureAddressType<br />

addressDestination<br />

Type ns_p:FeatureAddressType<br />

addressOriginator<br />

Type ns_p:FeatureAddressType<br />

msgCounter<br />

Type ns_p:MsgCounterType<br />

msgCounterReference<br />

Type ns_p:MsgCounterType<br />

cmdClassifier<br />

Type ns_p:CmdClassifierType<br />

Le rôle des deux paramètres MessageCounter est intéressant.<br />

Le paramètre msgCounter est incrémenté à chaque envoi de<br />

paquets – il s’agit d’un ID de message qui identifie clairement<br />

chaque « message envoyé au cours d’une courte période ». Le<br />

paramètre MsgCounterRef permet la corrélation entre message<br />

et déclencheur – un message de réponse (reply) peut ainsi se<br />

référer à la commande traitée par celui-ci.<br />

Les protocoles de communication spécifient souvent leur propre<br />

format pour les adresses : dans le cas de SPINE, le deuxpoints<br />

sert de séparateur des différents éléments. La chaîne de<br />

caractères d: sert d’entête de protocole, le _i suivant permet<br />

de stocker d’autres informations spécifiques au fabricant. Le<br />

but de la structure d’adressage est de produire une chaîne<br />

globalement unique qui identifie un appareil en particulier.<br />

Figure 2. Entête SPINE de plus près.<br />

ackRequest<br />

Type xs:boolean<br />

timestamp<br />

Type ns_p:AbsoluteOrRelativeTimeType<br />

Fonctions et filtres<br />

La seconde partie de la trame est le contenu à proprement<br />

parler du message : elle est normalement disponible sous la<br />

forme d’un élément payload. Sa déclaration commence par un<br />

piège : même si le protocole permet la présence de plusieurs<br />

balises cmd dans un message, les implémentations n’évaluent<br />

normalement que la couche supérieure.<br />

<br />

1.0.0<br />

<br />

d:_i: <strong>469</strong>25_TestTempSensor_1<br />

2<br />

1<br />

1<br />

1<br />

<br />

<br />

d:_i:<strong>469</strong>25_TestSHM_1<br />

1< /entity><br />

1<br />

<br />

15<br />

8<br />

reply<br />

<br />

SPINE Class defines set of functions<br />

e.g. ActuatorLevel<br />

SPINE Function defines set of functions<br />

e.g. ActuatorLevelData<br />

SPINE Elements are<br />

function specific datapoints<br />

e.g. actuatorLevelData −> value<br />

Element<br />

1<br />

Function<br />

1<br />

Element<br />

n<br />

Class<br />

Element<br />

1<br />

Function<br />

n<br />

Figure 3. Fonctions et éléments sont rassemblés en classes.<br />

Element<br />

n<br />

<br />

<br />

measurementListData<br />

<br />

<br />

<br />

<br />

<br />

Tableau : CmdClassifier<br />

CmdClassifier<br />

fixe le rôle du message en transfert.<br />

Désignation Rôle<br />

Commande qui pousse le destinataire à livrer<br />

read des données placées sous sa gestion, p. ex.<br />

« Combien de glaçons avons-nous ? ».<br />

Commande qui contraint le destinataire à<br />

write<br />

traiter une valeur.<br />

Commande qui pousse le destinataire à<br />

traiter la commande ou l’exécution d’une<br />

call<br />

action, p. ex. « Jeter cinq glaçons en forme<br />

d’étoile ».<br />

Message qui représente la réponse à une<br />

reply commande read, p. ex. « J’ai six glaçons en<br />

forme d’étoile ».<br />

Message envoyé par le propriétaire des<br />

notify données à un client intéressé, p. ex.<br />

« Attention, quatre glaçons ont été retirés ».<br />

Message qui confirme la réception réussie<br />

ou non réussie ou le traitement d’une<br />

result<br />

commande, p. ex. « Non, je ne peux pas<br />

traiter le message précédent ».<br />

26 janvier/février <strong>2<strong>01</strong>8</strong> www.elektormagazine.fr<br />

vu sur www.frboard.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!