pineto Inserito: 15 agosto 2008 Segnala Inserito: 15 agosto 2008 Buonasera,Sto lavorando ad un nuovo progetto,devo realizzare la comunicazione tra un plc Panasonic FP0 ed un normalissimo PC il tutto tramite 232.Quello che devo trasferire è un file .txt,dove al suo interno ci sono delle stringhe in formato aschi di circa 4-5 caratteri,ho provato ad eseguire qualcosa ma purtroppo non e andato a buo fine,per cominicare tra pc e plc ho utilizzato un programma Hyper Terminal.Sembra che questo programma possa fare al caso mio,ho provato ad eseguire la trasmissione tra plc e pc e funziona regolarmente solo che se faccio il contrario dalla parte plc non ricevo nulla.Sul plc ho utilizzato la funzione F161_MRCV dove sul parametro "s_Port" ho inserito 1 ,su "d1_Start" ho inserito il primo indirizzo dell'Array che mi sono creato e su "d2_end" ho inserito l'ultimo indirizzo dell'Array.Quello che devo fare per me è un aplicazione un po insolita perche e la prima volta che mi cimentare in queste aplicazioni,inoltre non sono molto pratico di Hyper Terminal.Qualcuno ha mai provato a ricevere un fomtato .txt da un pc e interpretarlo sul plc,ve ne sarei veramentre grato se qualcuno saprebbe darmi qualche dritta.Grazie
GixRamones Inserita: 15 agosto 2008 Segnala Inserita: 15 agosto 2008 Ciao.American Standard Code for Information Interchange (ASCII).Non conosco a memoria la funzione F161_MRCV ma ciò che vuoi fare è perfettamente ottenibile.Velocità, baudrate, parità sono Ok ?F161_MRCV avrà una limitazione ipotesi 256 Word !!!.ricorda 1 Word = 2 Byte; valore minimo byte=00 valore massimo FF.Ciao Occupa 4 byte quindi 2 Word del tuo arrraycomunque inizia a mandare il tuo array nelle aree 'D'poi spedisci un file con scritto questo testo inserendo "abcd" senza virgolette, a questo punto vai sul lato plc e visualizza i primi 2 registri del tuo array dovrai trovare il valore "6162" "6364" oppure "6261" "6463" la dove "a=Hex 61" "b... ecc vedi tabella ascii.Il fatto che siano inverititi o meno dipende dall'interpretazione della funzione F161_MRCV
pineto Inserita: 16 agosto 2008 Autore Segnala Inserita: 16 agosto 2008 Ciao GixRamonesVelocità, baudrate, parità sono Ok ?Le velocita sono :Settaggio porta :Programma controllato [General Purpose]Velocita: 9600Lunghezza trasmissione:8bitparita:nessunabit di stop :1bitle velocita penso che siano giuste,perche se provo a spedire una stringa al pc lui riceve correttamente.Quello che mi ai indicato nel post sono prove che avevo gia fatto,nell'istruzione F161_MRCV il parametro s_port come va impostato,io sto utilizzando un plc FPE e sto facendo le prove dalla porta aggiuntiva.Per il resto ho seguito l'esempio nella Guida in linea,in HypeTerminalr al difuori delle impostazioni della porta di comunicazione ci sono qualche altre impostazioni che potrebbero dare problemi nell'invio di dati?.L'operazione che ho fatto per inviare un file è:ho creato un file di testo.TXT con al suo interno un astringa "ABCD" poi ho aperto il programma Hyper Terminal e ho settatto la porta di comunicazione su COM1 e ho inserito i valori citati prima,poi ho abilitato l'istruzione F161_MRCV con l'ingresso EN.Successivamente sono andato su HypeTerminalr su Trasferimento>Invia File di testo e ho selezionato il file che mi avevo creato,una volta fatto questo sono andato sul plc e scorrendo l'Array che mi ero creato tutti i valori sono a zero.Secondo te dove la procedura che ho eseguito è corretta o mi sono tralasciato qualche passaggio per strada.Grazie
Roberto Gioachin Inserita: 16 agosto 2008 Segnala Inserita: 16 agosto 2008 Scusa "pineto", ma mi sà che stai cercando di fare una cosa che il plc non è in grado di fare.Per prima cosa, stai usando un FP0 come hai scritto nella prima descrizione o un FPe come hai scritto nella seconda?Altra cosa molto importante, il PLC non è un PC, quindi non puoi utilizzarlo per inviare o ricevere file, ma bensì stringhe.Questi PLC (come qualsiasi altro) comunicano da e verso la seriale attraverso un protocollo o comunque a mezzo stringhe, non è di certo in grado di riconoscere file, indipendentemente dal formato.Metodo di comunicazione via mewtocoll: (computer link)Il plc risponde a richieste di lettura o scrittura che gli vengono fatte a mezzo di questo protocollo proprietario, di tipo ascii.Se il PC non invia stringhe correttamente codificate secondo questo protocollo, il plc non risponde o risponde con un codice di errore.In questa configurazione il pc è master ed il plc è slave, possono essere collegati sulla stessa rete (RS485) più slave ma un solo master.Con RS232 si può fare solamente un collegamenti 1:1Metodo di comunicazione a protocollo libero: (general comunication)Il plc diventa master della rete, sul plc si deve compilare la stringa da inviare, è possibile creare protocolli ascii o esadecimale, oppure inviare byte senza nessuna particolare codifica, naturalmente il pc deve saper interpretare questi dati, che ancora una volta non possono essere dei file.Per utilizzare la comunicazione in questo modo, devi definire un'area di memoria, intesa come una serie continua di dataword (DT) da utilizzare come buffer di ricezione.Utilizzando questa configurazione e l'istruzione "F144" (per FP0) puoi fare il modo che il plc possa ricevere delle stringhe nel buffer, sulle quali puoi inserire dei valori o dei caratteri, una volta ricevuti i dati, devi usare qualche istruzione del plc per decodificarli, altrimenti potrebbero essere visualizzati come dei valori numerici a 16 bit.Altri metodi di comunicazione:I plc più moderni possono utilizzare il protocollo Modbus RTU, si tratta di un protocollo esadecimale molto usato da vari produttori di apparecchiature quali inverter, termoregolatori ecc.Anche in questo caso i dati non possone essere inviati se non utilizzando le regole di questo protocollo. Quindi niente file ma stringhe.Il plc non gestisce la seriale nello stesso modo del pc, quindi bisogna rispettare regole che sono descritte sui manuali del produttore.Sicuramente non posso essere stato esauriente, ma spero di averti dato un'idea di come si possono inviare e ricevere dati da un plc, naturalmente con un pò di pazienza e fantasia si riescono a fare moltissime cose, ma non tutte.CiaoRoberto
pineto Inserita: 17 agosto 2008 Autore Segnala Inserita: 17 agosto 2008 Roberto Gioachin grazzie per la delucidazione.Per prima cosa, stai usando un FP0 come hai scritto nella prima descrizione o un FPe come hai scritto nella seconda?Si,in effetti ho fatto un po di confusione, sto utilizzando un FPeAltra cosa molto importante, il PLC non è un PC, quindi non puoi utilizzarlo per inviare o ricevere file, ma bensì stringhe.si anche qui non c'è stata un po di incomprensione quello che devo fare e inviare delle stringhe che si trovano all'interno del file TXT,questo credo che si possa fare.Da quello che ai scritto nel post precedente credo che il protocollo ideale per quello che dovrei realizzare e la seconda (general comunication)in modo da crearmi un buffer dove vado a scrivere tutte le stringhe che ricevo.Al di fuoiri del plc,secondo te con Hyper terminal si risce a fare quello che dovrei fare ho mi occorre un altro programma.Chiarito un pò il tutto, se con gli elemti che ho a disposizione se si riesce a fare quello che dovrei fare tu cosa mi consigli di fare,come ho scritto nel mio primo post ho provato ad inviare delle stringhe da plc a pc e riesco a comunicare,pero se faccio il contrario non ricevo nulla.Grazie
Roberto Gioachin Inserita: 17 agosto 2008 Segnala Inserita: 17 agosto 2008 Come già ho scritto, con un pò di fantasia si riescono a fare molte cose.Se configuri il PLC come General comunication, puoi effettivamente riuscire a ricevere dati senza dover utilizzare nessun tipo di protocollo, quindi questa è la via che si deve scegliere in questi casi.Come si deve fare:In questa configurazione il PLC è master ed il pc è slave, sul plc viene configurata la zona di memoria (DT) da utilizzare come buffer di ricezione.Dal plc deve partire la richiesta per la trasmissione, quindi si deve lanciare una istruzione "F144" impostando il numero di byte uguale a zero, in questo modo il buffer di ricezione viene azzerato e la comunicazione viene inizializzata.Entro un certo tempo, (prima che scada il tempo di attesa del plc) il pc deve rispondere con una stinga libera, questa la troverai memorizzata sulle DT che hai configurato come buffer di ricezione.Naturalmente questi dati possono essere semplicemente dei numeri o dei caratteri codificati in ascii, questo è un problema tutto tuo.L'unica cosa che devi verificare, è che se invii dei numeri la trasmissione deve essere impostata su 8 bit, se invii caratteri, la trasmissione può essere anche 7 bit.CiaoRoberto
pineto Inserita: 17 agosto 2008 Autore Segnala Inserita: 17 agosto 2008 Roberto scusami ma purtroppo in queste aplicazioni sono un neofita,dato che è la prima volta che provo a fare determinate cose con un PLC.Ti chiedo un po di pazienza per darmi il tempo di capire come affrontare il tuttoDal plc deve partire la richiesta per la trasmissione, quindi si deve lanciare una istruzione "F144" impostando il numero di byte uguale a zero, in questo modo il buffer di ricezione viene azzerato e la comunicazione viene inizializzata.Questa è un operazione che avevo gia fatto,per la ricezione ho tolto il fronte di salita davanti all'istruzione F144 e ho impostato DT0 sull'area di ricezione e 0 sui byte da inviare,come da esempio del manuale di programazione.il pc deve rispondere con una stinga libera, questa la troverai memorizzata sulle DT che hai configurato come buffer di ricezione.Quando inizializzo la comunicazione sulla DT0 non vedo scritto nulla e sempre a zero,cambia lo stato solo se imposto un valore differente da 0 sul numero di byte da inviareUna volta impostata l'istuzione F144 l'ho abilitata e sono andato su Hyper Terminal e ho provato ad inviare qualcosa scorrendo il buffer "partendo da DT0" tutti i dati sono a zero,non ricevo nulla.Tu ai mai provato a fare qualcosa del genere con questi plc e con Hyper Terminal?In Hyper Terminal ci sono delle impostazioni particolari oltre alla porta di cominicazioneTiallego due immagini di quello che ho realizzato
GixRamones Inserita: 17 agosto 2008 Segnala Inserita: 17 agosto 2008 Ciao.le velocita penso che siano giuste,perche se provo a spedire una stringa al pc lui riceve correttamente..hai usato hyper terminal per vederla !?Allora nello stesso modo Hyper terminal deve mandarla.Le modalità di comunicazione e processo con eventuali protocolli te lo vedrai poi in seguito, ma ora tu devi essere sicuro di fare uscire i dati dalla seriale come piaciano al plc!.Vediamo come puoi vedere se i dati escono dal pc?. Collegati con un cavo null-moden ad un altro pc e con le com dei due pc tramite seriale ti passi i files.Hmm comunque Hyper terminal funziona lascia perdere ciò che ho scritto riguardo ai 2 pc.Dicevi che hai ricevuto la stringa, postala!.Posta i valori delle Dt0, Dt1, ecc. ed il valore della stringa che hai letto con Hyper .Non è che Mewtocoll ha bisogno di qualche carattere ad inizio stringa Tipo "[at],#,ç,§" ? se hai ricevuto qulcsa postalo!Se usi ASCII il protocollo Va ASCII, se no le stringhe che invii devono rispettare il protocollo Mewtocoll, che non conosco. Non ricordo, hai solo una seriale su quel plc?
pineto Inserita: 17 agosto 2008 Autore Segnala Inserita: 17 agosto 2008 Dicevi che hai ricevuto la stringa, postala!.Posta i valori delle Dt0, Dt1, ecc. ed il valore della stringa che hai letto con Hyper .No! non rieso a ricevere nulla,le deu DT sono sempre a zero,su Hyper terminal non risco a vedere nulla,nel senso che se faccio "invia file di testo" la schermata rimane sempre bianca.Invece se faccio "Aquisisci testo" e poi provo ad inviare una stringa dal plc sulla schermata compare quello che ho inviato.Come posso essere sicuro che da Hyper terminal escono le stringhe che si trovano nel file?
pineto Inserita: 17 agosto 2008 Autore Segnala Inserita: 17 agosto 2008 Ho provato a far comunicare 2 pc con Hyper terminal,ho notato che se provo ad inviare una striga dall'altra parte non ricevo nulla.Sembrerebbe che il problema venga dal pc dato che non butta fuori nulla,ho provato a fare una ricerca su Google di Hyper terminal ma non ho trovato nulla.
GixRamones Inserita: 17 agosto 2008 Segnala Inserita: 17 agosto 2008 Ciao.Vediamo come puoi vedere se i dati escono dal pc?. Collegati con un cavo null-moden ad un altro pc e con le com dei due pc tramite seriale ti passi i files.Invece se faccio "Aquisisci testo" e poi provo ad inviare una stringa dal plc sulla schermata compare quello che ho inviato.Ok fatto questo azzera le D e poi invia il file che hai appena ticevuto?comunque Dicevi che hai ricevuto la stringa, postala!.Posta i valori delle Dt0, Dt1, ecc. ed il valore della stringa che hai letto con Hyper .
pineto Inserita: 17 agosto 2008 Autore Segnala Inserita: 17 agosto 2008 Vediamo come puoi vedere se i dati escono dal pc?. Collegati con un cavo null-moden ad un altro pc e con le com dei due pc tramite seriale ti passi i filesHo provato con un avetto seriale con 2 e 3 invertiti su di un lato ma non riesco a passarmi i fileOk fatto questo azzera le D e poi invia il file che hai appena ticevuto?comunqueRiisultato
walterword Inserita: 17 agosto 2008 Segnala Inserita: 17 agosto 2008 dovresti aprire e bufferizzare il file , e poi spedire l'array di caratteri , con i terminatori messi per bene (13 e 10 ) --> \nleggi bene le informazioni sulla funzione del tuo plc, magari approfondisci il plc , magari trovi qualcosa che non sapevi
pineto Inserita: 17 agosto 2008 Autore Segnala Inserita: 17 agosto 2008 walterword scusami ma non capisco dovresti aprire e bufferizzare il file , e poi spedire l'array di caratteri , con i terminatori messi per bene (13 e 10 ) --> \nmi potresti spiegare meglio quello che devo faregrazie
GixRamones Inserita: 17 agosto 2008 Segnala Inserita: 17 agosto 2008 Ciao.Testo "abcd\n" lo vedi solo come "abcd".se vuoi aggiungere "efg" nel caso1quello con \n finale avrai"abddefg"nel caso 2 senza \n avrai"abcdefg".Ricevere ricevi ma... come dice walterword devi fare attenzione alla costruzione della stringa in fase di spedizione.In pratica usa hyper terminal non per vedere on line ma per salvare su file. Poi con un editor (io ad esempio uso ultraedit)apri il file, solo editor tipo quelli ti permettono di vedere i caratteri nel formato Hex, e cosi potrai vedere i mitici (13 e 10). Tra l'altro leggo nel tuo set up che hai 'cr' come terminatore. lo hai messo ? o meglio nel file c'è ? al limite prima di chiudere il file vai a capo.ecco una guida di hyperterminaluna delle tante.La cosa strana è che tra 2 pc non riesci a passarti un file....comunque se Hyper terminal funziona, beccati il file ricevuto, e rispediscilo al plc, in questo modo eviti di mettere a mano i caratteri su citati. Non ricordo, hai solo una seriale su quel plc? , una configurazione della porta ascii eviterebbe di rispettare procedure che un protocollo come Mewtocoll (che non conosco) potrebbe richiedere prima di accettare una stringa in entrata. in questo caso solo il manuale specifico ti può chiarire il tutto.
walterword Inserita: 18 agosto 2008 Segnala Inserita: 18 agosto 2008 un file e' composto da righe , ogni riga puo essere una stringa definita e limitata dai caratteri di cui sopra .Quindi col pc devi creare un'applicazione , tipo in visual basic o affini , leggere il file ed i dati utili accodarli in un buffer o meglio in un array di bytes o char .Alla fine spedisci tutto il buffer o meglio l'array di char .Se il file e' di testo , ogni riga si distingue dall'altra tramite i caratteri \n Questo serve al parser che legge il file , per poter gestire ed interpretare i dati o le informazioni Tu prova a fare un esempio piu semplice , crei ed assegni i valori ad un array di caratteri , per esempio :Prendi 10 caratteri e li carichi in un array di 10 caratteri , poi li spedisci via seriale aggiungendo \n i due caratteri sono il carriage return ed il salto alla riga successiva .Il plc riceve la stringa , e qui bisona capire come funziona la funzione del plc che ti permette di leggere il buffer in arrivo Normalmente , parlo per siemens con scheda CP340 , la scheda ti restituisce un bit che ti dice che il buffer e' pieno e pronto ad essere processato , lo fanno tutti i processori e micro .A questo punto hai nel plc un'area di memoria caricata con i caratteri spediti dal pc che dovrai interpretare qualora fossero dati , da caratteri a intero o float o altro , se invece sono comandi ascii liinterpreti e fa eseguire al plc quello che deve .Se usi hyperterminal , e vuoi spedire i dati dal plc , studia bene come funziona la trasmissione , setta bene i parametri , ed informati se devi aggiungere i caratteri \n oppure se il plc , la sua funzione , li aggiunge automaticamente Normalmente con un microcontrollore , con una riga di printf("stringa\n") viene inviata la stringa ed hyper la visualizza
walterword Inserita: 18 agosto 2008 Segnala Inserita: 18 agosto 2008 non credo che il tuo plc permetta di spedire stream di dati , quindi files ......Ricordati che nella semplicità di una comunicazione , che sia seriale , ethernet o WiFi , alla fine sono sempre array di bytes che vengono spediti .Se li dichiari come char (caratteri ) saranno gestiti e visualizzati graficamente come tali , "un carattere e' la stessa cosa di byte " e viceversa .......Vedi se la tua funzione di restituisce un bit che ti dice che il job di comunizione e' attivo , in questo caso non scrivere sulla seriale con la F144 , scriverai quanco il buffer di scrittura sarà vuoto .Vedi bene anche il settaggio di hyperterminal , in >>> impostazioni ci sono dei flags che ti dicono qualcosa sui caratteri terminali in ricezione ed invio , insomma ..... fai qualcosa ....
pineto Inserita: 18 agosto 2008 Autore Segnala Inserita: 18 agosto 2008 quello con \n finaleScusa ma questa \n finale cosa indicaTra l'altro leggo nel tuo set up che hai 'cr' come terminatore. lo hai messo ? o meglio nel file c'è ?'cr' c'era di default cosa sta ad indicare,e come faccio a metterlo nel fileNon ricordo, hai solo una seriale su quel plc?si ho solo una seriale aggiuntiaQuindi col pc devi creare un'applicazione , tipo in visual basic o affini , leggere il file ed i dati utili accodarli in un buffer o meglio in un array di bytes o char .Qui andiamo un po sul difficile,non cocnosco visual basic pensavo che hyper terminal riuscisse a fare quelloPrendi 10 caratteri e li carichi in un array di 10 caratteri , poi li spedisci via seriale aggiungendo \n i due caratteri sono il carriage return ed il salto alla riga successivain che modo carico 10 caratteri in unarray sul pc?walterword,ho seguito il tuo consiglio di dare uno sguado alle impostazioni di hyper terminal ho provato a spuntare in impostazioni ascii l'eco dei caratteri è quando spedisco da pc a plc sul pc vedo quello che in teoria spedisce al plc ma continuo ad non ricevere nulla.Purtroppo come dicevo in un mio precedente post sono neofita in comunicazioni con dispositivi esterni perche è la prima volta che mi ci cimento.Sono veramente in un bel guaio :ph34r: Oltre alle soluzioni che mi ai indicato ci sono altri sistemi diciamo un pò piu facili per inviare delle stringhe di un file ad un dispositivo esterno,perche da quello che ho capito il problema sembrerebbe più verso il pc che da parte del plc,giusto?Grazie
Roberto Gioachin Inserita: 18 agosto 2008 Segnala Inserita: 18 agosto 2008 Scusa se ti rispondo a singhiozzo, ma ... non sono proprio in ferie.Le informazioni che ti hanno dato i vari amici del forum, sono molto professionali, ma mi pare di aver capito che non ti hanno chiarito molto, certo tu hai dichiarato di essere un neofita.Il mio consiglio a questo punto è quello di abbandonare Hiper terminal, e di cercare in rete un "tester per seriale", ne trovi molti di free.Se sei fortunato puoi trovare dei tester che possono rispondere quando dalla seriale remota, in questo caso il plc, arriva una determinata stringa, non chiederemi i nomi o gli indirizzi, dovrei cercare nel mio archivio ed ora non ho proprio il tempo.Quando in fpwin configuri la seriale del plc come general comunication, ti viene chiesto di inserire la DT di partenza e la quantità di word da utilizzare come buffer di ricezione.Su queste dataword tu potrai trovare i dati che invii dal pc al plc.L'istruzione F144 è indispensabile per abilitare la seriale alla ricezione di dati.La prima parte del lavoro, quindi l'hai già fatta, infatti tu hai inviato una stringa e questa è arrivata sul tuo pc, nello stesso momento però, dovresti inviare la stringa dal pc al plc, se aspetti troppo, il plc non accetta più i dati. I tester per seriale ti possono aiutare proprio in questo.Il plc panasonic non si comporta come la scheda cp340 siemens menzionata da un collega, il plc non ti dice quando il buffer è pieno, a meno che tu non scriva un programma specifico per identificare la condizione, ma questa strada io non te la consiglio.Prima di lanciare l'istruzione F144, salva il contenuto del tuo buffer di ricezione, quindi lancia l'istruzione F144 che cancellerà il buffer e predispone il plc per ricevere nuovi dati.Io credo che per prima cosa tu devi fare in modo di ricevere questi benedetti dati, poi puoi sbizzarrirti con tutte le possibilità che ti ofre questo plc, che a me non ha mai creato problemi.CiaoRoberto
Roberto Gioachin Inserita: 19 agosto 2008 Segnala Inserita: 19 agosto 2008 Ancora una considerazione, mi pare di aver visto che il registro 417 "ind iniziale buffer di ricezione com1" è impostato su "0", significa DT0 e la capacità del buffer (registro 418) è impostato su 250, questo significa che il tuo buffer và da DT0 a DT249, ma poi tu hai usato da DT100 in poi per i dati da trasmettere, naturalmente questo non và bene.Ti consiglio poi di impostare il registro 413 su 8 bit, per il resto può andare bene.Io ti posso assicurare di aver già letto con questo plc. dati inviati in continuo da bilance ed altre apparecchiature, non senza incontrare problemi, ma senza mai dover rinunciare. Quindi... insisti.CiaoRoberto
pineto Inserita: 19 agosto 2008 Autore Segnala Inserita: 19 agosto 2008 Scusa se ti rispondo a singhiozzo, ma ... non sono proprio in ferienon preocuuparti,grazie lo stessocerto tu hai dichiarato di essere un neofita.Purtroppo SIl mio consiglio a questo punto è quello di abbandonare Hiper terminal, e di cercare in rete un "tester per seriale", ne trovi molti di free.Si! in effetti ecredo che sia la cosa migliore da fare,prima devo verificare che riesco a comunicare tra i due e poi passo al restoQuando in fpwin configuri la seriale del plc come general comunication, ti viene chiesto di inserire la DT di partenza e la quantità di word da utilizzare come buffer di ricezione.Su queste dataword tu potrai trovare i dati che invii dal pc al plc.L'istruzione F144 è indispensabile per abilitare la seriale alla ricezione di dati.Quindi i dati che ricevo li trovo dalla DT configurata in configurazione, e dovro controllare quel buffer li no quella inserita sull'istruzione F144.Ancora una considerazione, mi pare di aver visto che il registro 417 "ind iniziale buffer di ricezione com1" è impostato su "0", significa DT0 e la capacità del buffer (registro 418) è impostato su 250, questo significa che il tuo buffer và da DT0 a DT249, ma poi tu hai usato da DT100 in poi per i dati da trasmettere, naturalmente questo non và bene.Ti consiglio poi di impostare il registro 413 su 8 bit, per il resto può andare bene.OkGrazie
pineto Inserita: 19 agosto 2008 Autore Segnala Inserita: 19 agosto 2008 Ho fatto una ricerca come consigliato da Roberto Gioachin e ho trovato questoSITOcon questo programma risco a cominicare esntrambi i lati tra pc e plc e plc e pc.L'unica cosa che non ho capito e perche se devo cominicare tra pc e plc non devo abilitare l'istruzione F144,succede che non riesco a riempiere il buffer,con l'istruzione abilitata riempio solo la prima DT
Roberto Gioachin Inserita: 19 agosto 2008 Segnala Inserita: 19 agosto 2008 Non è che ho capito molto bene la tua domanda, ma intanto mi pare di capire che un passo avanti l'hai fatto.Adesso prova a fare un'altro passo.La funzione F144 deve essere eseguita su un fronte di salita, nel momento in cui viene eseguita, il buffer si cancella e la porta è disponibile per ricevere nuovi dati.Quindi prima di eseguire questa istruzione devi copiare il contenuto del buffer in un'artra zona per poter elaborare i tuoi dati.Una cosa importante a questo punto è la gestione del "cr" (terminatore), quindi quando invii una stringa da pc a plc, aggiungi alla fine il codice "cr", il plc è in grado di riconoscere l'arrivo di questo carattere e ti informa con uno "special relè" R9032, guardati bene il manuale, in quel momento puoi essere sicuro che la trasmissione è terminata e puoi quindi eseguire un'altra volta l'istruzione F144 (dopo aver salvato i dati contenuti sul buffer).Se non vuoi usare "cr", il plc ti permette di essere configurato per usare altri caratteri come terminatore.Ancora una cosa:Sulla prima dataword del buffer, trovi il numero di byte ricevuti, questo dato ti può servire per capire quando la trasmissione si arresta e per sapere quanti dati devi esaminare.Per il resto, come già ti ho detto, dipende tutto dalla tua fantasia.CiaoRoberto
pineto Inserita: 20 agosto 2008 Autore Segnala Inserita: 20 agosto 2008 on è che ho capito molto bene la tua domandaHo risoltomi pare di capire che un passo avanti l'hai fattoUrca se lo fatto !!!Una cosa importante a questo punto è la gestione del "cr" (terminatore), quindi quando invii una stringa da pc a plc, aggiungi alla fine il codice "cr"Come faccio a inserire il "cr"Sulla prima dataword del buffer, trovi il numero di byte ricevuti, questo dato ti può servire per capire quando la trasmissione si arresta e per sapere quanti dati devi esaminareSi in effetti mi indica quanti caratteri ci sono nel mio buffer.Una volta fatto eseguite le prove che mi ha indicato ,come mi consigli di procedere per interpretare delle stringhe da un file TXT,e il caso che torno a smanettare con Hyper Terminal?Secondo le prove che abbiamo fatto secondo te il problema e su Hyper Terminal che non dialoga con il Plc nel senso che invia dei caratteri che il plc non riesce ad interpretare ,ho forse c'è qualche altro problema ammonte che non ho individuato.Grazie
Roberto Gioachin Inserita: 20 agosto 2008 Segnala Inserita: 20 agosto 2008 Il "cr" è un carattere speciale, per inserirlo devi aggiungere "0D" in esadecimale, Oppure CR come carattere, viene riconosciuto in automatico.Alcuni tester lo inseriscono utilizzando il tasto "enter" del computer.Hyper terminal, non è proprio il miglior strumento in questi casi, diventa molto più interessante quando lo colleghi ad un modem, infatti è nato per questo.Se il tuo problema è quello di prendere un file testo ed inviare il contenuto al plc, allora credo che serva qualcosa di più soffisticato.Una buona soluzione sarebbe quella di costruire un programmino in basic che possa prendere i dati da un file per inviarli al plc, ma non sò se per te questa strada sia praticabile.Ora non sapendo quale sia lo scopo del lavore che stai facendo, ho difficoltà a dirti quale sia la miglior soluzione, infatti io pensavo che la tua fosse solamente voglia di provare a far comunicare il pc con il plc, ma ora mi pare di capire che hai delle esigenze un pò piu particolari.Generalmente quando si vuole instaurare una comunicazione per lo scambio di dati, si devono considerare alcuni aspetti importanti.Per prima cosa si deve stabilire chi è che comanda, quindi chi è il master e chi è lo slave.Se per esempio il pc deve inviare dati quando lo decide lui, è giusto che il master sia appunto il pc, in questo caso sul pc deve essere inserito un programma specifico per quelle determinate azioni, inoltre il pc deve conoscere il protocollo con cui comunicare le informazioni al plc.Per fare questo, il plc deve essere configurato come computer link ed il pc deve comunicare attraverso il protocollo del plc, (mewtocoll).Se invece il pc invia sempre dati in continuo, nel modo in cui si comporta per esempio una bilancia, allora sarà il plc il master, in quanto è lui che decide se ricevere i dati o no.L'applicazione che stai provando è proprio quest'ultima.Naturalmente in questo caso è previsto che il plc può decidere di ignorare alcuni dati, prendi ad esempio la bilancia che invia di continuo l'informazione del peso, ma se al plc non serve sempre conoscere il peso, può decidere di interrompere la lettura dei dati.Ora arrivando alla tua richiesta, non mi pare che per inviare il contenuto di un file dal pc al plc, sia corretto utilizzare questo ultimo metodo, in quanto non potrai mai essere sicuro che tutti i dati siano arrivati a destinazione.Sembra più corretto scrivere un programma in basic, che gestisca il protocollo mewtocoll e che inoltre sia in grado di capire se si è verificato un errore di trasmissione.Non sò se ho ancora le sorgenti, ma io parecchi anni fà ho realizzato un programmino in basic, che legge i dati da un file e li invia al plc attraverso il protocollo mewtocoll, mi ricordo che non si trattava di un'operazione particolarmente complessa.Se riesco a trovare qualcosa nei prossimi giorni ti faccio sapere, naturalmente è da considerare solo a scopo di esempio, visto che si tratta di una cosa anche abbastanza datata.Spero di non averti creato confusione invece che aiutarti.CiaoRoberto
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