pidds Inserito: 10 luglio 2009 Segnala Share Inserito: 10 luglio 2009 Buonasera amici,qualcuno di voi ha mai utilizzato un driver script in viejeo designer?Io ho la versione 5.0 e dovrei leggere dei dati da un'apparecchiatura Aeroel per misurazione diametro.il mio plc è un premium della schneider ma non ha porte seriali libere per cui volevo provare a comunicare dal pannello direttamente con il misuratore di diametro.il protocollo è semplice bastano pochi messaggi... qualcuno ha provato?o magari qualcuno ha un esempietto da cui prendere spunto?ciao e grazie Link al commento Condividi su altri siti More sharing options...
prog_jlaw Inserita: 27 luglio 2009 Segnala Share Inserita: 27 luglio 2009 Ciaose guardi nel manuale in linea sotto "serial printing" gia trovi esempi ... il principio e' che l'apparecchiatura la devi trattare come una stampante ...quindo lanci una "stampa" con il codice di richiesta e poi ti metti in attesa ....io ho fatto : //richiesta -> 00xx,100,60,101 byte sendToDisplay[]; // byte array for write op.int numOfChar = 17; // string lengthint i=0;// 2. Azzero la stringasendToDisplay = new byte[numOfChar]; for (i = 0; i < numOfChar; i++) { sendToDisplay = 0x20; } //taglio con arreramentosendToDisplay[0] = (byte)0x30; //0 sendToDisplay[1] = (byte)0x30; //0sendToDisplay[2] = (byte)0x57; //xsendToDisplay[3] = (byte)0x4e; //xsendToDisplay[4] = (byte)0x2c; //,sendToDisplay[5] = (byte)0x31; //1sendToDisplay[6] = (byte)0x30; //0sendToDisplay[7] = (byte)0x30; //0sendToDisplay[8] = (byte)0x2c; //,sendToDisplay[9] = (byte)0x36; //6sendToDisplay[10] = (byte)0x30; //0sendToDisplay[11] = (byte)0x2c; //,sendToDisplay[12] = (byte)0x31; //1sendToDisplay[13] = (byte)0x30; //0sendToDisplay[14] = (byte)0x31; //1sendToDisplay[15] = (byte)0x0d; //crsendToDisplay[16] = (byte)0x0a; //lf// 4. Send messageScriptDriver01.write(true, numOfChar, sendToDisplay);poi verifica i caratteri di fine trasmissione cr/lfe mettiti in attesa di risposta !// 5. Attesa rispostabyte RecvPacket[]; // byte array for read op.int ReadChar = 20;int j=0;// 2. Inizializzo la stringa RecvPacket = new byte[ReadChar]; for (j = 0; j < ReadChar; j++) { RecvPacket[j] = 0x20; } ScriptDriver01.read(100, 20, RecvPacket); //100ms TimeoutString text = new String(RecvPacket); // Convert received data to Stringbye Link al commento Condividi su altri siti More sharing options...
pidds Inserita: 28 luglio 2009 Autore Segnala Share Inserita: 28 luglio 2009 Ciao prog_jlaw,ora la comunicazione funziona ma questo java lo trovo ostico.comunico ma siccome il lavoro lo sto ancora finendo e nel frattempo ne faccio altri 10.... non ho ancora capito come fare a scindere la stringa che mi arriva:tipo:CARATTERE STRANO ( FACCINA)M02=2.3456M03=2.3560M80=0M90=0CARATTERE STRANO (CUORICINO)....m02 e 3 sono le misurem80 e m90 sono una codifica di letture e codici di allarme.ho un array di byte dove sono presenti questi codici e valori...solo che non capisco come si estrapolano i dati in questo cavolo di codice java.proprio i comandi da usare...tu per caso mi sai indicare un manuale di programmazione di questo linguaggio?l'. on line aiuta ma non è certo il massimo della chiarezza e in schneider pronto contatto non danno assistenza sul java... ( che con quello che compro ogni anno mi pare una presa per i fondelli......)ciao e grazie Link al commento Condividi su altri siti More sharing options...
pidds Inserita: 29 luglio 2009 Autore Segnala Share Inserita: 29 luglio 2009 Ciao, ora ho fatto questo:int result;byte readArray[] = new byte [100];// 2. Lettura di dati dalla porta serialeresult = Driverscript.read(0, 100, readArray);if (result <= 0) // Verificare eventuali erroriReadText.write("ERRORE"); // Scrivi alla variabileelse{// Converti array byte in StringaString temp = new String(readArray);String strM02;String strM03;String strM80;String strM90;int OffM02;int OffM03;int OffM80;int OffM90;int MaxLength;float DiaM02;float DiaM03;OffM02=(temp.indexOf("M02="));byte0[13].write(OffM02);OffM03=(temp.indexOf("M03="));byte0[14].write(OffM03);OffM80=(temp.indexOf("M80="));byte0[15].write(OffM80);OffM90=(temp.indexOf("M90="));byte0[16].write(OffM90);MaxLength=(temp.length());strM02=(temp.substring((OffM02+4),OffM03));byte0[1].write(strM02);strM03=(temp.substring((OffM03+4),OffM80));byte0[2].write(strM03);strM80=(temp.substring((OffM80+4),OffM90));byte0[3].write(strM80);strM90=(temp.substring((OffM90+4),MaxLength));byte0[4].write(strM90);}PER CUI NELLE STRINGHE strM02 e strM03 ho le letture ma sono in formato stringa, vorrei convertirle in Float ma non esiste il comando!?!?!?!?come fare??ciao e grazie Link al commento Condividi su altri siti More sharing options...
prog_jlaw Inserita: 31 luglio 2009 Segnala Share Inserita: 31 luglio 2009 vorrei convertirle in Float ho paura di no !....potresti fare le comparazioni dei singoli caratteri e costruirti il numero , unita/decine/centinaia ......se per caso sviluppi qualcosa ... postala potrebbe servire a qualcun altro !bye Link al commento Condividi su altri siti More sharing options...
pidds Inserita: 31 luglio 2009 Autore Segnala Share Inserita: 31 luglio 2009 Sono indeciso ma credo che farò la conversione col caro vecchio testo strutturato di Unity nel premiumtempo di rilevamento permettendovisto che dopo avrò 2 seriali in cascata... ciao 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