David.Stefanutti Inserito: 23 agosto 2005 Segnala Inserito: 23 agosto 2005 Salve a tutti.L'applicazione che devo realizzare deve convertire una stringa di 6 caratteri (es.1250,3) che mi arriva sul DB1.DBX2.0 impostato come STRING[6] e trasformarlo in un real (esempio MD150)Ho visto che l'fc 39 dovrebbe fare questa funzione ma non riesco a inizializzarlo... CALL "STRNG_R" S := ?????? RET_VAL:=
David.Stefanutti Inserita: 23 agosto 2005 Autore Segnala Inserita: 23 agosto 2005 HO scoperto che la stringa deve essere STRING[6] e deve avere il seguente formato±v.nnnnnnnE±xx ± Segnov 1 Posizione prima della virgolan 7 Posizioni dopo la virgola x 2 Posizioni esponenti Nel mio FB scrivo CALL "STRNG_R" S :="DATI MACCHINA".MISURA_STRINGA RET_VAL:="DATI MACCHINA".MISURA_IN_REALE NOP 0pur avendo il formato e tutto non funziona... Perchè????
Matteo Montanari Inserita: 23 agosto 2005 Segnala Inserita: 23 agosto 2005 se controlliamo nell'hel in linea, cosa che hai fatto, la stringa deve essere di "14" caratteri e non "6".inoltre prova ad utilizzare la funzione FC30 (converte il reale in stringa) e controllare cosa ti scrive nei "caratteri"...il numero che hai messo: 1250,3deve essere convertito così:'','','+','0','.','1','2','5','0','3','0','0','E','+','0','4'
David.Stefanutti Inserita: 23 agosto 2005 Autore Segnala Inserita: 23 agosto 2005 (modificato) La correzione della string[14] l'avevo trovata.Allora, ho visto la stringa sulla tabella delle variabili byte per byte in formato carattere e penso che ila visualizzazione sia identica'','','+','0','.','1','2','5','0','3','0','0','E','+','0','4'lo vedo come DB1.DBB0=0DB1.DBB1=0DB1.DBB2=+DB1.DBB3=1DB1.DBB4=.DB1.DBB5=2DB1.DBB6=5DB1.DBB7=0DB1.DBB8=5DB1.DBB9=0DB1.DBB10=0DB1.DBB11=0DB1.DBB12=EDB1.DBB13=+DB1.DBB14=0DB1.DBB15=3lo trasferisco nella MD150 e il suo valore è 0Secondo me sbaglio a inizializzare la stringa...Il mio dubbio è:1) cosa sono i simboli '',''2) dal manuale dati dinamici del tipo STRING devono essere inizializzati dall'utente prima di essere utilizzati per la prima volta, p. es. con una sequenza AWL nel formato:LAR1 P#local_string_var // local_string_var dichiarato in VAR_TEMP come STRING[200]L 200 // lunghezza STRING sopraindicata T LB [AR1, P#0.0] // registrare nel byte MAX Len della stringa L 5 // lunghezza effettiva della stringa T LB [AR1, P#1.0] // lunghezza effettiva della stringa questo, devo farlo????Se si, come?? Modificato: 23 agosto 2005 da David.Stefanutti
Matteo Montanari Inserita: 23 agosto 2005 Segnala Inserita: 23 agosto 2005 i primi due caratteri della stringa, quelli che io ti ho segnato come " '' " non devono essere modificati, non puoi mettere "0" in quanto il PLC si inka**a.carica la tua DB vergine (così come l'hai creata) dentro il PLC. modifica i valori dal DB1.DBB2 al DB1.DBB15 con i valori che preferisci (tuoi o miei) questo, devo farlo???? se non modifichi nulla nell'intestazione della stringa, (se non cambi lunghezza o altro) no, non devi farlo (il tutto è impostato nei primi due byte)
David.Stefanutti Inserita: 24 agosto 2005 Autore Segnala Inserita: 24 agosto 2005 Nada,nisba, niet!!!!!Non funziona!!!Ho provato anche con fc38 e fc37....neache a calci!
Matteo Montanari Inserita: 24 agosto 2005 Segnala Inserita: 24 agosto 2005 prendi questo codice:DATA_BLOCK "DB1" TITLE = VERSION : 0.1 STRUCT VALORE_REAL_1 : REAL; VALORE_REAL_2 : REAL; FREE_3 : INT; STRINGA_1 : STRING [14 ]; //Variabile stringa FREE_1 : DINT; STRINGA_2 : STRING [14 ]; //Variabile stringa FREE_2 : DINT; PIPPO : ARRAY [0 .. 99 ] OF BYTE; END_STRUCT; BEGIN VALORE_REAL_1 := 0.000000e+000; VALORE_REAL_2 := 0.000000e+000; FREE_3 := 0; STRINGA_1 := ''; FREE_1 := L#0; STRINGA_2 := ''; FREE_2 := L#0; PIPPO[0] := B#16#0; PIPPO[1] := B#16#0; PIPPO[2] := B#16#0; PIPPO[3] := B#16#0; PIPPO[4] := B#16#0; PIPPO[5] := B#16#0; PIPPO[6] := B#16#0; PIPPO[7] := B#16#0; PIPPO[8] := B#16#0; PIPPO[9] := B#16#0; PIPPO[10] := B#16#0; PIPPO[11] := B#16#0; PIPPO[12] := B#16#0; PIPPO[13] := B#16#0; PIPPO[14] := B#16#0; PIPPO[15] := B#16#0; PIPPO[16] := B#16#0; PIPPO[17] := B#16#0; PIPPO[18] := B#16#0; PIPPO[19] := B#16#0; PIPPO[20] := B#16#0; PIPPO[21] := B#16#0; PIPPO[22] := B#16#0; PIPPO[23] := B#16#0; PIPPO[24] := B#16#0; PIPPO[25] := B#16#0; PIPPO[26] := B#16#0; PIPPO[27] := B#16#0; PIPPO[28] := B#16#0; PIPPO[29] := B#16#0; PIPPO[30] := B#16#0; PIPPO[31] := B#16#0; PIPPO[32] := B#16#0; PIPPO[33] := B#16#0; PIPPO[34] := B#16#0; PIPPO[35] := B#16#0; PIPPO[36] := B#16#0; PIPPO[37] := B#16#0; PIPPO[38] := B#16#0; PIPPO[39] := B#16#0; PIPPO[40] := B#16#0; PIPPO[41] := B#16#0; PIPPO[42] := B#16#0; PIPPO[43] := B#16#0; PIPPO[44] := B#16#0; PIPPO[45] := B#16#0; PIPPO[46] := B#16#0; PIPPO[47] := B#16#0; PIPPO[48] := B#16#0; PIPPO[49] := B#16#0; PIPPO[50] := B#16#0; PIPPO[51] := B#16#0; PIPPO[52] := B#16#0; PIPPO[53] := B#16#0; PIPPO[54] := B#16#0; PIPPO[55] := B#16#0; PIPPO[56] := B#16#0; PIPPO[57] := B#16#0; PIPPO[58] := B#16#0; PIPPO[59] := B#16#0; PIPPO[60] := B#16#0; PIPPO[61] := B#16#0; PIPPO[62] := B#16#0; PIPPO[63] := B#16#0; PIPPO[64] := B#16#0; PIPPO[65] := B#16#0; PIPPO[66] := B#16#0; PIPPO[67] := B#16#0; PIPPO[68] := B#16#0; PIPPO[69] := B#16#0; PIPPO[70] := B#16#0; PIPPO[71] := B#16#0; PIPPO[72] := B#16#0; PIPPO[73] := B#16#0; PIPPO[74] := B#16#0; PIPPO[75] := B#16#0; PIPPO[76] := B#16#0; PIPPO[77] := B#16#0; PIPPO[78] := B#16#0; PIPPO[79] := B#16#0; PIPPO[80] := B#16#0; PIPPO[81] := B#16#0; PIPPO[82] := B#16#0; PIPPO[83] := B#16#0; PIPPO[84] := B#16#0; PIPPO[85] := B#16#0; PIPPO[86] := B#16#0; PIPPO[87] := B#16#0; PIPPO[88] := B#16#0; PIPPO[89] := B#16#0; PIPPO[90] := B#16#0; PIPPO[91] := B#16#0; PIPPO[92] := B#16#0; PIPPO[93] := B#16#0; PIPPO[94] := B#16#0; PIPPO[95] := B#16#0; PIPPO[96] := B#16#0; PIPPO[97] := B#16#0; PIPPO[98] := B#16#0; PIPPO[99] := B#16#0; END_DATA_BLOCK ORGANIZATION_BLOCK "CYCL_EXC" TITLE = "Main Program Sweep (Cycle)" AUTHOR : Keos FAMILY : Keos VERSION : 0.1 VAR_TEMP OB1_EV_CLASS : BYTE; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) OB1_SCAN_1 : BYTE; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) OB1_PRIORITY : BYTE; //Priority of OB Execution OB1_OB_NUMBR : BYTE; //1 (Organization block 1, OB1) OB1_RESERVED_1 : BYTE; //Reserved for system OB1_RESERVED_2 : BYTE; //Reserved for system OB1_PREV_CYCLE : INT; //Cycle time of previous OB1 scan (milliseconds) OB1_MIN_CYCLE : INT; //Minimum cycle time of OB1 (milliseconds) OB1_MAX_CYCLE : INT; //Maximum cycle time of OB1 (milliseconds) OB1_DATE_TIME : DATE_AND_TIME; //Date and time OB1 started PIPPO : STRING [14 ]; TEMP_1 : DINT; PLUTO : STRING [14 ]; END_VAR BEGIN NETWORK TITLE = CALL "R_STRNG" ( IN := "DB1".VALORE_REAL_2, RET_VAL := #PLUTO); //; L LB 40; T DB1.DBB 30; //; L LB 41; T DB1.DBB 31; //; L #PLUTO[1]; T "DB1".STRINGA_2[1]; //; L #PLUTO[2]; T "DB1".STRINGA_2[2]; //; L #PLUTO[3]; T "DB1".STRINGA_2[3]; //; L #PLUTO[4]; T "DB1".STRINGA_2[4]; //; L #PLUTO[5]; T "DB1".STRINGA_2[5]; //; L #PLUTO[6]; T "DB1".STRINGA_2[6]; //; L #PLUTO[7]; T "DB1".STRINGA_2[7]; //; L #PLUTO[8]; T "DB1".STRINGA_2[8]; //; L #PLUTO[9]; T "DB1".STRINGA_2[9]; //; L #PLUTO[10]; T "DB1".STRINGA_2[10]; //; L #PLUTO[11]; T "DB1".STRINGA_2[11]; //; L #PLUTO[12]; T "DB1".STRINGA_2[12]; //; L #PLUTO[13]; T "DB1".STRINGA_2[13]; //; L #PLUTO[14]; T "DB1".STRINGA_2[14]; //; //; L DB1.DBB 10; T LB 20; //; L DB1.DBB 11; T LB 21; //; L "DB1".STRINGA_1[1]; T #PIPPO[1]; //; L "DB1".STRINGA_1[2]; T #PIPPO[2]; //; L "DB1".STRINGA_1[3]; T #PIPPO[3]; //; L "DB1".STRINGA_1[4]; T #PIPPO[4]; //; L "DB1".STRINGA_1[5]; T #PIPPO[5]; //; L "DB1".STRINGA_1[6]; T #PIPPO[6]; //; L "DB1".STRINGA_1[7]; T #PIPPO[7]; //; L "DB1".STRINGA_1[8]; T #PIPPO[8]; //; L "DB1".STRINGA_1[9]; T #PIPPO[9]; //; L "DB1".STRINGA_1[10]; T #PIPPO[10]; //; L "DB1".STRINGA_1[11]; T #PIPPO[11]; //; L "DB1".STRINGA_1[12]; T #PIPPO[12]; //; L "DB1".STRINGA_1[13]; T #PIPPO[13]; //; L "DB1".STRINGA_1[14]; T #PIPPO[14]; //; CALL "STRNG_R" ( S := #PIPPO, RET_VAL := "DB1".VALORE_REAL_1); END_ORGANIZATION_BLOCK trasferiscilo dentro la CPU con i blocchi FC39 ed FC30. dopo di che ti crei una tabella delle varibili: DB1.DBD 0 "DB1".VALORE_REAL_1 VIRGOLA MOBILE DB1.DBB 10 CARATTERE DB1.DBB 11 CARATTERE '' DB1.DBB 12 "DB1".STRINGA_1[1] Variabile stringa CARATTERE '+' DB1.DBB 13 "DB1".STRINGA_1[2] Variabile stringa CARATTERE '0' DB1.DBB 14 "DB1".STRINGA_1[3] Variabile stringa CARATTERE '.' DB1.DBB 15 "DB1".STRINGA_1[4] Variabile stringa CARATTERE '1' DB1.DBB 16 "DB1".STRINGA_1[5] Variabile stringa CARATTERE '2' DB1.DBB 17 "DB1".STRINGA_1[6] Variabile stringa CARATTERE '5' DB1.DBB 18 "DB1".STRINGA_1[7] Variabile stringa CARATTERE '0' DB1.DBB 19 "DB1".STRINGA_1[8] Variabile stringa CARATTERE '3' DB1.DBB 20 "DB1".STRINGA_1[9] Variabile stringa CARATTERE '0' DB1.DBB 21 "DB1".STRINGA_1[10] Variabile stringa CARATTERE '0' DB1.DBB 22 "DB1".STRINGA_1[11] Variabile stringa CARATTERE 'E' DB1.DBB 23 "DB1".STRINGA_1[12] Variabile stringa CARATTERE '+' DB1.DBB 24 "DB1".STRINGA_1[13] Variabile stringa CARATTERE '0' DB1.DBB 25 "DB1".STRINGA_1[14] Variabile stringa CARATTERE '4' DB1.DBD 4 "DB1".VALORE_REAL_2 VIRGOLA MOBILE 1250.3 DB1.DBB 30 CARATTERE DB1.DBB 31 CARATTERE DB1.DBB 32 "DB1".STRINGA_2[1] Variabile stringa CARATTERE DB1.DBB 33 "DB1".STRINGA_2[2] Variabile stringa CARATTERE DB1.DBB 34 "DB1".STRINGA_2[3] Variabile stringa CARATTERE DB1.DBB 35 "DB1".STRINGA_2[4] Variabile stringa CARATTERE DB1.DBB 36 "DB1".STRINGA_2[5] Variabile stringa CARATTERE DB1.DBB 37 "DB1".STRINGA_2[6] Variabile stringa CARATTERE DB1.DBB 38 "DB1".STRINGA_2[7] Variabile stringa CARATTERE DB1.DBB 39 "DB1".STRINGA_2[8] Variabile stringa CARATTERE DB1.DBB 40 "DB1".STRINGA_2[9] Variabile stringa CARATTERE DB1.DBB 41 "DB1".STRINGA_2[10] Variabile stringa CARATTERE DB1.DBB 42 "DB1".STRINGA_2[11] Variabile stringa CARATTERE DB1.DBB 43 "DB1".STRINGA_2[12] Variabile stringa CARATTERE DB1.DBB 44 "DB1".STRINGA_2[13] Variabile stringa CARATTERE DB1.DBB 45 "DB1".STRINGA_2[14] Variabile stringa CARATTEREe controlli il tutto.io ho provato con il Sim (ieri) e tutto funzionava.
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