baraz Inserito: 25 marzo 2015 Segnala Inserito: 25 marzo 2015 buongiorno, è la prima volta che scrivo nel forum. Fino a oggi sono riuscito a cavarmela coi miei esperiemti e per questo ringrazio il forum... Purtroppo non riesco a completare l'ultimo progettino che avevo in mente.... non riesco a far leggere/scrivere arduino nel DB del s7-1200... Ho letto la guida di dan64100 su settimino ed utilizzato i sui esempi.... (ottimi esempi professionali e precisi). Mi spiego nel dettagli: Utilizzo un Arduino Ethernet e una CPU S7-1214 AC/DC/Rly FW3.0 . Arduino effettua correttamente la connessione e sembra che non mi "trovi" il mio DB1 con questo errore. la variabile che voglio leggere/scrivere è di tipo Int. e nel programma della CPU ho compilato il comando T_send C con l'erroe che ne si vede dalla foto Sono a richiedere aiuto ed se ne qualcuno ne è a conoscenza di qualche guida sullìindirizzamento assoluto e/o consigli per completare il progettino. Ringrazio in aticipo Roberto
walterword Inserita: 25 marzo 2015 Segnala Inserita: 25 marzo 2015 ma il DB1 l'hai compilato e caricato nel plc? Perche qua sembra un errore di TIa porta step 7 piu che arduino
baraz Inserita: 25 marzo 2015 Autore Segnala Inserita: 25 marzo 2015 Il DB1 me lo da compilato correttamente. L'errore di TIA è sul comando DATA di TSEND_C non sulla compilazione del DB , forse è dovuto dal fatto che la variabile sia di tipo INT ma non credo...
walterword Inserita: 25 marzo 2015 Segnala Inserita: 25 marzo 2015 se clicchi sul blocco tSend e premi F1 ti si apre la guida cosi puoi guardare che parametri vuole , come li vuole ect
Giuseppe Signorella Inserita: 25 marzo 2015 Segnala Inserita: 25 marzo 2015 (modificato) Ho utilizzato una sola volta la libreria settimino per un test, ma se ricordo bene, in primi s il blocco non deve essere ottimizzato, quindi togli la spunta qual'ora fosse presente sulla voce "ottimizzato" nelle proprietà del blocco stesso. Poi non comprendo del perché hai utilizzato il blocco T_SEND. La libreria settimino legge e scrive le aree di memoria del PLC (blocchi compresi) direttamente, quindi senza l'ausilio di alcun blocco per l'invio e la ricezione dei dati sull' Ethernet, in quanto utilizza il protocollo nativo del PLC (Profilnet) Modificato: 25 marzo 2015 da Giuseppe Signorella
baraz Inserita: 25 marzo 2015 Autore Segnala Inserita: 25 marzo 2015 Risolto la lettura.....evviva maledetta ottimizzazione dei DB che non mi permetteva l'indirizzazione assoluta delle variabili domani mi inoltro nella scrittura.. ... qualcuno ci ha già provato?? grazie del supporto
baraz Inserita: 26 marzo 2015 Autore Segnala Inserita: 26 marzo 2015 Legge e scrive benissimo ... grazie molte
Giuseppe Signorella Inserita: 26 marzo 2015 Segnala Inserita: 26 marzo 2015 Prego, Perchè non posti qui il codice di esempio con una piccola descrizione? Sono sicuro che potrà essere di aiuto anche ad altri utenti. Ciao
dan64100 Inserita: 26 marzo 2015 Segnala Inserita: 26 marzo 2015 Legge e scrive benissimo ... E pensa che ha solo un anno e mezzo
baraz Inserita: 30 marzo 2015 Autore Segnala Inserita: 30 marzo 2015 La libreria settimino diventa più grandicella.... speriamo non smetta di crescere.......... ora devo convertire una variabie int in una void cosi da poter scrivere tramite arduino e le librerie di settimino , facendo lavorare arduino come una sorta di I/O remoto....... :wacko:
baraz Inserita: 30 marzo 2015 Autore Segnala Inserita: 30 marzo 2015 Risolto .... A presto pesento piccolo esempio di scrittura............
baraz Inserita: 17 aprile 2015 Autore Segnala Inserita: 17 aprile 2015 Ciao.. un pò in ritardo ma qui sotto il post col codice implementato alla libreria settimino di dan64100 hardware: Arrduini Ethernet S7-1200 CPU 1214 FW 3.0 router PC Per quanto riguarda Arduino,il codice va ad implemento del file esempio ReadDemo della libreria settimino, non ho fanno nient'altro che seguire la guida ed invertire i 2 byte della variabile per trasmetterla correttamente al PLC. Invece per il PLC creato una Variabile e un DB DB1.DW0 tipo int. //---------------------------------------------------------------------- // Programm_for as to variable Int //---------------------------------------------------------------------- bearing = 1234; //// cost. Serial.println(bearing); delay(1000); //---------------------------------------------------------------------- // Start connessione DB //---------------------------------------------------------------------- #ifdef DO_IT_SMALL Size=2; Target = NULL; // Uses the internal Buffer (PDU.DATA[]) #else Size=1024; Target = &Buffer; // Uses a larger buffer #endif // Connection while (!Client.Connected) { if (!Connect()) delay(500); } //---------------------------------------------------------------------- // modifica void... //---------------------------------------------------------------------- int VAR1 = bearing; byte* bytes = (byte*)&VAR1; //---------------------------------------------------------------------- // Reverse word/int //---------------------------------------------------------------------- void Reverse2(void *bytes); { byte *pb; byte tmp; pb=(byte*)(bytes); // Swap byte 2 with byte 1 tmp=*(pb+1); *(pb+1)=*pb; *pb=tmp; } //---------------------------------------------------------------------- // Serial check //---------------------------------------------------------------------- Serial.print("Write ");Serial.print(Size);Serial.println(" bytes from DB1.DBW0"); // Put the current tick MarkTime(); Result=Client.WriteArea(S7AreaDB, // We are requesting DB access 1, // DB Number = 1 0, // Start from byte N.0 Size, // We need "Size" bytes bytes); // Put them into our target (Buffer or PDU) if (Result==0) { ShowTime(); Dump(Target, Size); } else CheckError(Result); delay(500); } Semplice e funzionale.... ... attendo critiche da i programmatori più esperti... :P e ringrazio di nuovo.
Hicham Haraki Inserita: 21 settembre 2015 Segnala Inserita: 21 settembre 2015 Bongiorno BARAZ ,Per favore, lei puo mandarmi i 2 file arduino e S7-1200 , cosi posso capire bene. Per la Mia tese .Grazie
baraz Inserita: 28 settembre 2015 Autore Segnala Inserita: 28 settembre 2015 Ciao Hicham Haraki,se scrivi sul buon google "settimino s7-1200" la prima voce è il sito internet con tutte le spiegazioni, anche perchè non credo di essere in grado di dare una mano per una tesi.Posso dirti crea su TIA un DB1 non ottimizzato ,nel DB1 crea una variabile tipo "Int" .Prendi il file dal pacchetto demo che puoi scaricare sul sito che ti ho detto prima,leggi le note sul file "ReadDemo.ino" ti dirà di cambiare l'indirizzamento del rack e delle slot del PLC,dopo di che indirizzi il "Client.ReadArea(S7AreaDB.. " sul DB1 poi sulla variabile 1.Dall guida in pdf trovi la spiegazione passo passo per creare : Result=Client.WriteArea(S7AreaDB, // We are requesting DB access 1, // DB Number = 1 0, // Start from byte N.0 Size, // We need "Size" bytes bytes); // Put them into our target (Buffer or PDU) Non ho fatto nient'altro, che leggere la spiegazione... a disposizione.baraz
baraz Inserita: 31 ottobre 2015 Autore Segnala Inserita: 31 ottobre 2015 ciao,per caso qualcuno di voi ha provato le librerie settimino su un s7-1200 fw 4.01?? riscontro dei problemi con PDU errore 0x100...::'??? vi terrò aggiornati Grazie
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