Spesso si afferma che Modbus / TCP non è un protocollo in tempo reale. È anche "noto" che Modbus non è un protocollo in tempo reale. Questo nonostante il fatto che il protocollo Modbus originale sia altamente deterministico.
In effetti, per quanto posso dire, il motivo per cui storicamente e industrialmente non è stato considerato in tempo reale è perché è semplicemente lento.
Tuttavia, la corretta definizione di Computer Science in tempo reale è che ha un tempo di esecuzione limitato deterministico, ovvero scadenze garantite. [ 1 ] [ 2 ]
Real-time programs must guarantee response within specified time constraints, often referred to as "deadlines".
Real-time communication is a category of software protocols and communication hardware media that gives real-time guarantees, which is necessary to support real-time guarantees of real-time computing.
Il campo dell'automazione industriale è già passato dai primi giorni di PLC. Mentre le braccia robotiche possono richiedere una latenza di 10 ms per comunicare con il controller, le comunicazioni intra-impianto possono avere latenze accettabili nelle centinaia di ms ma devono comunque essere in tempo reale su distanze di centinaia di metri. Ecco perché esistono soluzioni come EtherCAT, Profinet ed Ethernet / IP.
Con questo preambolo dichiarato, e con la consapevolezza che esistono soluzioni per mettere TCP su RT capace di ethernet:
qualsiasi cosa rende Modbus / TCP non deterministico, cioè illimitato nel tempo di esecuzione come protocollo ?
Ho visto il protocollo Modbus / TCP sul filo e consiste in un singolo scambio di richieste / risposte.
Guardando da vicino la definizione del protocollo , lo slave può restituire una risposta alle eccezioni che include quanto segue:
5 Acknowledge Slave has accepted request and is processing it, but a long duration of time is required. This response is returned to prevent a timeout error from occurring in the master. Master can next issue a Poll Program Complete message to determine whether processing is completed
6 Slave Device Busy Slave is engaged in processing a long-duration command. Master should retry later
Entrambi si adatterebbero alla definizione di tempo di esecuzione illimitato, ma possono essere interpretati semplicemente come un errore di comunicazione poiché si tratta di codici di eccezione. Soprattutto se la risposta all'eccezione viene restituita entro un limite di tempo limitato. Dopotutto, il tempo reale non significa a prova di errore.
Allora, perché Modbus / TCP - come protocollo - non è realmente in tempo reale?
Evidentemente il modo in cui inizialmente ho scritto questa domanda ha sollecitato alcune risposte banali. Ti prego di capire che non sto cercando una risposta ingenua sì o no. Sto cercando una considerazione ponderata.
Inoltre ho cercato un bel po 'per determinare se il TCP stesso sia fondamentalmente non deterministico. Non lo vedo. Mentre IP è la consegna migliore sforzo , non vedo come TCP un-routed su LAN dovrebbe rappresentare un problema. Ma forse c'è una condizione in base alla quale i frame TCP possono essere ridotti a causa di alcune circostanze esoteriche?