pigroplc Inserita: 16 aprile 2014 Segnala Share Inserita: 16 aprile 2014 Nel post 38 affermi che hai cercato (senza riuscirci) di metterti on line con la FM354, il che significa che il pacchetto di parametrizzazione è diverso. Io ho vissuto un problema simile presso un cliente in Veneto non più tardi di un paio di mesi or sono con una FM354. La CPU era guasta e nel buffer della diagnostica saltuariamente saltava la comunicazione e l'errore appariva nel buffer degli allarmi. pigroplc Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 16 aprile 2014 Autore Segnala Share Inserita: 16 aprile 2014 An capito pigroplc proverò controllare meglio , il pacchetto parametrizzazione del fm 354 me l'ho danno compreso al pacchetto del fm 353. Grazie dell'aiuto per ora , sto progettando una pagina su un hmi di diagnostica , presto metterò delle foto Inviato dall'app. Mobile di PLC Forum da iPhone6,2 Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 21 aprile 2014 Autore Segnala Share Inserita: 21 aprile 2014 (modificato) adesso sto provando interrogare i vari bit di stato per verificare errori, sinceramente e la prima volta che provo usarli io ho scritto cosi: segmento1:fm353 CALL "POS_DIAG" DB_NO :=1 //db fm353 RET_VAL:=DB2.DBW0 //retval errore IN_DIAG:=DB2.DBX2.0 //diagnosi in corso UN BIE //SEGNALAZIONE ERRORE S "ERRORE PRESENTE FM 353" segmento2:fm 354 CALL "POS_DIAG" DB_NO :=6 // db fm 354 RET_VAL:=DB2.DBW4 //attivazione retval IN_DIAG:=DB2.DBX6.0 //diagnosi in corso UN BIE //segnalazione errore S "ERRORE PRESENTE FM 354" . tutti e due richiamati nel OB82 praricamente quando è presente un errore lo stato di BIE e a valore 0. l'ho interrogato in maniera esatta ? grazie mille Modificato: 21 aprile 2014 da coquinati Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 24 aprile 2014 Segnala Share Inserita: 24 aprile 2014 L #OB82_MDL_ADDR L "AW_DB_Achse_01".MOD_ADR ==I // is it the same FM addresse ? SPBN END1 SET S M 202.0 // Readout positive edge R M 202.1 // Error flag reset CALL "POS_DIAG" // FC diagnostic readout DB_NO :=3 RET_VAL:=MW200 IN_DIAG:=M202.0 L MW 200 // Error value L B#16#0 ==I R M 202.1 // Error flag reset SPB END1 S M 202.1 // Error flag set END1: NOP 0 Preso da un mio vecchio progetto. E' interessante notare che del flag poi non me ne facessi assolutamente NULLA. E parliamo di impianti che lavorano da più di 10 anni. Se vuoi invece avere una informazione importante interroga il flag di errore dell'asse. Quello si che serve. Come vedi dal codice si poteva migliorare, mi sembra tanto una cosa copiata li da qualche esempio Siemens e mai più rivista. pigroplc. Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 24 aprile 2014 Autore Segnala Share Inserita: 24 aprile 2014 (modificato) ciao pigroplc , grazie per il post. ma come flag intendi un errore di lavoro del fc? io che ho 2 fm ho caricato l'indirizzo del modulo nell'accumulatore e poi lo trasferito a #OB82_MDL_ADDR. quello che ho scritto io per fm 354: L 272 //indirizzo fm 354 T #OB82_MDL_ADDR L "IFFM_ICTRL".MOD_ADR ==I SPBN END1 SET S DB2.DBX 6.0 //lettura R DB2.DBX 6.1 //ERROR FC DIAG CALL "POS_DIAG" DB_NO :=6 // db fm 354 RET_VAL:=DB2.DBW4 // retval IN_DIAG:=DB2.DBX6.0 //lettura L DB2.DBW 4 L B#16#0 ==I R DB2.DBX 6.1 //ERROR FC DIAG SPB END1 S DB2.DBX 6.1 //ERROR FC DIAG END1: NOP 0 ma nell'ultima parte se mi trova la retval pari a 0 mi resetta l'errore della fc diag e poi me lo setta? non mi è molto chiara questa parte. comunque grazie molte Modificato: 24 aprile 2014 da coquinati Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 24 aprile 2014 Segnala Share Inserita: 24 aprile 2014 Brutto errore: NON devi scrivere nel parametro temporaneo della OB82 bensi' leggere e quindi confrontare con l'indirizzo della scheda. Se l'evento scatenante l'esecuzione della OB ha lo stesso indirizzo puoi quindi ciclare il blocco di diagnostica. Come l'hai scritto tu è sbagliato. Procedendo, confronti il codice di errore e se è zero resetta il flag quindi salta, vuol dire che l'esecuzione del blocco è dovuta al rientro della condizione di allarme. Se invece il codice è diverso da zero NON effettua il salto, mette in default il risultato logico combinatorio a 1, quindi setta il flag di allarme. semplice no? pigroplc Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 24 aprile 2014 Autore Segnala Share Inserita: 24 aprile 2014 Si hai ragione ero andato in confusione , vuol dire che quando ho la retval a 0 mi segnala l'errore settando un merker, ma l'indirizzo se lo ricava automaticamente allora, non lo sapevo questo, grazie molte ., ora sto procedendo un po' alla volta a imparare ad usare questa scheda .. Anche se il problema online non l'ho ancora risolto :(... Non ho trovato ancora nessuno che mi presta il cavetto , ogni giorno che passa mi convinco sempre di più che sia quello , ritengo strano anche la risposta che mi ha dato siemens che potrebbe essere il computer ma il pc adapter no.per ultimo tentativo Sarei curioso di provare il step 7 v5.2 magari potrò vedere la luce ..... Inviato dall'app. Mobile di PLC Forum da iPhone6,2 Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 25 aprile 2014 Segnala Share Inserita: 25 aprile 2014 NON c'entra la versione di Step 7. Se: 1) riesci a vedere le schede nella configurazione hardware 2) riesci a trasferire la configurazione hardware 3) vedi che cambia dinamicamente la DB di istanza della scheda 4) riesci a muovere l'asse vuol dire secondo me che non hai problemi con il software e la CPU si college con la scheda! Queste schede non hanno bisogno di routing abilitato da parte del PLC (a suo tempo Siemens non aveva funzioni di routing sviluppate). Sembra piuttosto una questione legata a qualche time out nella USB oppure nel convertitore che interrompe la comunicazione. Io ti assicuro che con la CP5512 PCMCIA ci andavo online senza problemi. pigroplc Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 26 aprile 2014 Autore Segnala Share Inserita: 26 aprile 2014 Scusa se rispondo ora ma sono appena tornato dall'Austria , comunque il db del fm comunica ,solo questo riesco vedere l'asse non ho ancora provato inserire qualche funzione di jog , perché i parametri di frequenza non riesco inserirli all'interno del fm quindi non vorrei rovinare il motore o la piccola unità di potenza , la cp 5512 mi sembra di vedere che ha un attacco abbastanza particolare ( mai visto) il mio pc non è dotato di questa interfaccia , è possibile portare l'interfaccia della 5512 a usb? Grazie è ciao ! Inviato dall'app. Mobile di PLC Forum da iPhone6,2 Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 27 aprile 2014 Segnala Share Inserita: 27 aprile 2014 FUNCTION FC 16 : VOID TITLE =FM453 Standard MD Uebertragen //KNOW_HOW_PROTECT //Schnistelle realisiert mot ANWENDER_DB wie Ausgabestand 2.0 des //Projektierungspaket FM453. //ACHSENNUMMER =Die auf der Innerflaeche WinCC ausgewaehlte Achsennummer //einstellen. //(inkrement min=1 max=abhaenging von der Anlage) //START_READ_FM =Beginn Maschinendatenauslesung; Ruecksetzen am Ende der //Funktion. //STEP_1_READ; STEP_2_READ; STEP_3_READ = Merker von Innenfuehrung des Zyklus von //Maschinendatenuebertragung einsetzen. Erklaerte Merker sind nicht in aenderen //Teilen des Softwares zu verwenden. //START_WRITE_FM =Beginn Maschinendaten Auslesen; Ruecksetzen am Ende der //Funktion. //STEP_1_WRITE; STEP_2_WRITE; STEP_3_WRITE; STEP_4_WRITE = Merker von //Innenfuehrung des Zyklus von Maschinendatenuebertragung einsetzen. Erklaerte //Merker sind nicht in aenderen Teilen des Softwares zu verwenden. //------------------------------------------ //BETRIEBZUSTAENDE //------------------------------------------ // //DB2: DB Schnistelle mit WinCC //DB3: DB Schnistelle fuer Achse 1 und folgende //DB151: DB Schnistelle fuer Achse 1 und folgende // //Um Verarbeitung zu vereinfachen, sind nicht Range-Pruefungen in der //Verarbeitung //vorgesehen. Nach Belieben des Programmierers, pruefen die Anwesenheit der //bezueglichen DB und Werte des Eingangsparameter ACHSENNUMMER. // //Ausgabestand 1.0 23.10.00 RF AUTHOR : VANHALEN VERSION : 0.1 VAR_INPUT ACHSENNUMMER : WORD ; //ACHSENNUMMER END_VAR VAR_IN_OUT START_READ_FM : BOOL ; //START_READ_FM STEP_1_READ : BOOL ; //STEP_1_READ STEP_2_READ : BOOL ; //STEP_2_READ STEP_3_READ : BOOL ; //STEP_3_READ START_WRITE_FM : BOOL ; //START_WRITE_FM STEP_1_WRITE : BOOL ; //STEP_1_WRITE STEP_2_WRITE : BOOL ; //STEP_2_WRITE STEP_3_WRITE : BOOL ; //STEP_3_WRITE STEP_4_WRITE : BOOL ; //STEP_4_WRITE END_VAR VAR_TEMP DB_AW : WORD ; //Anwender Daten Bausteine X_Sorgente : ANY ; //Quelle DB Y_Destinatario : ANY ; //Ziel DB RETVAL : INT ; //RETVAL SFC20 END_VAR BEGIN NETWORK TITLE =FM_LESES DATEN MASCHINE L #ACHSENNUMMER; // Range control L 0; ==I ; BEB ; L #ACHSENNUMMER; L 2; +I ; T #DB_AW; // Define the DB_AW number AUF DB [#DB_AW]; // Open DB_AW U #START_READ_FM; // Strobe start read UN #START_WRITE_FM; // Strobe start write UN #STEP_1_READ; // Initialization pointer step UN #STEP_2_READ; // Strobe Modify parameters / Data step UN #STEP_3_READ; // DB_WinCC update step / Range control S #STEP_1_READ; // Initialization pointer step SPB INIT; SPA CICL; INIT: L 1; T DBB 196; // Type = 1 ---> MD T DBB 199; // =1 ---> Read job parameters L 5; T DBB 197; // INFO1 = 5 ---> From MD5 T DBB 198; // INFO2 = 5 ---> Number of MD's consecutive CICL: U #STEP_1_READ; // Initialization pointer step UN #STEP_2_READ; // Strobe Modify parameters / Data step R #STEP_1_READ; // Initialization pointer step S #STEP_2_READ; // Strobe Modify parameters / Data step S DBX 39.3; // Strobe Modify parameters / Data U #STEP_2_READ; // Strobe Modify parameters / Data step UN DBX 39.3; U( ; L DBB 197; // IF data number is equal of L DBB 447; // the read request THAN the handshake ==I ; // is complited ) ; R #STEP_2_READ; // Strobe Modify parameters / Data step S #STEP_3_READ; // DB_WinCC update step / Range control SPB ANY; SPA CIC1; //*********************** ANY: LAR1 P##X_Sorgente; // Parameter assignment ANY //*********************** L W#16#1002; // ID code & type T LW [AR1,P#0.0]; L 20; // Nr. bytes T LW [AR1,P#2.0]; L DBNO; // Nr. DB source T LW [AR1,P#4.0]; L 450; // From DW number SLD 3; OD DW#16#84000000; T LD [AR1,P#6.0]; //*************************** LAR1 P##Y_Destinatario; // Parameter assignment ANY //*************************** L W#16#1002; // ID code & type T LW [AR1,P#0.0]; L 20; // Nr. bytes T LW [AR1,P#2.0]; L 2; // Nr. DB destination = DB 2 T LW [AR1,P#4.0]; L DBB 447; // From DW number L 4; *I ; L 20; -I ; SLD 3; OD DW#16#84000000; T LD [AR1,P#6.0]; CALL SFC 20 (// SFC20 DATA_BLOCK_MOVE SRCBLK := #X_Sorgente, RET_VAL := #RETVAL, DSTBLK := #Y_Destinatario); L DBB 197; L 5; +I ; T DBB 197; L 70; >=I ; R #STEP_3_READ; // DB_WinCC update step / Range control R #START_READ_FM; // Strobe start read SPB SPEE; // IF NOT ENDED THAN LOOP BACK R #STEP_3_READ; // DB_WinCC update step / Range control S #STEP_1_READ; // Initialization pointer step SPA CIC1; SPEE: NOP 0; // SPEED SET POINT UPGRADE //*********************** LAR1 P##X_Sorgente; // Parameter assignment ANY //*********************** L W#16#1002; // ID code & type T LW [AR1,P#0.0]; L 8; // Nr. bytes T LW [AR1,P#2.0]; L DBNO; // Nr. DB source T LW [AR1,P#4.0]; L 160; // From DW number SLD 3; OD DW#16#84000000; T LD [AR1,P#6.0]; //*************************** LAR1 P##Y_Destinatario; // Parameter assignment ANY //*************************** L W#16#1002; // ID code & type T LW [AR1,P#0.0]; L 8; // Nr. bytes T LW [AR1,P#2.0]; L 2; // Nr. DB destination = DB 2 T LW [AR1,P#4.0]; L 268; // From DW number SLD 3; OD DW#16#84000000; T LD [AR1,P#6.0]; CALL SFC 20 (// SFC20 DATA_BLOCK_MOVE SRCBLK := #X_Sorgente, RET_VAL := #RETVAL, DSTBLK := #Y_Destinatario); BEA ; CIC1: UN #START_READ_FM; // Strobe start read R #STEP_1_READ; // Initialization pointer step R #STEP_2_READ; // Strobe Modify parameters / Data step R #STEP_3_READ; // DB_WinCC update step / Range control NETWORK TITLE =SCHREIBEN DATEN MASCHINE UN #START_READ_FM; // Strobe start read U #START_WRITE_FM; // Strobe start write UN #STEP_1_WRITE; // Initialization pointer step UN #STEP_2_WRITE; // Strobe Modify parameters / Data step UN #STEP_3_WRITE; // DB_WinCC update step / Range control UN #STEP_4_WRITE; // MD Activation step S #STEP_1_WRITE; // Initialization pointer step SPB INIW; SPA CICW; INIW: L 1; T DBB 196; // Type = 1 ---> MD L 4; T DBB 199; // =4 ---> Write & Save job parameters L 5; T DBB 197; // INFO1 = 5 ---> From MD5 T DBB 198; // INFO2 = 5 ---> Number of MD's consecutive //*********************** LOOP: LAR1 P##X_Sorgente; // Parameter assignment ANY //*********************** L W#16#1002; // ID code & type T LW [AR1,P#0.0]; L 20; // Nr. bytes T LW [AR1,P#2.0]; L 2; // Nr. DB destination = DB 2 T LW [AR1,P#4.0]; L DBB 197; // From DW number L 4; *I ; L 20; -I ; SLD 3; OD DW#16#84000000; T LD [AR1,P#6.0]; //*************************** LAR1 P##Y_Destinatario; // Parameter assignment ANY //*************************** L W#16#1002; // ID code & type T LW [AR1,P#0.0]; L 20; // Nr. bytes T LW [AR1,P#2.0]; L DBNO; // Nr. DB source T LW [AR1,P#4.0]; L 200; // From DW number SLD 3; OD DW#16#84000000; T LD [AR1,P#6.0]; CALL SFC 20 (// SFC20 DATA_BLOCK_MOVE SRCBLK := #X_Sorgente, RET_VAL := #RETVAL, DSTBLK := #Y_Destinatario); CICW: U #STEP_1_WRITE; // Initialization pointer step UN #STEP_2_WRITE; // Strobe Modify parameters / Data step R #STEP_1_WRITE; // Initialization pointer step S #STEP_2_WRITE; // Strobe Modify parameters / Data step S DBX 39.3; // Strobe Modify parameters / Data U #STEP_2_WRITE; // Strobe Modify parameters / Data step UN DBX 39.3; // And strobe negative edge = JOB ENDED R #STEP_2_WRITE; // Strobe Modify parameters / Data step S #STEP_3_WRITE; // Pointer increase step SPB INCR; SPA CIW1; INCR: L DBB 197; L 5; +I ; T DBB 197; L 70; >=I ; R #STEP_3_WRITE; // Pointer increase step S #STEP_4_WRITE; // MD Activation step S DBX 37.0; // MD Activation strobe SPB CIW1; // IF NOT ENDED THAN LOOP BACK R #STEP_3_WRITE; // Pointer increase step S #STEP_1_WRITE; // Initialization pointer step SPB LOOP; CIW1: U #STEP_4_WRITE; // MD Activation step UN DBX 37.0; // MD Activation strobe negative edge R #STEP_4_WRITE; // MD Activation step R #START_WRITE_FM; // Strobe start write SPB ANYW; SPB CIW2; //*********************** ANYW: LAR1 P##X_Sorgente; // Parameter assignment ANY //*********************** L W#16#1002; // ID code & type T LW [AR1,P#0.0]; L 260; // Nr. bytes T LW [AR1,P#2.0]; L 2; // Nr. DB source = DB 2 T LW [AR1,P#4.0]; L 0; // From DW number SLD 3; OD DW#16#84000000; T LD [AR1,P#6.0]; //*************************** LAR1 P##Y_Destinatario; // Parameter assignment ANY //*************************** L W#16#1002; // ID code & type T LW [AR1,P#0.0]; L 260; // Nr. bytes T LW [AR1,P#2.0]; L #ACHSENNUMMER; // axis number 1 to 3 -> DB151 to DB153 L 150; // Nr. DB destination DB 151 for axis 1 +I ; // Nr. DB destination DB 152 for axis 2 T LW [AR1,P#4.0]; // Nr. DB destination DB 153 for axis 3 L 0; // From DW number SLD 3; OD DW#16#84000000; T LD [AR1,P#6.0]; CALL SFC 20 (// SFC20 DATA_BLOCK_MOVE SRCBLK := #X_Sorgente, RET_VAL := #RETVAL, DSTBLK := #Y_Destinatario); // Speed set point value store in DB_MD ....................... //*********************** LAR1 P##X_Sorgente; // Parameter assignment ANY //*********************** L W#16#1002; // ID code & type T LW [AR1,P#0.0]; L 8; // Nr. bytes T LW [AR1,P#2.0]; L 2; // Nr. DB source = DB 2 T LW [AR1,P#4.0]; L 268; // From DW number SLD 3; OD DW#16#84000000; T LD [AR1,P#6.0]; //*************************** LAR1 P##Y_Destinatario; // Parameter assignment ANY //*************************** L W#16#1002; // ID code & type T LW [AR1,P#0.0]; L 8; // Nr. bytes T LW [AR1,P#2.0]; L #ACHSENNUMMER; // axis number 1 to 3 -> DB151 to DB153 L 150; // Nr. DB destination DB 151 for axis 1 +I ; // Nr. DB destination DB 152 for axis 2 T LW [AR1,P#4.0]; // Nr. DB destination DB 153 for axis 3 L 268; // From DW number SLD 3; OD DW#16#84000000; T LD [AR1,P#6.0]; CALL SFC 20 (// SFC20 DATA_BLOCK_MOVE SRCBLK := #X_Sorgente, RET_VAL := #RETVAL, DSTBLK := #Y_Destinatario); // Speed set point value store in DB_AW ....................... //*********************** LAR1 P##X_Sorgente; // Parameter assignment ANY //*********************** L W#16#1002; // ID code & type T LW [AR1,P#0.0]; L 8; // Nr. bytes T LW [AR1,P#2.0]; L 2; // Nr. DB source = DB 2 T LW [AR1,P#4.0]; L 268; // From DW number SLD 3; OD DW#16#84000000; T LD [AR1,P#6.0]; //*************************** LAR1 P##Y_Destinatario; // Parameter assignment ANY //*************************** L W#16#1002; // ID code & type T LW [AR1,P#0.0]; L 8; // Nr. bytes T LW [AR1,P#2.0]; L DBNO; // axis number 1 to 3 -> DB3 to DB5 T LW [AR1,P#4.0]; // Nr. DB destination DB 5 for axis 3 L 160; // From DW number SLD 3; OD DW#16#84000000; T LD [AR1,P#6.0]; CALL SFC 20 (// SFC20 DATA_BLOCK_MOVE SRCBLK := #X_Sorgente, RET_VAL := #RETVAL, DSTBLK := #Y_Destinatario); S DBX 38.0; // Speed level 1 & 2 strobe CIW2: UN #START_WRITE_FM; // Strobe start write R #STEP_1_WRITE; // Initialization pointer step R #STEP_2_WRITE; // Strobe Modify parameters / Data step R #STEP_3_WRITE; // Pointer increase step R #STEP_4_WRITE; // MD Activation step END_FUNCTION Eh no! purtroppo ho già affrontato questo problema all'atto di sostituire il vecchio PC. Esistono dei convertitori USB-PCMCIA in rete ma quando chiedi eventuali compatibilità con il componente Siemens ti rimbalzano scrivendo che il componente è incompatibile quindi se vuoi comprarlo fai pure ma se non funziona sono affari tuoi. Quanto ai parametric di frequenza non penso siano un problema, nel senso che io non ho mai danneggiato azionamenti o motori, nella peggiore delle ipotesi non si muovono perchè la accelerazione è superiore a quanto sopportato dall'accoppiamento motore-meccanica. Tu hai un motore collegato a nulla.... Quanto alla modifica dei dati macchina potresti dilettarti ad usare una applicazione datata ma ancora funzionante .... all epoca scrivevo in Tedesco, adesso non ho tempo di tradurtelo. Cerca di capirlo. Praticamente veniva usato per leggere e scrivere I dati macchina da una pagina video wincc senza l'utilizzo del PG. Questo era la manna per quelli che dovevano fare la messa in servizio..... pigroplc Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 27 aprile 2014 Segnala Share Inserita: 27 aprile 2014 FUNCTION FC 18 : VOID TITLE =MAIN BLOCK FM_453 Release 2.1 //KNOW_HOW_PROTECT //Interfaccia realizzata con ANWENDER_DB come da release 2.0 del pacchetto di //progettazione FM453 release 23.11.00 RF // //Aggiunta la gestione OVERRIDE fisso in manuale 18.04.02 RF AUTHOR : VANHALEN VERSION : 0.1 VAR_INPUT MANUALE : BOOL ; //Selettore manuale AUTOMATICO : BOOL ; //Selettore automatico SINCRONIZZAZIONE : BOOL ; //Selettore sincronizzazione START : BOOL ; //Start asse STOP_NOTAUS : BOOL ; //Stop axis STOP_HYDRAULIKAGGREGAT : BOOL ; //Stop Hydraulic unit RESET : BOOL ; //Reset errori asse JOG_AVANTI : BOOL ; //Comando manuale + JOG_INDIETRO : BOOL ; //Comando manuale - ENABLE_ON : BOOL ; //Abilitazione Simodrive SYNCRO_POS : BOOL ; //Comando sincronizzazione OK_DRIVER : BOOL ; //Simodrive OK ALL_STATION : BOOL ; //Stazione in allarme EXTRA_POS : BOOL ; //Extracorsa + EXTRA_NEG : BOOL ; //Extracorsa - OVERRIDE : BYTE ; //Override AW_DB : BLOCK_DB ; //Numero della DB_WF END_VAR VAR_IN_OUT PEH : BOOL ; //Asse in posizione AXIS_STOPPED : BOOL ; //Asse fermo FEHL : BOOL ; //Asse in errore SYNC : BOOL ; //Asse sincronizzato POSITION_REACHED : BOOL ; //Posizione raggiunta con funzione M END_VAR VAR_TEMP Kanalnummer : WORD ; Anwender_DB : WORD ; fehlercode : WORD ; END_VAR BEGIN NETWORK TITLE =SWITCHING AXIS MODE //Switch axis mode, during switching cycle, axis is forced to stop. AUF #AW_DB; L DBB 24; // Active operating mode L 1; <>I ; U #MANUALE; // manual selection UN #AUTOMATICO; UN #SINCRONIZZAZIONE; UN DBX 25.2; // Axis negative travel UN DBX 25.3; // Axis positive travel SPB HAND; // L DBB 24; // Active operating mode L 3; <>I ; UN #MANUALE; // and syncro selection UN #AUTOMATICO; U #SINCRONIZZAZIONE; UN DBX 25.2; // Axis negative travel UN DBX 25.3; // Axis positive travel SPB REFE; // L DBB 24; // Active operating mode L 6; <>I ; UN #MANUALE; // and auto selection U #AUTOMATICO; UN #SINCRONIZZAZIONE; U DBX 25.0; // already syncronized UN DBX 25.2; // Axis negative travel UN DBX 25.3; // Axis positive travel SPB AUT; // Cycling with the right switching L DBB 24; // Active operating mode L 1; ==I ; U #MANUALE; // manual selection UN #AUTOMATICO; UN #SINCRONIZZAZIONE; SPB RUN; // L DBB 24; // Active operating mode L 3; ==I ; UN #MANUALE; // and syncro selection UN #AUTOMATICO; U #SINCRONIZZAZIONE; SPB RUN; // L DBB 24; // Active operating mode L 6; ==I ; UN #MANUALE; // and auto selection U #AUTOMATICO; UN #SINCRONIZZAZIONE; SPB RUN; O DBX 25.2; // Axis negative travel O DBX 25.3; // Axis positive travel = DBX 15.1; // Axis stop SET ; R DBX 15.3; // Positive direction R DBX 15.2; // Negative direction // GOTO end if there isn't the right feedback from FM module SPA COMM; // stop & waiting for axis right mode HAND: L 1; T DBB 16; // Operating mode T DBB 17; // Operating mode parameters SPA COMM; // stop & waiting for axis right mode REFE: L 3; T DBB 16; // Operating mode SPA COMM; // stop & waiting for axis right mode AUT: L 6; T DBB 16; // Operating mode SPA COMM; // stop & waiting for axis right mode NETWORK TITLE =INTERFACE ALWAIS RUNNING //This interface is always running not depending on WF mode. //In this side take place override and program number and so on RUN: L #OVERRIDE; U #AUTOMATICO; SPB TDBB; L 100; TDBB: T DBB 18; // override 0 - 100 % U #OK_DRIVER; = DBX 15.7; // drive enable U #ENABLE_ON; = DBX 34.0; // Controller enable // L DBW 42; L 0; <>I ; SPB NEWV; L 2#11111111111000; T DBW 42; S DBX 38.0; // and set speed strobe NEWV: NOP 0; // U #START; UN DBX 38.3; // START MDI BLOCK TRANSFER UN DBX 48.3; // FEEDBACK MDI BLOCK TRANSFER S DBX 38.3; // START MDI BLOCK TRANSFER U DBX 48.3; // FEEDBACK MDI BLOCK TRANSFER UN #START; R DBX 48.3; // FEEDBACK MDI BLOCK TRANSFER // NETWORK TITLE =MANUAL MODE SELECTION //If manual is switched on, then this side is working .... U #MANUALE; SPB MANU; SPA SINC; MANU: O DBX 25.3; // Positive travel O DBX 23.0; // enable to start U DBX 22.7; // FM parameterized U #STOP_NOTAUS; // Not stop axis U #JOG_AVANTI; UN #JOG_INDIETRO; U #EXTRA_POS; // not extra jog tripped U #OK_DRIVER; // Simodrive ready to move U DBX 15.7; // Controller enable UN DBX 22.3; // Operator / Traversing error UN DBX 22.4; // Data error U #STOP_HYDRAULIKAGGREGAT; // Hydraulik unit ON U DBX 48.0; // IF checkback speed level ON UN DBX 38.0; // and set speed strobe OFF = DBX 15.3; // Positive direction // O DBX 25.2; // Negative travel O DBX 23.0; // enable to start U DBX 22.7; // FM parameterized U #STOP_NOTAUS; // Not stop axis U #JOG_INDIETRO; UN #JOG_AVANTI; U #EXTRA_NEG; // not extra jog tripped U #OK_DRIVER; // Simodrive ready to move U DBX 15.7; // Controller enable UN DBX 22.3; // Operator / Traversing error UN DBX 22.4; // Data error U #STOP_HYDRAULIKAGGREGAT; // Hydraulik unit ON U DBX 48.0; // IF checkback speed level ON UN DBX 38.0; // and set speed strobe OFF = DBX 15.2; // Negative direction // U DBX 15.1; // Axis stop R DBX 15.1; // Axis stop // UN DBX 48.0; // IF not checkback speed level UN DBX 38.6; // Bezungspunkt setzen UN DBX 38.7; S DBX 38.0; // THEN set speed strobe SPA COMM; // GO TO WF UPDATE NETWORK TITLE =HOMING MODE SELECTION //If homing is switched on, then this side is working .... SINC: U #SINCRONIZZAZIONE; SPB SYNC; SPA AUTO; SYNC: O DBX 23.0; // enable to start O DBX 15.0; // syncronization U #SYNCRO_POS; // start sincro UN DBX 25.0; // already syncronized UN DBX 22.3; // Operator / Traversing error UN DBX 22.4; // Data error U DBX 22.7; // FM parameterized UN DBX 37.5; // Not reset asse in corso U #STOP_NOTAUS; // Not stop axis UN #ALL_STATION; // the station is free of alarms U #OK_DRIVER; // Simodrive ready to move U DBX 15.7; // Controller enable U #EXTRA_POS; U #EXTRA_NEG; U #STOP_HYDRAULIKAGGREGAT; // Hydraulik unit ON = DBX 15.0; // syncronization // Stop axis ON #EXTRA_POS; ON #EXTRA_NEG; ON #STOP_NOTAUS; // Not stop axis ON #STOP_HYDRAULIKAGGREGAT; // Hydraulik unit ON = DBX 15.1; // Axis stop SPA COMM; // GO TO WF UPDATE NETWORK TITLE =AUTOMATIC MODE SELECTION //If automatic is switched on, then this side is working .... //MDI function mode is working // MDI BLOCK SYNTAX COMPOSE AUTO: L 2#10001; // Position und G funktion T DBB 178; L 2#11; // M funktion und geschwindigkeit T DBB 179; L 91; // G91 funktion T DBB 180; L 0; // Keine G2 gruppe T DBB 181; L 1; // M funktion value T DBB 192; L 0; // Keine M2 und M3 funktion T DBB 193; T DBB 194; U #AUTOMATICO; SPB AUBE; SPA COMM; AUBE: O DBX 23.0; // enable to start O DBX 15.0; // enable START U #START; UN #POSITION_REACHED; UN #ALL_STATION; // the station is free of alarms U #OK_DRIVER; // Simodrive ready to move U DBX 15.7; // Controller enable U #EXTRA_POS; U #EXTRA_NEG; U #STOP_NOTAUS; // Not stop axis UN DBX 38.3; // START MDI BLOCK TRANSFER U DBX 22.7; // FM parameterized U DBX 25.0; // syncronized UN DBX 22.3; // Operator / Traversing error UN DBX 22.4; // Data error UN DBX 27.4; // NOT strobe M function UN DBX 15.4; // not ACK M function U #STOP_HYDRAULIKAGGREGAT; // Hydraulik unit ON = DBX 15.0; // enable START // Stop axis ON #EXTRA_POS; ON #EXTRA_NEG; ON #START; ON #STOP_HYDRAULIKAGGREGAT; // Hydraulik unit ON = DBX 15.1; // Axis stop // Axis reached position UN #POSITION_REACHED; U DBX 27.4; // M function ON S DBX 15.4; // set ACK for M function S #POSITION_REACHED; // set for application software // U DBX 15.4; // reset ACK when WF reset his UN DBX 27.4; // strobe for M function R DBX 15.4; NETWORK TITLE =Kanalpruefung mit geberfehler // Kanalnummer COMM: L DBW 2; T #Kanalnummer; L 1; ==I ; SPB EIN; L #Kanalnummer; L 2; ==I ; SPB ZWEI; L #Kanalnummer; L 3; ==I ; SPB TREI; SPA salt; EIN: L DBB 78; T #fehlercode; SPA salt; ZWEI: L DBNO; L 1; -I ; T #Anwender_DB; AUF DB [#Anwender_DB]; L DBB 80; T #fehlercode; SPA salt; TREI: L DBNO; L 2; -I ; T #Anwender_DB; AUF DB [#Anwender_DB]; L DBB 82; T #fehlercode; salt: NOP 0; NETWORK TITLE =UPDATE FM COMMAND AUF #AW_DB; U DBX 25.7; // position reached = #PEH; // UN DBX 25.2; // + UN DBX 25.3; // - O DBX 23.0; // axis stopped = #AXIS_STOPPED; // L DBW 86; // Error code active for this axis L DBW 90; +I ; L DBW 94; +I ; L #fehlercode; +I ; L 0; <>I ; O DBX 22.3; // Operator / Traversing error O DBX 22.4; // Data error = #FEHL; // Fehlermeldung // U DBX 25.0; // axis syncronized = #SYNC; // axis syncronized // U #RESET; U DBX 22.3; // Operator / Traversing error UN DBX 22.4; // Data error = DBX 14.3; // Alarm Acknoledge UN #STOP_HYDRAULIKAGGREGAT; // Hydraulik unit OFF U #SYNC; // axis syncronized O ; U #RESET; // or hard reset required !!! UN DBX 22.3; // Operator / Traversing error U( ; L #fehlercode; L 0; <>I ; O ; U DBX 22.4; // Data error ) ; S DBX 37.5; // Channel initialization (hard reset) NETWORK TITLE =Error reset L DBW 86; // Error code active for this axis L DBW 90; +I ; L DBW 94; +I ; L #fehlercode; +I ; L 0; <>I ; UN DBX 22.3; // Operator / Traversing error UN DBX 22.4; // Data error UN #RESET; UN DBX 37.5; // Channel initialization (hard reset) SPB RUEC; SPA ENDE; RUEC: L 0; T DBW 86; // Error code active for this axis T DBW 90; T DBW 94; ENDE: NOP 0; END_FUNCTION FUNCTION FC 19 : VOID TITLE =Main block for FM353 Release 2.0 AUTHOR : VANHALEN VERSION : 0.1 VAR_TEMP OVERRIDE : BYTE ; JOG_PLUS : BOOL ; JOG_MINUS : BOOL ; MANUAL : BOOL ; AUTOMATIC : BOOL ; REFERENZPUNKTFAHRT : BOOL ; UEBERLAUFSCHALTER : BOOL ; UEBERLAUFSCH_1 : BOOL ; UEBERLAUFSCH_2 : BOOL ; pippo : BOOL ; reset : BOOL ; return : INT ; asse_1 : WORD ; END_VAR BEGIN NETWORK TITLE =Asse HSM1 alimentatore lamiera stazione 01 CALL FC 1 ( DB_NO := 3,// DBnummer RET_VAL := #return);// Return Value L DB100.DBD 4; T #OVERRIDE; UN M 130.0; // Automatico = #MANUAL; U M 130.0; // Automatico = #AUTOMATIC; CALL FC 18 ( MANUALE := #MANUAL, AUTOMATICO := #AUTOMATIC, SINCRONIZZAZIONE := FALSE, START := M 153.0, STOP_NOTAUS := TRUE,//M150.5 STOP_HYDRAULIKAGGREGAT := TRUE, RESET := M 150.3, JOG_AVANTI := E 35.4, JOG_INDIETRO := E 35.5, ENABLE_ON := TRUE, SYNCRO_POS := M 153.7, OK_DRIVER := TRUE, ALL_STATION := DB50.DBX 50.0, EXTRA_POS := TRUE,//M150.6 EXTRA_NEG := TRUE,//M150.6 OVERRIDE := #OVERRIDE, AW_DB := DB 3, PEH := M 153.2, AXIS_STOPPED := M 153.3, FEHL := M 153.4, SYNC := M 153.5, POSITION_REACHED := M 153.6); NETWORK TITLE =FM_353 Trasferimento dati macchina con MP370 // L 1; T #asse_1; CALL FC 16 ( ACHSENNUMMER := #asse_1, START_READ_FM := M 93.1, STEP_1_READ := M 251.1, STEP_2_READ := M 251.2, STEP_3_READ := M 251.3, START_WRITE_FM := M 93.0, STEP_1_WRITE := M 252.1, STEP_2_WRITE := M 252.2, STEP_3_WRITE := M 252.3, STEP_4_WRITE := M 252.4); U M 93.0; CLR ; L S5T#10S; SE T 172; U T 172; S M 93.2; R M 93.0; U M 93.1; CLR ; L S5T#10S; SE T 173; U T 173; S M 93.3; R M 93.1; END_FUNCTION All'epoca poi mettevo pure le protezioni ai blocchi ... poi ho scoperto che ci voleva moooolto poco a rimuoverle! ah ah ah ah senti, ti allego pure la gestione di interfaccia e il suo richiamo. Il blocco era parametrizzato per essere richiamato n volte tante schede c'erano. c'e' un riferimento pure alla centralina idraulica, o cavi I controlli oppure metti true. pigroplc Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 27 aprile 2014 Autore Segnala Share Inserita: 27 aprile 2014 Auture : van halen?:)hai automatizzato la chitarra di eddie?. A parte gli scherzi , grazie mille dell'aiuto , stasera o oggi pomeriggio mi metto con calma e provo capire il tutto. Grazie davvero è scusa il disturbo... Riguardo a siemens e alla cp5512 immagino che abbiano risposto così , però sarebbe da provare..forse dicono così solo per motivi di business a vendere i pc adapter usb. Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 27 aprile 2014 Segnala Share Inserita: 27 aprile 2014 van halen: era uno dei miei infiniti nickname (avevo anche molti più capelli di adesso) . qui trovi il mio interessamento a suo tempo in giro in rete: http://plcforum.uz.ua/viewtopic.php?f=17&t=14131&hilit=pigroplc di fatto uno dei limiti è la possibilità di utilizzare il dispositivo in una VM, e visto che sono a quota 11 nel mio PC puoi ben capire quando sia importante. pigroplc Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 2 maggio 2014 Autore Segnala Share Inserita: 2 maggio 2014 Grazie mille pigroplc, il segno che non ho più risposto non è dovuto a un mancato interessamento a il tuo programma , e che sto impiegando molto tempo a imparare i dati o parametri di tipo ANY , mai usati da me , ti ringrazio molto anche per la discussione della cp, ieri ho avuto occasione di parlare con un programmatore plc siemens che mi ha sconsigliato vivamente l'uso della cp5512 PCMIA perché inoltre mi ha riferito che sulle VM non funziona nemmeno, piuttosto mi ha consigliato le cp USB , mi ha riferito che attualmente us un pc adapter che solitamente si usa per la tele assistenza ,quello che si attacca sul modem vPn ,( non ricordo il codice n'è il nome esatto ,ma è quello con i led di interfaccia incorporati sul adattatore seriale che attacco alla cpu). Per ora sto valutando molti aspetti.. Tutto per risolvere un problema più unico che raro . Grazie appena ho novità scrivo, Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 2 maggio 2014 Segnala Share Inserita: 2 maggio 2014 da una attenta lettura della discussione linkata nel mio ultimo intervento si evince quello che ti sei fatto dire ieri. Il codice che ti ho postato serve a NON aver bisogno di collegarsi con la scheda stessa, bensì trasferire i parametri solamente da una DB nel PLC. Coloro che utilizzano i miei progetti NON hanno bisogno del PG per cambiare i parametri perché li cambiano da video SEMPLICEMENTE. Ritengo quindi che in fondo tu possa pure fare a meno del collegamento diretto alla scheda, se ti prefiggi di modificare i parametri utilizzando il codice. Ultimo aspetto rilevante: mi sembra di capire che l'apprendimento dell'utilizzo della scheda è totalmente propedeutico e non è quindi finalizzato a progetti reali. A tal scopo ritengo FONDAMENTALE che tu possa entrare nel dettaglio a capire il funzionamento della DB di interfaccia. Quanto succede purtroppo nella pratica di noi sviluppatori è di non avere tempo o monte ore per poter sviluppare tutte le funzionalità di un prodotto, nel tuo caso invece è meglio entrare a fondo per questioni di esperienza personale, non vincolata a conteggi di profitto ecc. pigroplc Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 2 maggio 2014 Autore Segnala Share Inserita: 2 maggio 2014 Si infatti subito ero preso da una voglia pazza di veder girare il motore , poi come hai detto te mi sono calmato e sto cercando di analizzare tutto nel dettaglio :)di applicare questa scheda su un progetto resta per ora un sogno ,in futuro quando avrò la piena dimestichezza e se avrò il lavoro.. Riguardo alla tua idea di programma la ritengo molto comodo riuscire a modificare tutti i parametri dal HMI , io ho a disposizione un KTP 1000 .quindi sono a cavallo per riuscire a far un buon lavoro..certo che richiede un ottima conoscenza del linguaggio AWL. Ma meglio così imparo . Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 3 maggio 2014 Segnala Share Inserita: 3 maggio 2014 .... veramente mi aspettavo che prendessi spunto dal codice postato per crearti I tuoi blocchi e siccome non si capisce mai tutto, ero in attesa di domande, e da quelle capire anche il tuo livello di preparazione attuale. pigroplc Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 3 maggio 2014 Autore Segnala Share Inserita: 3 maggio 2014 per esempio io non so ancora cosa serve sfc20 block_move...ho visto che nel tuo programma l'hai usato, ho visto anche un largo utilizzo di puntatori e registri AR tutte cose che mi mettono in crisi in questo momento. e che sto cercando di capire ( visto la tua grande esperienza in questo campo credo che sia il massimo come spunto per me ) e voglio capirlo fino infondo, ma una cosa che non mi è proprio chiara , volendo riesco modificare i parametri di frequenza?. perche leggendo la guida del AW-DB non riesco trovare questi dati all'interno del blocco Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 5 maggio 2014 Segnala Share Inserita: 5 maggio 2014 SFC20 trovi le spiegazioni nella guida in linea di step 7, consiglio sempre di fare delle prove per impossessarsi della completa comprensione. I parametri della frequenza e altri li trovi manipolati nel thread 60 dove ti ho allegato la FC16. Da li capisci che vai a interagire dalla DBB196 per qualche byte. praticamente tutti I parametri (dati macchina) che fanno parte della parametrizzazione li puoi leggere o scrivere semplicemente compilando quei byte. Consiglio di cercare di capire la dinamica e provare da una tabella di variabili a leggere e scrivere un parametro, quindi provare la FC. pigroplc Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 13 maggio 2014 Autore Segnala Share Inserita: 13 maggio 2014 ciao pigroplc la mia conoscenza sui puntatori è leggermente migliorata grazie al forum , cosi ho provato imbattermi nel primo codice che gestisce i parametri del fm tramite wincc. L #ACHSENNUMMER; // Range control L 0; ==I ; BEB ; L #ACHSENNUMMER; L 2; +I ; T #DB_AW; // Define the DB_AW number AUF DB [#DB_AW]; // Open DB_AW non capisco questa parte, praticamente se il numero di asse è 0 finisce la funzione, poi carica semprè il numero di asse e lo somma a 2 , questo non riesco capirlo, forse assegnavi i blocchi dati in maniera particolare? Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 14 maggio 2014 Segnala Share Inserita: 14 maggio 2014 praticamente assegnavo la DB di interfaccia (anwender bausteine) in modo automatico: asse 1 = DB3 asse 2 = DB4 ecc. la cosa è ininfluente se si tratta di un asse solo, se invece si sviluppa una macchina con 50 assi la cosa è utile. pigroplc. Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 15 maggio 2014 Autore Segnala Share Inserita: 15 maggio 2014 (modificato) capito davvero interessante, un po alla volta lo sto capendo, devo dire che il metodo di cambiare i parametri da HMI è veramente bello , ma per gestire i parametri dei 50 assi su wincc creavi una pagina unica e poi in base a l'asse scelto cambiavi solo i dati di scrittura? sono andato avanti nella comprensione del codice sono arrivato a una cosa che non mi spiego (riguardante un parametro) ecco la foto: il byte 198 c'è scritto che indica la quantità , i numero di dati macchina seguenti, non riesco capire a cosa si intende..non sarò limitato a 5 dati macchina massimo? grazie per ora, e grazie della pazienza. ciao Modificato: 15 maggio 2014 da coquinati Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 16 maggio 2014 Segnala Share Inserita: 16 maggio 2014 L'ultima volta che ci ho messo le mani era ottobre del 2000 quindi ho perlomeno dovuto guardare il codice che avevo scritto: praticamente in un colpo solo si possono leggere 5 dati macchina in sequenza. Infatti se guardi nel codice al termine della prima lettura (dal dato macchina 5 per 5 dati consecutivi) increment il byte 197 di 5 e rifaccio la stessa operazione fino al termine dei dati macchina (70 nella FM453 se non erro, nella 353 forse si interrompe prima o mette tutti zero) dai che al termine di questo training hai la fila di quelli che ti assumono.......... pigroplc Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 19 maggio 2014 Autore Segnala Share Inserita: 19 maggio 2014 dai che al termine di questo training hai la fila di quelli che ti assumono.......... magari sarebbe un grande sogno realizzato se mi concedi un ultima domanda te ne faccio una,poi prometto che fino che non capisco di testa mia non chiedo più niente. START_READ_FM : BOOL ; //START_READ_FM STEP_1_READ : BOOL ; //STEP_1_READ STEP_2_READ : BOOL ; //STEP_2_READ STEP_3_READ : BOOL ; //STEP_3_READ START_WRITE_FM : BOOL ; //START_WRITE_FM STEP_1_WRITE : BOOL ; //STEP_1_WRITE STEP_2_WRITE : BOOL ; //STEP_2_WRITE STEP_3_WRITE : BOOL ; //STEP_3_WRITE STEP_4_WRITE : BOOL ; //STEP_4_WRITE questi merker sono delle sicurezze che hai messo te? nel senso che non sono obbligato a metterli per riuscire a modificare i dati anche perchè non li vedo intromettersi nel blocco dati , grazie e scusa del disturbo Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 19 maggio 2014 Segnala Share Inserita: 19 maggio 2014 se mi concedi un ultima domanda te ne faccio una,poi prometto che fino che non capisco di testa mia non chiedo più niente Non ti preoccupare, chi dispensa consigli in questo forum penso lo faccia per il puro piacere di condividere ciò che si è imparato col tempo (almeno per me è così). Quello che in genere si detesta sono l'arroganza di chi chiede senza magari dare dei dati, il menefreghismo di chi non restituisce una informazione di esito delle prove ecc. Ritieniti autorizzato a chiedere quindi, sarà un piacere per me darti le informazioni richieste. Ovviamente le domande devono dimostrare un effettivo interesse e studio, come del resto sembri fare. Ritorno quindi alla spiegazione e parto da un passo indietro: la garanzia di una esecuzione sequenziale dei comandi viene fatta in molteplici modi: con un puntatore del tipo istruzione CASE, con dei flag che si settano per resettarsi poi alla fine, con dei flag che si settano in sostituzione l'uno all'altro ecc. Nel codice in questione avevo bisogno di chiarire univocamente il passo e semplicemente interbloccare altre operazioni (tieni presente che era fatto per moooolti assi e c'erano esigenze particolari). Infatti devi dichiarare dei flag LIBERI che non vai a sovrascrivere. In rete trovi poi tanti modi per fare una catena sequenziale, non ultimo è S7-GRAPH, qui si entra nelle preferenze personali che io preferisco evitare. pigroplc 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