Vai al contenuto
PLC Forum


Comunicazione Con Logo 0Ba7


Messaggi consigliati

Inserito:

Ho provato a cercare ma non ho ancora trovato niente di interessante perciò provo a chiedere qui

se qualcuno ha informazioni sui protocolli di comunicazione per leggere e scrivere la memoria del logo;

mi spiego meglio, io ho dei moduli di I/O su ethernet che leggo e scrivo con stringhe mandate su TCP,

è possibile fare la stessa cosa con lo 0BA7?

Posso inviare delle stringhe su TCP che mi modificano byte di memoria?

Non voglio usare librerie già fatte tipo le libnodave ecc. perché vorrei fare delle app specifiche su android tipo

una app che mi accende qualcosa e un'altra che spegne e così via.

Grazie e saluti


Inserita:

Il logo non è un I/O controller.. perciò che io sappia non si può fare .. però puoi mettere in rete fino a 8 logo 0BA7 e usare una cpu come "master" che gestisce il programma e le altre 7 come "slave" solo come periferie I/O digitali e analogici ...

Inserita:

Un po' si può fare, esistono app che possono fare dei minipannelli HMI ma io volevo andare più a fondo,

qualcuno è a conoscenza di documentazione che spieghi il protocollo di comunicazione?

Saluti

Giuseppe Signorella
Inserita:

Il logo se non erro, utilizza il protocollo del suo fratellino maggiore (ed oramai anziano :lol: ) S7 200, pertanto ti consiglio di leggerti la documentazione in merito al protocollo dell' S7 200.

Ciao

Inserita:

...pertanto ti consiglio di leggerti la documentazione in merito al protocollo dell' S7 200.

Magari esistesse una documentazione sui protocolli :smile:

Ci sono esempi con cui far comunicare pannellli, PLC ma niente specifiche.

Bisogna fare tutto con olio di gomito e Wireshark.

Non voglio usare librerie già fatte tipo le libnodave ecc. perché vorrei fare delle app specifiche su android tipo

una app che mi accende qualcosa e un'altra che spegne e così via.

Logo utilizza S7Protocol per il quale non ci sono specifiche ufficiali e purtroppo e molto più complesso di quelli basati su semplici telegrammi per gli I/O ethernet.

Con più complesso non intendo migliore, solo più complesso.

Se ti vuoi avventurare, dai un'occhiata a:

http://snap7.sourceforge.net

Guarda la documentazione online e poi puoi analizzare i sorgenti delle librerie, in particolare s7_isotcp.cpp per lo strato ISO-TCP (RFC1006) e s7_micro_client.cpp per l'implementazione di S7.

Se ritieni di proseguire ti posso supportare volentieri, un porting per Android non può che farmi piacere ;)

Davide

p.s.

Snap7 attualmente non supporta LOGO 0BA7, o meglio per funzionare bisogna intervenire sui TSAP in fase di connessione.

E' una complicazione "lato utente" che voglio evitare .

Ho notato che questo oggettino sta riscuotendo un successo enorme, per cui preferisco fare un lavoro pulito e soprattutto ben documentato,

Stay tuned...

Inserita: (modificato)

Ho trovato una vecchia discussione su S7 300 che parla di una soluzione funzionante con winsock di visualbasic:

Soluzione funzionante da me utilizzata:

CPU : 315
Ethernet: Qualsiasi x serie 300
Config. ethernet con FETCH/WRITE passive sulle porte 2000 e 2001

SW: Sviluppato in VB6 utilizzando il socket

Esempio:

Dim sData As String
sData = "S5" ' Codice Sistema (Fisso)
sData = sData & Chr(16) ' Lunghezza Header (Fisso)
sData = sData & Chr(1) ' ID OP (Fisso)
sData = sData & Chr(3) ' Lunghezza OP (Fisso)
sData = sData & Chr(Cod) ' Codice OP 5=fetch 3=Write
sData = sData & Chr(3) ' Blocco ORG (Fisso)
sData = sData & Chr(8) ' Lunghezza blocco org (Fisso)
sData = sData & chr$(Id) ' Identificazione org.
'1=DB, 2=M ;3=E ;4=A
sData = sData & chr$(BlockNum) ' N° blocco da scrivere
'(Utilizzato 'solo per le DB)
sData = sData & chr$(FromHighByte) ' Indirizzo iniziale High byte
sData = sData & chr$(FromLowByte) ' Indirizzo iniziale Low byte
sData = sData & chr$(LenHighByte) ' Lungh.dati in words - High byte
sData = sData & chr$(LenLowByte) ' Lungh.dati in words - Low byte
sData = sData + Chr(255) ' Blocco libero (Fisso)
sData = sData + Chr(2) ' Lunghezza blocco libero (Fisso)

Winsock.SendData sData

Riceverai un pacchetto simile ma con i dati in coda.

Ho provato ma le porte non sono due ma una sola (10001) e quando vado a leggere le risposte ottengo un errore sulla winsock.

Con wireshark mi sono arenato,

ho monitorato la comunicazione fra la app "LOGO! App" di siemens e uno 0BA7 e il codice di sistema S5 non c'è nelle stringhe di comunicazione.

Nel manuale NCM S7 verso la fine c'è la descrizione su come comunicare con FETCH/WRITE; ci sto lavorando.....

Saluti

Modificato: da Mircoron
Inserita:

Che io sappia LOGO non gestisce il protocollo fetch/write (ma non vorrei sbagliarmi).

Il protocollo FW è un vecchio protocollo Siemens per scambiare dati nei sistemi S5, reso disponibile nel firmware dei PLC S7 per compatibilità, infatti molto spesso negli esempi/documentazione ufficiali troverai la rete mista S5/S7, non viene utilizzato per altro che io sappia.

S7Protocol è un protocollo PG, viene utilizzato dalla "valigia di programmazione" per gestire completamente il PLC up/download programmi, configurazione hardware, e come piccolo sottoinsieme, accedere alle risorse dati DB/E/A ecc..

Se vuoi usare Wireshark senza impazzire scarica il plugin s7comm da sourceforge ;)

Un'ultima raccomandazione, leggi la documentazione Siemens relativa alla comunicazione come se fosse un' "opuscolo informativo", hanno reso la cosa così complicata che non sono riusciti nemmeno a farsi capire dal personale che scrive i manuali.

Per rimanere nel contesto, tratto dal manuale Fetch/Write (23592043) leggiamo:

The SIMATIC NET PC software is installed on the PC station. The scope of delivery of the SIMATIC NET PC software includes the SIMATIC NET OPC server.
It is used to access the process data of the CPU 319-3PN/DP via the TCP or ISO on-TCP connections using the FETCH and WRITE services.

Come puoi tu stesso vedere la comunicazione FW utilizza uno stream TCP standard, non vi è traccia degli headers TPKT e COTP previsti da RFC 1006. Poi si incartano con gli stack ISO/OSI... una tragedia :(

Davide

Giuseppe Signorella
Inserita:

hanno reso la cosa così complicata che non sono riusciti nemmeno a farsi capire dal personale che scrive i manuali.

:roflmao::roflmao::roflmao:

Questa è bellissima,

Inserita: (modificato)

Questa è una discussione che mi piace! Grazie dan64100.

Altre informazione che sono riuscito a trovare dall'app OBA7 HMI LITE

Ho visto che parecchio esperto, che mi puoi dire?

Descrizione
OBA7 HMI est une solution logicielle mobile pour pour communiquer avec le Logo! 0BA7 Siemens nouvelle version avec port Ethernet. La connexion est possible sur réseau WiFi ou mobile 3G/EDGE (dyndns) .Vous pouvez contrôler la totalité des 850 octets de la mémoire de l'automate ,lire les entrées, les sorties et lire et écrire les blocs de données et mémentos

Le format des valeurs de la mémoire peut être de type bool, entier signé et non signé 16/32 bit et réel(Virgule)

Pour communiquer avec le Logo! 0BA7 , j'ai utilisé la libraire "libnodave" (http://libnodave.sourceforge.net/) TCP RFC 1006 est basée sur le protocole TCP et permet une liaison fiable entre deux systèmes.
RFC 1006 est utilisée pour les communications standard dans l'environnement SIMATIC.

Domaines d'application :
STEP 7 Programmation à distance via LAN
STEP 7 Programmation à distance via ISDN
Liaisons ISO-on-TCP
Liaisons S7 via Industrial Ethernet

Dans tous les cas le port TCP 102 doit être ouvert.

Note
Le port 102 est bloqué par défaut sur les routeurs et les pare-feu et doit absolument être ouvert sur l'ensemble du chemin réseau.

si vous avez des problèmes, s'il vous plaît envoyez-moi un e-mail.

S'il vous plaît soyez sur de ce que vous faites. Par ailleurs, je rappelle les avertissements de l'auteur de libnodave, que le code de libnodave est encore bêta et vous assumez l'entière responsabilité de son utilisation.

Logo! est une marques déposée de Siemens AG

Cette version est limitée a 10 objets par page

Manuel utilisateur ci-dessous

http://www.2shared.com/document/WdDxeOQa/Manuet_utilisateur_OBA7_HMI.html

Grazie di cuore per l'aiuto.

Ciao

Modificato: da Giuseppe Signorella
Inserita:

Intanto beccati questo, ricordavo che c'era e alla fine l'ho trovato :

http://www.plcforum.it/f/topic/14228-controlla-e-comanda-variabili-da-android/

E' un'applicazione scritta da Adriano71 un'utente PLC Forum quindi roba DOC ;) (e se leggi i commenti anche molto buona).

Quello che c'è nella descrizione che alleghi conferma quanto ti ho già scritto, il LOGO usa S7Protocol, però mi rendo conto dell'equivoco ed ora mi spiego meglio.

Facendo riferimento a questa immagine : http://snap7.sourceforge.net/siemens_comm.html#s7_protocol

Spesso (Siemens per prima) si afferma che ISO-TCP sia il protocollo di comunicazione dei PLC S7.

Questo tecnicamente è errato, ISO-TCP è il protocollo "di trasporto", se leggi RFC 1006 (http://www.rfc-base.org/txt/rfc-1006.txt) non trovi traccia di DB, Merkers o quant'altro.

S7Protocol è incapsulato in esso ed ha le sue brave regole, spesso vengono confusi, ecco perché a volte trovi ISO-TCP a volte S7Protocol.

(Se vogliamo fare i sofisticati Siemens non si attiene alle specifiche per ciò che concerne SrcRef/DstRef e non specifica le massime frammentazioni).

Detto questo, S7Protocol (se non ci fossimo fatti già abbastanza male) si presenta in due varianti (che non trovi nei doc. Siemens) quella classica e quella estesa.

Quella classica S7200/300/400 è completamente in chiaro , quella estesa (S71500) prevede la cifratura di parte dei telegrammi.

Quella estesa scatta dopo il riconoscimento della CPU in fase di connessione ISO.

E' stata introdotta dopo che in seguito a Stuxnet qualcuno si è interessato a verificare la sicurezza dei PLC ed gli ha fatto le pulci (http://ics-cert.us-cert.gov/alerts/ICS-ALERT-11-204-01B).

S7200 non è una variante del protocollo, cambiano solo i parametri di connessione (i TSAP per intenderci), il LOGO usa questi parametri.

Motivo per cui se ti fai un giro sui manuali degli scada/HMI commerciali ti dicono di settare il partner come S7200.

Veniamo ad Android.

Libnodave esiste in una versione Java che attualmente è l'unica strada credibile per programmare Android (non dimentichiamo che mancano le GLIBC per cui quello che scrivi in C/C++ deve passare tutto da NDK).

Dipende a questo punto dal tuo target:

Se il tuo scopo è divertirti a scrivere software di comunicazione (divertimento condivisibile :smile:) devi partire da Java (con l'aiuto di Libnodave-Java) e Wireshark+S7Comm.

Se ti interessa pilotare le tue utenze, usa Libnodeve così com'è, e costruisci il tuo programma di gestione.

In ogni caso S7Protocol è quello che devi masticare.

Comunque vada sarà un successo ;)

Ciao

Davide

Inserita:

La strada che volevo percorrere non era fare un HMI ma delle app specifiche,

io lavoro in un laboratorio prove e spesso capita di fare macchine per prove cicliche,

uso molto i LOGO ma una cosa che mi hanno chiesto in diversi è: non c'è modo di sapere a distanza a che punto della prova ciclica si è?

I programmini che vorrei fare sono molto specifici tipo avviare una app che mi legge il numero del contatore di quella macchina, lo fa vedere ed esce con ok.

Ho trovato un modo di programmare molto semplice con RFObasic http://laughton.com/basic/ e di questo esiste anche il compilatore

che attraverso eclipse genera l'app bella che pronta.

Evitare libnodave mi eviterebbe il dover scrivere in java (mai studiato) ma se questa è l'unica strada mi toccherà percorrerla <_<

Intanto grazie molte e appena avrò raggiunto qualche risultato ve ne renderò partecipi,

saluti

Inserita: (modificato)

Hai già aggiunto informazioni più precise, tipo l'ambito di lavoro.

Puoi pensare di mettere tutti i LOGO in rete (non che debbano lavorare insieme, solo collegati allo stesso switch).

Usi un Raspberry come raccolta dati (e quì hai molta più libertà di movimento Libnodave Snap7 o quant'altro).

Nel Raspberry attivi un web server e ti connetti da Android/iPhone.

Se vuoi risparmiare tempo, il libro che vende Futura Shop sul Raspberry è molto ben fatto e contiene degli esempi pratici con Ajax, quindi roba performante.

Altra soluzione se hai un minimo di budget è quella di mettere un S71200 che raccoglie i dati dai LOGO, S71200 ha il web server integrato.

Facci sapere

Modificato: da dan64100

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...