EFFETTOMAURO Inserito: 2 ottobre 2007 Segnala Share Inserito: 2 ottobre 2007 Salva a tutti, sono un nuovo iscritto e trovo questo sito molto interessante, ho pensato di esporre un quesito che mi assilla da molti giorni e non vi nascondo anche con qualche notte insonne per risolvere il seguente problema:Utilizzo come molti di voi la libreria free LIBNODAVE per collegarmi con un PC e VB ad un qualsiasi PLC della serie SIEMENS sia S5 che S7, bene ora ho la necessità di collegarmi ad un PLC SIMATIC 155U per leggere e scrivere delle DB ma il collegamento non funziona sfornando continui errori -14, ho provato e riprovato ma nulla di fatto, utilizzo i seguenti parametri di conessione:RS232 TTY AS511, Porta Comx, 9600 Baud, Parita E. Funziona con tutti i PLC della serie S5 meno che con questo Perchè?Chiedo a tutti di aiutarmi per risolvere questo dilemma. Link al commento Condividi su altri siti More sharing options...
Bruno Inserita: 4 ottobre 2007 Segnala Share Inserita: 4 ottobre 2007 CiaoPost molto interessante, io pensavo che il protocollo del 155 fosse uguale agli altri (anche se la gestione dei dati su DB è leggermente diversa).Premetto che non ho un 155 per fare delle prove, ma ti chiedo lo stesso un paio di precisazioni:1) errore -14 ? Fai riferimento agli errori della libreria ? Non ho trovato tale errore in LibNoDave....2) L'esempio per S5 presente nella libreria (testAS511) dove va in errore ? che messaggi ti da ?3) Quale è il punto in cui va in errore ? (daveNewInterface, daveInitAdapter, daveNewConnection, daveConnectPLC o operazioni di lettura/scrittura) ?un altro consiglio: contatta l'autore (Thomas) attraverso il forum su sourceforge, è una persona molto disponibile e chiaramente preparata sul prodotto.(ogni tanto legge anche questo forum).Quando scopri faccelo sapere ! Interessa molto (almeno a me interessa molto).CiaoBR1 Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 4 ottobre 2007 Segnala Share Inserita: 4 ottobre 2007 RS232 TTY AS511, Porta Comx, 9600 Baud, Parita E. Funziona con tutti i PLC della serie S5 meno che con questo Perchè? Dunque, mi ricordo di avere avuto dei problemi simili, lavorando coll' AS511 (non Libnodave) direttamente.. su qualcuna CPU appartire della 944.. Infatti, le CPU 945/946/ 948 forse presentano delle propieta' un po particolari con respetto alle altre.. non mi ricordo se si trattava di un discorso di piedinatura HW o se era qualcosa nella parametrizzazione della COM oppure nella intestazione dei telegrammi di communicazione. Link al commento Condividi su altri siti More sharing options...
EFFETTOMAURO Inserita: 4 ottobre 2007 Autore Segnala Share Inserita: 4 ottobre 2007 Dal momento che qualcuno mi abbia risposto già mi riempie di immensa speranza !.Spesso parlando con altre persone si mettono insieme esperienze che spessoportano alla soluzione.....Avrò la possibilità di eseguire ulteriori test fra un paio di giorni cerchero di eseguire un debug puntoper punto per vedere su quale routine si genera l'errore, sarò qui con le dovute risposte prestissimo.Per il momento grazie dell'interessamento. Link al commento Condividi su altri siti More sharing options...
EFFETTOMAURO Inserita: 8 ottobre 2007 Autore Segnala Share Inserita: 8 ottobre 2007 Salve, eccomi qui a far luce su questo problemone "ancora non risolto" .Ho avuto modo di realizzare due test :1) utilizzando la libreria LIBNODAVE con un programma che ho scritto io in visual basic .2) un test con l'esempio scritto sempre in vb scaricato nella sessione Download di questo sito.Il risultato del primo:Parametri utilizzati S5 TTY 9600 Baud Parita EDebug routine per routine: PH = SetPort(Port,baud$.......... PH = 424 DI = davenewinterface(Ph,..... DI = 24643288 RES = Daveinitadapter(DI) RES = 0 DC = Davenewconnection(di....... DC = 24649792 RES = DaveConnectplc(Dc) RES = -14 < ErroreIl risultato del secondo:Parametri utilizzati S5 TTY 9600 Baud Parita EDebug routine per routine:-> Connessione al plc attraverso il pulsante "connetti" Genera: OK -> Read DB -> Genera allarme: Lettura DB int Errore -64-> Read M -> Genera allarme: Lettura merker int Errore -14-> Lettura SZL Genera allarme: Provoca errore irreversibile ed esce dall'applicazioneL'errore si genera all'interno del programma sulla routine-> function readdb_plc(............-> PLC.RETVAL = DavereadByte(plc........Comunque il problema risiede sull'indirizzamento che risulta essere al contrario rispetto alresto della serie S5.Ho raccolto anche il vostro consiglio nell'esporre la problematica a Thomas, ma per oranon ho avuto risposta.Spero di aver chiarito la situazione "che è tragica!", vi ringrazio ancora se se vogliamoancora eseguire delle prove e fugare dubbi fatemi sapere, vi ringrazio fin d'ora. Link al commento Condividi su altri siti More sharing options...
dago_ Inserita: 8 ottobre 2007 Segnala Share Inserita: 8 ottobre 2007 Hai provato con un PC "lento" ? Di quelli con una RS232 degna di questa sigla ? Magari, delle volte... Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 8 ottobre 2007 Segnala Share Inserita: 8 ottobre 2007 (modificato) Init:9600 EVEN stop(2) Word size(8) ------------------------------------- 111 11 1 11-> Read DB -> Genera allarme: Lettura DB int Errore -64 Prima del AG_Read, bisogna ricavare l'indirizzo del DB con AG_Info .. Comunque il problema risiede sull'indirizzamento che risulta essere al contrario rispetto alresto della serie S5. Modificato: 8 ottobre 2007 da Savino Link al commento Condividi su altri siti More sharing options...
Bruno Inserita: 8 ottobre 2007 Segnala Share Inserita: 8 ottobre 2007 Aluni punti:1) Io per esperienza quando utilizzo le connessioni seriali con LibNoDave dopo il DaveNewInterface() e prima del DaveInitAdapter()setto un timeout maggiore (come letto nelle note di Thomas) con Call daveSetTimeout(PLC.dInterf, 500000)...2) Quanti byte leggi ? Oltre 240 ? (ti prego rispondi di si che è un errore)3) Hai provato l'esempio presente nella libreria (testAS511.exe) ? Visualizza un sacco di debug e ti potrebbe aiutare.Purtroppo non ho un PLC per provare...BR1 Link al commento Condividi su altri siti More sharing options...
EFFETTOMAURO Inserita: 8 ottobre 2007 Autore Segnala Share Inserita: 8 ottobre 2007 Per rispondere a Dago:Penso che un computer lento o veloce rispetti comunque le velocità del protocollo seriale e quindi non credo che sia li il punto, comunque utilizzo computer adatti allo scopo, Pentium 4 con XP, ripeto comunque che riesco tranquillamente a collegarmi sulla porta di tutta la serie di plc sia S5 che S7 anche con protocolli diversi dalla seriale, il problema risiede solo sul SIMATIC 155.Per rispondere a Bruno:1) Si effettivamente solo collegandomi sulla serie S5 è stato necessario attivare il timeout cosi come consigliato nel driver (libnodave) riga che normalmente è remmata.2) Per numero di byte (DW) ho provato chiaramente a leggere da una sola DW a tutto il " cucuzzaro -) " ma l'errore è sempre li in guardia !3) L'esempio testas511.exe risponde sempre con il solito errore.Oggi ho avuto modo di contattare una software house di mia conoscenza dove ho esposto il mio problema, disposto anche ad acquistare presso di loro e un driver funzionante questa è stata la risposta:Si noi abbiamo creato il software di connessione per il 155 ma con 1000 problemi perchè l'indirizzamento delle delle tabelle/merker è diversa rispetto alla serie dei fratelli S5 (AL CONTRARIO!)La siemens poi è molto restia a dare suggerimenti quindi abbiamo raggiunto il risultato con molto fatica, ora il problema è questo stiamo parlando di un driver costruito nel 1995 !, le persone che lo hanno realizzato non lavorano più con noi e anche trovandolo non abbiamo un PLc di questa serie per eseguire delle prove di funzionalità per garantire il prodotto.Quindi non è per noi un prodotto fornibile.Questa è stata la risposta della software house che però mi ha proposto un'alternativa, dal momento che il problema è di leggere e scrivere delle DB e non ho la necessità di indirizzarmi sulle porte di ingresso e uscita, possono fornirmi un collegamento sempre in seriale ma sulla porta 524 (seriale) dell'Ag.In questo caso la cosa è fattibile dal momento che il protocollo è ancora "vivo" anzi adirittura esistono dei convertitori software per adattarlo alla serie S7.Penso di aver fatto chiarezza sul perchè non si riesce a collegarsi attraverso la libreria LIBNODAVE al 155.Quindi ora i casi sono due, esiste una parametrizzazione della libnodave che prevede il protocollo 155 ? Qui magari ci può rispondere il Sig Thomas ? Oppure uno di voi che ha avuto esperienza ?O ancora come suggerisce la software house andare sulla 524 (seriale) e comunque va scritto un po di software sia sull'ag che sul PC !Ma anche qui chi ha esperienza in questo ?Voi che cosa ne pensate ? Mi devo buttare al fiume ? -)MM Link al commento Condividi su altri siti More sharing options...
Bruno Inserita: 9 ottobre 2007 Segnala Share Inserita: 9 ottobre 2007 La libreria LibNoDave per il collegamento seriale diretto sulla CPU della serie S5 si basa sul protocollo AS511,questo protocollo non è molto difficile e in rete si riesce a trovare qualcosina.Se ben ricordo Dago aveva messo a disposizione un esempio in VB6 proprio su PLC Forum.Io in passato l'avevo usato (prima di conoscere le DLL di libnodave), se ti interessa questo è il mio modulo modProtocol_S5, perquanto riguarda il codice è stato testato su S5-115 e S5-95.A questo punto probabilmente non funziona su S5-155, ma con un poco di debug magari trovi le differenze e risolvi il tuo problemaimmediato (così non devi inserire codice su PLC e nemmeno schede).Ultimo passo una volta fatto tutto ci illumini anche noi ! BR1Istruzioni per utilizzo modulo, per richiamare le funzioni questo può essere un esempio:Global BufferRead(0 To 1025) As Integer Dim Start As Integer Dim AreaSize As Integer Dim AreaNum As Long Dim Result As Long Dim iMyLow As Integer Dim iMyhigh As Integer ' Inizializzzo la porta seriale verso il PLC S5 res = modProtocol_S5.ApriPorta(frmMain.PlcPort) ' frmMain.PlcPort è un oggetto ComPort If (res = 0) Then ' Porta seriale aperta OK ' Controllo collegamento con il PLC res = modProtocol_S5.check_ag(frmMain.PlcPort) If (res = 0) Then ' Connessione avvenuta ok Else ' Connessione Fallita End If Else ' Apertura seriale fallita End If ' Leggo DB1 da Word 0 per 10 word AreaNum = 1 Result = modProtocol_S5.ag_block_info(frmMain.PlcPort, AreaNum, iMyLow, iMyhigh) If Result = 0 Then ' Leggo area sul PLC AreaSize = 10 Start = 0 Result = modProtocol_S5.ag_read(frmMain.PlcPort, BufferRead(), iMyLow, iMyhigh, AreaSize, Start) If Result = 0 Then ' Puoi leggere i dati End If End If Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 9 ottobre 2007 Segnala Share Inserita: 9 ottobre 2007 Penso che un computer lento o veloce rispetti comunque le velocità del protocollo seriale e quindi non credo che sia li il punto, beh, non sarei cosi sicuro..La sincronizzazione del pooling che e' fondamentale, sovratutto coll'AS511 , la stabilisci te, a secondo l'HW a disposizione e il tool di programmazione utilizzato. Secondo il mio modesto punto di vista ed esperienza con AS511, provarei con un MSDOS o Win95/98 e un C++ e ASM...Allora si farai un bel debug, e magari capirai dove si blocca il telegramma, andando passo a passo, monitorando il registro di stato della linea. Ricordati che l'AS511 e' una interfaccia super sincronizzata, quindi basta niente per andare in errore. Link al commento Condividi su altri siti More sharing options...
Bruno Inserita: 9 ottobre 2007 Segnala Share Inserita: 9 ottobre 2007 Confermo quello detto da Savino sulle problematiche delle tempistiche,aggiungo anche (mi ero dimenticato prima) che nel modulo che ho postato è impostata una variabilechiamata gnRitFinePacchetto (normalmente impostata tra 30 e 40) rappresenta i millisecondi per definirela fine del pacchetto in ricezione.Tornando a libnodave, considera che è nato per linux e il porting su windows in caso ethernet è abbastanza trasparente mentreper il caso seriale vi sono alcune differenze.... quanda caso proprio nell'apertura della com.Ti consiglio di fare una provettina scrivendo il codice e debuggandolo (voce del verbo debuggare ) guardando quello che ricevi sulla seriale,non ti preoccupare che ci riesci !CiaoBR1 Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 9 ottobre 2007 Segnala Share Inserita: 9 ottobre 2007 (modificato) La siemens poi è molto restia a dare suggerimenti.. Non penso la Siemens darebbe informazione riguardo all' AS511( nonostante la fuga d'info allora avuta) o altra interfaccia simile tipo MPI/Profibus.. personalmente Io non avrei ne anche chiesto..Quindi ora i casi sono due, esiste una parametrizzazione della libnodave che prevede il protocollo 155 Scusa, quale e' la CPU in questione ?Tornando a libnodave, considera che è nato per linux e il porting su windows in caso ethernet è abbastanza trasparente mentreper il caso seriale vi sono alcune differenze.... quanda caso proprio nell'apertura della com Sono d'accordo..guardando quello che ricevi sulla seriale,.. Infatti... controllando il registro dello stato della linea, e analizzando il codice del byte arrivato nel registro di ricezione del UART, quindi filtrando gli eventuali errori di linea (sovrascrittura, time out, etc) di quelli del protocollo stesso ( STX, DLE, ACK, NAK..etc)..ma ripeto, fai attenzione alla tempistica dei telegrammi. Modificato: 9 ottobre 2007 da Savino Link al commento Condividi su altri siti More sharing options...
EFFETTOMAURO Inserita: 10 ottobre 2007 Autore Segnala Share Inserita: 10 ottobre 2007 Salve,eccomi qui ho letto tutti i vostri consigli, quindi procedo con il debbugare, ho scaricato il file di dago, nel frattempo sono riuscito a scaricare anche un bel programmino per il protocollo AS511 da "tiscali !" è scritto totalmente in vb e devo dire anche molto bene, con una dovizia di commenti straordinaria, scrive e legge dw dl dr ingressi e uscite anche con una buona velocità, ma indovinate ? Appena lo collego al 155(cpu 948) và in errore ! L'errore in questo caso si verifica alla richieste info della cpu.Il problema ora è questo che non ho la possibilità di collegarmi al plc "quando voglio" perchè il rischio di mandarlo in stop incasinando qualche vettore è alto ed il PLC è in piena produzione, ecco perchè tra un test e l'altro devo aspettare il momento propizio. Comunque dei casi lavorando lavorando spulciando spulciando ho trovato :1) il protocollo per as511 originale della simens "che però non fa riferimento a sto 155 ! "2) Un programma scritto in vbdos in chiaro, non molto commentato che legge solamente le DB del 155 !!!!!!!! Quindi scritto solamente per 155 sono uscite le routine open.com.155 read.155 !!!!! è indovinate ? Funziona benissimo, problema risolto ? Noooooooooooooo Perchè può soltanto leggere e non scrivere. Pero !!! Ora possiamo iniziare a debbugare almeno in lettura quello funzionante per 155 e quello non funzionante per AS511 vedere dove sono le differenze e capire dove agire per modificare quello per as511 in scrittura, quello che mi "frena" per ora è il tempo che ho a disposizione come dicevo prima per eseguire le prove, vado avanti, vi farò sapere qui è una questione che lo vogliamo far funzionare "sto coso !" ,a presto. Link al commento Condividi su altri siti More sharing options...
EFFETTOMAURO Inserita: 10 ottobre 2007 Autore Segnala Share Inserita: 10 ottobre 2007 Scusa, Dago il download del file modProtocol_S5.zip non va bene il file è corrotto e non si apre, per favore controllalo e caso mai riproviamo il download.bye bye. Link al commento Condividi su altri siti More sharing options...
Bruno Inserita: 15 ottobre 2007 Segnala Share Inserita: 15 ottobre 2007 CiaoCome è finita la tua avventura ?Trovato l'inghippo ?Hai documentazione e/o informazioni interessanti oppure ti sei suicidato ? BR1 Link al commento Condividi su altri siti More sharing options...
EFFETTOMAURO Inserita: 16 ottobre 2007 Autore Segnala Share Inserita: 16 ottobre 2007 No, non ancora (ci manca poco) ma sto morendo dalla mancanza del letto!.Il drive mi occorre e quindi ci sto lavorando sodo! Mi sembra che la cosa si possa risolvere solo rimboccandomi le maniche e lavorarci io.Quindi sto traducendo il file che ho trovato funzionante (solo lettura) per vbdos in vb6anche qui le cose non sono andate subito per verso giusto dal momento che occorrono le routine std cvi e mkr che sono integrate in vbdos e non implementate in vb6.Quindi ho trovato una soluzione con una libreria della microsoft che le implementa ancheper vb6. E' chiaro che per ottenere i risultati occorrono ore ed ore di lavoro e dubug......Appena ho dei risultati sarà mi cura comunicarveli, intanto se trovate qualche dritta anchevoi fatemi sapere. La Siemens non fornisce più il vecchio driver ProDave pe S5, quindiNEMMENO A PAGALLO ! Si riesce a trare un rimmedio ! Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 17 ottobre 2007 Segnala Share Inserita: 17 ottobre 2007 (modificato) E' chiaro che per ottenere i risultati occorrono ore ed ore di lavoro e dubug...... Si' ma dovresti utilizzare un linguaggio a basso livello piuttosto e come ti avevo gia' accennato prima, un MSDOS oppure un Win95/98.. dopo la inizializzazione, se lo stato della linea e' OK, inviare un STX (0x02) e aspettare per un DLE (0x10) e ACK (0x06)... se questo avviene , gia sarebbe un grande passo... poi vai incrementando il codice passo a passo inviando i codici giusti e predisponendo la recezione per i caratteri, a secondo il telegramma.. non ti dimenticare che l'AG, un byte di data col valore 0x10 te lo inviara 2 volte..e viceverza, se invii un 0x10 di dati, dovresti inviarlo 2 volte, altrimenti lei pensa che le stai inviando un DLE.Con dei linguaggi ad alto livello rischi di non capire dove sarebbe l'inghippo...dovresti seguire il telegramma AS511 alla lettera e capire dove sarebbe questa differenza per questa CPU, quale sarebbe il codice inviato che lei non riconoscerebbe oppure quale sarebbe l'inaspettato codice arrivato. Modificato: 17 ottobre 2007 da Savino Link al commento Condividi su altri siti More sharing options...
dago_ Inserita: 17 ottobre 2007 Segnala Share Inserita: 17 ottobre 2007 Sicuro che con il 135 e 150 funziona ?Che convertitore utilizzi ?Per le serie 135,150 e 155 a differenza delle altre minori, è necessario un convertitore di tipo attivo. Forse ti manca un po' di corrente ? Link al commento Condividi su altri siti More sharing options...
EFFETTOMAURO Inserita: 4 novembre 2007 Autore Segnala Share Inserita: 4 novembre 2007 Salve, utilizzo il convertitore orignale della Siemens, cioè quello che mi collega normalmente tra pc e porta AG.Comunque non sono morto..... Ho seguito anche il consiglio di savino lavorando a basso livello e sto avendo deirisultati, ma sempre moderati dal fatto che ho poco tempo a disposizione per le prove, 3/4 ore il Sabato ad impiantofermo, e voi sapete che non sono cosette da nulla, spesso quando ci rimetto le mani devo capire dove ero arrivatol'ultima volta. Ma comunque non i è mai successo che non sono riuscito a fare qualcosa ! Prima o poi il risultato deve uscire fuori è solo questione di tempo, ho trovato anche il manuale del 155 cpu giusta con il protocollo originaledella siemens, certo non ècosa semplice....... 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