varg Inserito: 29 ottobre 2007 Segnala Share Inserito: 29 ottobre 2007 Salve a tutti volevo porvi all'attenzione una particolarità del protocollo HOST LINK dell'omron in particolare una serie di Comandi non documentati.Premessa:Ho sempre apprezzato i PLC omron perchè al contrario dei PLC Siemens hanno un protocollo aperto, ovvero senza l'ausilio di DLL o altro e' possibile comunicare con il PLC questo e' ben documentato nei vari manuali dell'omron, ma e' veramente tutto ben scritto e documentato ? NO assolutamente NO.Vi e' un simpatico comando per la Precisione il famigerato MB che non è documentato ho parlato con Omron Italia sanno dell'esistenza di questo comando, ma Omron Japan non rilascia documentazione neanche a omron italia, allora mi sono deciso di fare un po di considerazioni sulle varie stringhe ed ho cominciato a capire una piccolissima parte ma almeno e' gia qualcosa.Il tutto e' nato facendo un paio di Considerazioni, dicendo ma cavolo e' possibile che il Syswin durante la connessione al PLC mi riesca a dire con precisione che tipo di plc ho mentre il comando MM mi da solo una infaritata generale ?? Ecco e' nato tutto da qui.Allora le descrizioni dei comandi che vado ad elencare sono state testate su un CPM2A 40CDR non ho la minima idea se vanno su altri tipi ma questo e' da provare.Fin ora ho trovato 2 Interessantissime Funzioni del comando MB ma ritengo che il comando MB lavorando sulle memorie Grezze del plc si possa estrapolare Qualsiasi cosa.Tutti questi comandi sono stati testati e' le risposte sono state tutte elaborate tramite supposizioni.1. Rilevazione tipo PLCInvio al PLC:[at]00MB2D0400013C*Esempio Risposta:[at]00MB008F1E0001FF3F631B01FF19FF0000,093043504D322A2D3430432A2A2020202020303133331362030312E303967*Ora provate a fare una conversione di tutta la stringa dopo la , in ASCII tranne il CheckSum e teminatore vi ritroverete, una stringa simile a questa: 0CPM2*-40C** 010316 01.09I Primi caratteri ignoro purtroppo cosa siano ma di sicuro saranno qualche configurazione, pero nota subito all'occhio questafantastica scritta dove il Tipo di PLC e' ben definito e addirittura mi dice che e' un 40 ! per quanto riguarda gli altri 2 parametri di seguito ad occhio possono sembrare l'ora e la data dal PLC ma dopo delle verifiche posso assicurarvi che non lo sono, magari e' la data di produzione o qualcosa di simile.e ora veniamo al bello2. Rilevazione Stato Forzature PLC Canali I/OSi avete letto bene cè la possibilità di sapere se un I/O e' forzata o no cosa che l'HOST LINK documentato non Permette..Allora il Comando in questione e' piu articolato e quindi aprite bene le orecchie che si riesce veramente a far scintille !!Ecco un esempio:[at]00MB30841400,80088009800A800B800C800D800E800F800080016E*. Svisceriamo il Comando:[at]00MB3084 = Non lo so -- Prendetelo per buono Cosi.1400 = Sono il numero di I/O da leggere specificati in questo comando viene e' concepito in questo modo e' il numero in byte degli I/O, non preoccupatevi mi spiego meglio.Allora 14 in Decimale e' = 20 quindi 20 / 2 = 10 in tutto questo comando richiede lo stato di 10 I/O, = Non lo so -- Presumo sia un separatore del Comando MB infatti e' presente in tutte le sue forme.8008, 8009, 800A, 800B, 800C, 800D, 800E, 800F, 8000, 8001Questi fantastici numeri sono gli I/O di cui voglio vedere lo stato sono composti della seguente maniera...8 = Non lo so (Presumo sia l'area di memoria per gli I/O forse ereditato dal CV1000)00 = Il numero del canale (Fantastico vero ??? i Chan vanno da 0 a 255 quindi sarà da 00 a FF)8 = Il numero del Bit del Canale e qua apriamo un'altra parentesi dato che non e' vero che 0 = bit 0 ecc.. ma:Considerando i 16 BIT per il canale in HEX: 0123456789ABCDEF, viene eseguito la memorizzazione con l'inversione del Bytecon il piu significativo con il meno significativo, quindi la corrispondenza con il valore fisico e' la seguente:Memoria: 0 1 2 3 4 5 6 7 8 9 A B C D E FBit Fisico: 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7Entusiasmante vero ?Quindi guardando il comando precedente vediamo che eseguo la richiesta di stato dal 0.0 al 0.9 (Totale 10 Bit vedi 1400)Ora vediamo la risposta del nostro PLC in 4 differenti casi: Tutti gli ingressi sono bassi e non forzati.[at]00MB00842800,000000000000000000000000000000000000000000000000000000000000000000000000000000065* Ingresso 0.0 Alto a livello elettrico e non per forzatura.[at]00MB00842800,000100000000000000000000000000000000000000000000000000000000000000000000000000064* Ingresso 0.0 Alto a causa di una Forzatura in Set![at]00MB00842800,000100010000000000000000000000000000000000000000000000000000000000000000000000065* Ingresso 0.0 Basso a causa di una Forzatura in Reset ![at]00MB00842800,000000010000000000000000000000000000000000000000000000000000000000000000000000064*Salta subito all'occhio il Tutto[at]00MB0084 = Header della risposta presumo il 00 prima del 84 sia l'ok del comando2800 = Come per il 1400 citato prima rappresenta il numero dei dati in risposta infatti mi fa 40 in decimale 40 / 2 mi fa 20 effettivamente va bene perchè mi da 2 Word di risposta per ogni BIT vediamo in seguito, = Solito separatorePoi i dati sono rappresentati nella seguente forma0000 = Word che mi indica lo stato del bit = 0 Basso , 1 Alto0000 = Word successiva mi indica lo stato della forzatura = 0 Non forzato, 1 ForzatoQuindi combinando le 2 Word sappiamo se e' forzato e se in forzatura alta o bassa.Per ora e' tutto ma vediamo se piu avanti tempo permettendo si riesce a sviscerare altro di questo comando MB come lo stato delle forzature oltre agli I/0 anche del resto.SalutiLC (Alias Varg) Link al commento Condividi su altri siti More sharing options...
pcontini Inserita: 29 ottobre 2007 Segnala Share Inserita: 29 ottobre 2007 Congratulazioni per la "pazienza " dedicata a sviscerare i più nascosti segreti del protocollo Hostlink.Anche a me era parso chiaro che l'ambiente di sviluppo utilizzasse qualche comandino non dettagliato nella manualistica, ma non avevo mai avuto bisogno di utilizzare null'altro che leggere o scrivere dei valori in memoria e difficilmente avrei intrapreso un'operazione tanto interessante quanto dispendiosa in termini di tempo.Bravo, tienici aggiornati!Ciao Link al commento Condividi su altri siti More sharing options...
varg Inserita: 29 ottobre 2007 Autore Segnala Share Inserita: 29 ottobre 2007 Aggiungo altri punti molto interessanti:3. Rilevazione Stato Forzature PLC Canali HR4. Rilevazione Stato Forzature PLC TIM/CNT 5. Rilevazione Stato Forzature PLC Ausiliari6. Rilevazione Stato Forzature PLC Area Link7. Lettura DM con comando MB a basso livello...3. Rilevazione Stato Forzature PLC Canali HREsempio:[at]00MB30841400,98089809980A980B980C980D980E980F980098016E*Considerazioni:[at]00MB3084 Come per punto 21400 Come per punto 2, Separatore9808980 Offset 0 degli HR quindi andranno per i CPM 2 dato che sono da 0 a 99 vai da 980 a 9E38 Bit di puntamento stesso discorso del Punto 2Risposte sempre come per il punto 2 ovvero 2 Word con Valore e stato forzatura4. Rilevazione Stato Forzature PLC TIM/CNT Esempio:[at]00MB30840400,9400940169*Considerazioni:[at]00MB3084 Come per punto 20400 Come per punto 2, Separatore9400 Offset del del TIM/CNT qua non abbiamo i puntamenti ai Bit quindi va da 9400 per TIM0 al 95FF per il 511Risposte sempre come per il punto 2 ovvero 2 Word con Valore e stato forzatura5. Rilevazione Stato Forzature PLC AusiliariEsempio:[at]00MB30841400,9E489E499E4A9E4B9E4C9E4D9E4E9E4F9E409E416E*Considerazioni:[at]00MB3084 Come per punto 21400 Come per punto 2, Separatore9E4 Offset 0 degli Ausiliari quindi andranno per i CPM 2 dato che sono da 0 a 27 vai da 9E4 a 9FF8 Bit di puntamento stesso discorso del Punto 2Risposte sempre come per il punto 2 ovvero 2 Word con Valore e stato forzatura6. Rilevazione Stato Forzature PLC Area LinkEsempio:[at]00MB30841400,90089009900A900B900C900D900E900F900090016E*Considerazioni:[at]00MB3084 Come per punto 21400 Come per punto 2, Separatore900 Offset 0 degli Area Link quindi andranno per i CPM 2 dato che sono da 0 a 63 vai da 900 a 93F8 Bit di puntamento stesso discorso del Punto 2Risposte sempre come per il punto 2 ovvero 2 Word con Valore e stato forzatura7. Lettura DM con comando MB a basso livelloAlcuni Esempi:Qua leggo dalla DM 0 per 14 DM[at]00MB0D0700000C000E3A*Qua leggo dalla DM 128 per 128 DM[at]00MB0D0700000D008040*[at]00MB0D0700000 = Prendetelo come al solito per Buono cosiC00 = Offset di Start espresso in BYTE quindi per partire dalla DM 10 devo fare C14 = perche Hex 14 = 20 poi 20/2 = 10 Quindi Infatti dopo facendo delle letture da 80Hex Blocchi = 128 DM L'offset cambia ogni volta di 256 = 100Hex0E = Numero di DM da leggere espresso in HEXNota: valgono le stesse regole del protocollo HOST LINK ovvero se la risposta e' lunga viene spezzata in attesa di un CR da parte dell'HOSTEsempio di Risposta[at]00MB00841C00,111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEE1D*Direi che cè Poco da spiegare. Dopo la , ci sono i valori delle DM richiesti.Altra Nota ho effettuato dei Test per verificare se questa tecnica fosse piu veloce del Protocollo con il Comando RDe con mia estrema sorpresa ho notato che sembra piu lento, ovviamente liberi di testare il tutto1 Test:1000 Letture di 10 Dm alla voltaComando RD = media di 0.088s a lettura, totale di 85,563s per tutte le 1000 lettureComando MB = media di 0.099s a lettura, totale di 100,266s per tutte le 1000 letture2 Test:1000 letture di 1 dm alla voltaComando RD = media di 0.046s a lettura, totale di 43,516s per tutte le 1000 letturecomando MB = media di 0.062s a lettura, totale di 58,281s per tutte le 1000 lettureSalutiLC (Varg) Link al commento Condividi su altri siti More sharing options...
Akira Inserita: 2 novembre 2007 Segnala Share Inserita: 2 novembre 2007 veramente complimenti! Link al commento Condividi su altri siti More sharing options...
gianff Inserita: 17 febbraio 2008 Segnala Share Inserita: 17 febbraio 2008 ottimo veramente utile e interessante Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora