Italian community of Lazarus and Free Pascal

Progetti del forum => Progetti degli utenti => Topic aperto da: mbisax - Giugno 30, 2023, 12:48:24 pm

Titolo: Emulatore PLC Mewtocol
Inserito da: mbisax - Giugno 30, 2023, 12:48:24 pm
Salve a tutti, vorrei condividere con voi una piccola utility che potrebbe risultare utile a chi, come me, si trova a scrivere un programma che debba comunicare con un PLC Panasonic con protocollo MEWTOCOL.
Dopo averne cercato uno su Internet senza successo mi sono deciso a scrivermelo.
Tratta solo i comandi RD e WD che nei miei progetti sono stati gli unici utilizzati: con un pò di impegno potreste aggiungerne anche altri.
Il programma parte e permette di indicare IP e Porta da utilizzare: viene elencata una lista degli IP configurati nella macchina in modo da poter scegliere il più conveniente per i vostri test. Scegliendo IP '0.0.0.0' è possibile collegarsi da qualsiasi indirizzo.
Unico prerequisito è il componente lNet installato su Lazarus.
Testato su W10 e Linux.


Titolo: Re:Emulatore PLC Mewtocol
Inserito da: DragoRosso - Giugno 30, 2023, 02:05:07 pm
Appena ho un attimo di tempo .... metto in coda ai progetti già in coda (che ormai è diventata alla stregua di un serpentone autostradale estivo).

Integro la parte che ho già sviluppato io e sostituisco INET con Indy.

Ciao
Titolo: Re:Emulatore PLC Mewtocol
Inserito da: mbisax - Giugno 30, 2023, 02:46:39 pm
Ciao DragoRosso, ho usato Indy per i progetti principali legati al PLC Panasonic. Per questo Emulatore ho preferito usare lNet perchè l'ho sempre trovato più semplice da gestire. Quando ho bisogno di velocità e di gestire le connessioni con il multithreading allora uso Indy.
Mi incuriosisce sapere perchè vorresti modificarlo utilizzando Indy.
Ti garantisco che con lNet non ci sono problemi di velocità, rimane molto responsivo per una situazione di test: ho fatto prove con tempificazioni di lettura di 100 ms (in una VM con VirtualBox) e non ho avuto rallentamenti di sorta.

Grazie
 
Titolo: Re:Emulatore PLC Mewtocol
Inserito da: DragoRosso - Giugno 30, 2023, 03:49:18 pm
Ciao DragoRosso, ho usato Indy per i progetti principali legati al PLC Panasonic. Per questo Emulatore ho preferito usare lNet perchè l'ho sempre trovato più semplice da gestire. Quando ho bisogno di velocità e di gestire le connessioni con il multithreading allora uso Indy.
Mi incuriosisce sapere perchè vorresti modificarlo utilizzando Indy.
Ti garantisco che con lNet non ci sono problemi di velocità, rimane molto responsivo per una situazione di test: ho fatto prove con tempificazioni di lettura di 100 ms (in una VM con VirtualBox) e non ho avuto rallentamenti di sorta.
Grazie

Tendo ad usare Indy perchè di base usa la tecnica "blocking", e questo dà secondo me più controllo all'applicazione. Io uso i componenti di comunicazione, qualsiasi essi siano solo all'interno di Thread.
Inet invece è "non blocking" e usa esclusivamente gli eventi per segnalare stati o altro.

Ma ciò è solo questione di "gusto", abitudine e di tecnica.

Per ciò che riguarda le connessioni e le velocità, sono normalmente abituato a lavorare con tempi non superiori ai 3 ms. (con cadenze abbastanza "fitte") tra l'invio di un richiesta al PLC e la ricezione di una risposta. Rimangono per adesso fuori solo i PLC Siemens con cui comunico con tempi intorno ai 12 / 15 ms.

E' parecchio tempo che non uso i Panasonic, quindi non sono aggiornato sui tempi di comunicazione.

Ciao
Titolo: Re:Emulatore PLC Mewtocol
Inserito da: mbisax - Giugno 30, 2023, 05:16:39 pm
Ottimo!.
Attenderò con ansia le tue modifiche con Indy all'emulatore.
Grazie e buon lavoro!