Condividi tramite


Formati di messaggio FMI

Questa sezione descrive i formati di messaggio per l'interfaccia di gestione delle funzioni (FMI). I formati di messaggio vengono presentati in una notazione indipendente dalla lingua. I dettagli della notazione del formato del messaggio e i presupposti chiave relativi al contenuto dei formati di messaggio sono i seguenti:

  • Reserved indica che il campo è impostato su zero (per un campo numerico) o tutti i valori Null (per i nomi) dal mittente del messaggio.

  • Undefined indica che il valore del campo è indeterminato. Il campo non è impostato dal mittente e non deve essere esaminato dal destinatario del messaggio.

  • I campi che occupano due byte, ad esempio opresid nella richiesta Open(PLU), sono rappresentati con il byte più aritmeticamente significativo nell'indirizzo di byte più basso, indipendentemente dall'orientamento normale utilizzato dal processore in cui viene eseguito il software. Ovvero, il valore di 2 byte 0x1234 ha il byte 0x12 all'indirizzo di byte più basso. Tuttavia, i campi seguenti sono eccezioni:

    • I campi srci e desti nelle intestazioni del buffer vengono archiviati nel formato locale dell'applicazione che li assegna, perché solo l'applicazione di assegnazione deve interpretare questi valori.

    • I campi startd e endd negli elementi vengono sempre archiviati con orientamento a byte basso-byte alto (orientamento normale di un processore Intel).

  • I messaggi sono costituiti da buffer costituiti da un'intestazione del buffer e da zero o più elementi del buffer. Per altre informazioni sui formati di buffer, vedere Messaggi.

  • Le applicazioni devono assegnare valori di indice univoco (I) per ogni connessione LPI attiva all'interno del nodo. In particolare, la richiesta Open(SSCP) deve essere diversa dall'indice di origine inviato in risposta a Open(PLU). Inoltre, zero non deve essere usato come valore I. Un valore I di zero significa che il mittente del messaggio invita il destinatario del messaggio ad assegnare un valore I.

  • Il campo startd in ogni elemento fornisce l'offset del primo byte di dati dell'elemento successivo al campo trpad.

    Per le applicazioni LUA (Non Logical Unit Application), startd sarà 1 (i dati iniziano nel byte dopo il campo trpad ), 10 (nove byte di riempimento sono inclusi tra il campo trpad e l'inizio dei dati) o 13 (12 byte di riempimento sono inclusi tra il campo trpad e l'inizio dei dati).

    Per le applicazioni LUA, startd è 4 (tre byte di spaziatura interna tra il campo trpad e l'inizio dei dati) nel primo elemento di un messaggio e 13 (12 byte di riempimento) negli elementi successivi.

    Il nodo locale usa byte aggiuntivi per informazioni aggiuntive sull'intestazione. Ciò evita di dover copiare i dati in un nuovo buffer quando si aggiungono queste informazioni.

  • Poiché startd indica l'indice in dataru a partire da 1, non 0, il primo byte di dati validi è sempre in dataru[startd-1].

  • Se startd è maggiore di endd, non ci sono dati validi nel messaggio.

  • Tutti i campi all'interno di dataru sono di tipo CHAR, ad eccezione del caso in cui le osservazioni indicano diversamente.

  • Si noti che quando un elemento buffer ha un inizio di 1, 10 o 13, questo vale solo per l'elemento iniziale nella catena di elementi e gli elementi successivi nella catena hanno un inizio pari a 1. I messaggi con due catene di elementi collegati distinti nei formati di messaggio (ad esempio Open(PLU) Request e Open(PLU) OK Response hanno il campo iniziale negli elementi all'inizio delle catene come valore (1, 10 o 13) specificato nel formato del messaggio e i campi iniziali in tutti gli altri elementi come 1.

In questa sezione