luciopro Inserito: 17 dicembre 2007 Segnala Inserito: 17 dicembre 2007 Salve ragazzi,sto utilizzando un plc della wago 750-841 con a bordo una seriale 750-653 con baudrate programmabile.La seriale l'ho programmata come segue:38400, 8bit , 1 stop bit, outpuf format standard. 5 byte, halfduplex, xon/xoff OFF, type 485 continuos send ON; utilizzando il software I/O ceckA livello di codesys ho utilizzato la loro libreria Modb_I05.lib, il PLC è master, ed i parametri sono impostati al valore 16#7FFF che dovrebbe corrispondere al default.ecco il codice(*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*)MODBUS_MASTER( (* Utilizzo lbreria standar *) bCOM_PORT:=2 , (* Numero portaseriale 1-seriale cpu 2- 1°seriale installata sugli I/O 3- 2°seriale installata sugli I/O ecc. *) cbCOM_BAUDRATE:=16#7FFF , (* Velocità comunicazione 960=9600 1920=19200 3840=38400 *) cpCOM_PARITY:=16#7FFF, (* Parità 0=Disabilitata 1= Pari *) csCOM_STOPBITS:=16#7FFF , (* Lunghezza stop bit *) cbsCOM_BYTESIZE:=16#7FFF , (* Lunghezza dati *) cfCOM_FLOW_CONTROL:= 16#7FFF, (* Controllo hardware *) TimeOut:=t#200ms , (* Timeout= Tempo Attesa Ripsosta *) StartFunction:= StartLetturaModbus, (* Bit abilitazione comando *) Query:=Comando , (* Comando: Vedi dichiarazione variabile per descrizione word *) Response:=Risposta , (* Risposta: Vedi dichiarazione variabile per descrizione word *) MB_Error=>Errore ); (* Errore: Vedi dichiarazione variabile per descrizione word *)(*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*)Veniamo al problema.Normalmente funziona tutto egregiamente. Se tuttavia spengo e riaccendo il PLC; anche avendo dato il comando Online "Create boot Project" (comando eseguito mentre sono online con il PLC), il PLC si pianta.Cioè tiene il programma, mi collego, non perde i dati, ma la comunicazione modbus non parte più. Attivo il bit di comando Start Lettura modbus, ma non succede niente, non manda i dati sulla 485.L'unico modo per ripristinarne il funzionamento è collegarmi con Ethernet I/O setting, ripristinare le mpostzioni di fabbrica, scaricare nuovamente il software codesys e quindi il tutto riparte fino all'accensiva riaccensione.Punto 2: gestione memoria.Il PLC è collegato tramite modbus TCP/IP ad un pannello Touch Schneider XBTGT.Ora per potere effettuare lo scambio dei dati devo allocare obbligatoriamente le variabili. All'interno del software ho quindi sia variabili allocate sia variabili non allocate.Il problema è che mi sono accorto che alcune variabili allocate sovrascrivevano variabili non allocate; praticamente puntavano alla stessa area di memori.Questo sicuramente è dovuto ad un errore mio nell'allocazione di memoria nel targhet setting e qui vi chiedo consiglio.Come si devono settare le opzioni in targhet setting -->memory per non avere questo problema??In tale schermata è possibile impostare due parametri :Memory 16#3000000 16#6000Retain 16#3006000 16#6000Io li ho settati come sopra senza sapere esattamente cosa indicano?? Premettiamo che utilizzo solo variabili RETAIN e mi servono circa 12000 MW per il dialogo con il pannello.In Targhet Setting--> General ho spuntato solo l'opzione Online Change; ne devo abilitare altre???Scusate per le banalità ma purtroppo non ho molta esperienza con tale PLC.Grazie
luciopro Inserita: 18 dicembre 2007 Autore Segnala Inserita: 18 dicembre 2007 Salve ragazzi,ho risolto. Posto la soluzione dato che potrebbe essere utile anche ad altri.Errore 1: avevo selezionato nella configurazione hardware una scheda seriale a 3 byte, mentre era configurata a 5. Ho sostituito la scheda con quella corretta.Errore 2: Avevo settato in modo errato l'utilizzo della memoria.Memory 16#3000000 16#6000Retain 16#3006000 16#6000Entrambe le aree possono avere una lunghezza massima di 24 K (16#6000). io avevo utilizzato in malomodo tale impostazione andando a posizionare l'area retain in un'area di memoria non corretta.Risolto settando la memoria ne seguente modo:Memory 16#3000000 16#5500Retain 16#3005500 16#500Attenzione: il wago permette questi errori e compila enza problemi!!!!Alla prossima
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