massimo1234 Inserito: 9 maggio 2017 Segnala Share Inserito: 9 maggio 2017 Ciao sono nuovo del forum ho fatto un programma come autodidatta dove ho usato una cpu 313c a questa ho creato dei temporizzatori e ho collegato delle pt100 per leggere delle temperature la mia domanda era come posso collegare un pannello ktp600 per visualizzare le temperature e impostare i temporizzatori come dovrei procedere? il programma sul plc l ho fatto in kop senza utilizzare fb,db o altro solo in fc grazie Link al commento Condividi su altri siti More sharing options...
odx Inserita: 9 maggio 2017 Segnala Share Inserita: 9 maggio 2017 Come lo programmi il pannello ? Tia o WInCC Flexible ? Non importa se hai usato solo merker, va bene uguale per imparare. Devi creare il collegamento tra il tuo plc e il pannello in WinCC. Sia che lo metti in Ethernet, sia che usi la vecchia MPI. In pratica devi dirgli al pannello dove e come comunicare col plc e poi abbini le variabili che crei sul pannello, ai merker del plc collegato. Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 9 maggio 2017 Autore Segnala Share Inserita: 9 maggio 2017 Quello che mi è sconosciuto abbinare le variabili sul pannello per esempio volevo cambiare da pannello i settaggi di un temporizzatore o di una soglia di temperatura come dovrei fare come si fa a creare delle variabili sul pannello ed abbinarle uso wincc flexible Link al commento Condividi su altri siti More sharing options...
odx Inserita: 9 maggio 2017 Segnala Share Inserita: 9 maggio 2017 Non lo uso più molto, ma nella finestra PROGETTO , praticamente la finestra verticale di sinistra, hai la sottocartella COMUNICAZIONE ( Sta sotto a PAGINE ) Li crei il collegamento al tuo PLC Poi nella cartella variabili inserisci il nome della variabile, il collegamento che hai creato, il tipo di dato, il simbolo che vuoi dargli e il merker equivalente sul PLC Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 10 maggio 2017 Autore Segnala Share Inserita: 10 maggio 2017 Ciao ho fatto esattamente come mi hai detto si ho creato delle variabili e le ho abbinate volevo solo sapere se posso comandare direttamente un uscita con un pulsante sul pannello o devo creare un merker per poi attivarlo e comandare l uscita perché ho provato direttamente a comandare l uscita cioè ad abbinare il pulsante sull uscita ma non me la fa salire grazie Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 10 maggio 2017 Autore Segnala Share Inserita: 10 maggio 2017 Ciao ho fatto esattamente come mi hai detto si ho creato delle variabili e le ho abbinate volevo solo sapere se posso comandare direttamente un uscita con un pulsante sul pannello o devo creare un merkel per poi attivarlo e comandare l uscita perché ho provato direttamente a comandare l uscita cioè ad abbinare il pulsante sull uscita ma non me la fa salire poi un altra precisazione per sincronizzare l orario con la cpu come devo fare ? grazie Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 11 maggio 2017 Autore Segnala Share Inserita: 11 maggio 2017 Non mi comanda le uscite o ingressi sul plc metto boleana ma non mi fa impostare il bit di comando 1 nell evento pulsante invece se imposto tag come byte sull evento mi fa mettere bit 1 come comando pressione pulsante ma però mi fa salire l intero byte ? le letture analogiche delle temperature le leggo ho un plc 313c Link al commento Condividi su altri siti More sharing options...
odx Inserita: 11 maggio 2017 Segnala Share Inserita: 11 maggio 2017 Sul comandare direttamente un'uscita da HMI non so risponderti e purtroppo non ho hw per testarlo, ma gli ingressi sicuramente non li comandi in nessun modo nemmeno da pc. Ti posso dire che solitamente non si fa ( almeno io non l'ho davvero mai fatto ) un comando diretto da pulsante HMI a uscita fisica ( A x.x ) di un PLC, ma si preferisce appoggiare a merker. Questo per permettere di comandare la stessa uscita in altre casistiche, senza doverla scrivere due volte nel programma e rischiare di creare non pochi problemi se sbagli qualcosa nel ciclo del plc. Solitamente le uscite si vanno a scrivere a fine ciclo plc, così sei certo che le scrivi una volta sola e non hai problemi, andando ad abbinare i merker ai relativi A x.x ( Edito .. do per scontato che ovviamente anche il singolo merker lo scrivi una volta sola, e quindi usi più merker in giro per poi metterli in parallelo per attivare l'uscita, in modo da sapere chi e cosa la sta tirando su ... ) Se metti tag Byte e poi bit 1, ti porta a 1 il secondo bit del byte ... 0000.0010 se non erro. Verifica solamente se il pulsante del pannello ti setta a 1 il bit/byte oppure fa solo una transizione su pressione, cioè quando rilasci il pulsante torna a zero, o fa uno scambio ad ogni pressione. Mi pare strano non si possa settare una variabile bool con un pulsante .... Consiglio ... visto che stai imparando, sforzati ad imparare ad usare le DB da subito e tenere i merker solo per casi particolari. Sembra una cosa complicatissima all'inizio, ma in realtà è davvero una stupidata e ti tiene organizzato meglio il lavoro, quando salirà di complessità Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 11 maggio 2017 Autore Segnala Share Inserita: 11 maggio 2017 Ho provato ad inserire un merker nel programma che poi mi fa salire l uscita corrispondente da pannello ho messo nella tag il merker byte e byte nella variabile di comando metto 1 quando il pulsante è premuto ma il merker nella simulazione va a -1 quando il bit di comando è 1 e dopo 0 quando metto il bit di comando a 0 ma non mi fa salire il merker ? Link al commento Condividi su altri siti More sharing options...
odx Inserita: 11 maggio 2017 Segnala Share Inserita: 11 maggio 2017 Non capisco il simulatore a -1 ... non avendolo mai usato La variabile che setti ( byte ) è abbinata a un MB xx sul plc ? Se si, dovrebbe alzarti sul plc il M xx.y , dove y è il bit che hai scelto di alzare nel tuo byte Dato che vedi a pannello le temperature in ingresso al plc, do per scontato che il collegamento sia ok al 100% Verifica anche i cicli, ovvero ogni quanto scambi quella variabile tra plc e hmi Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 11 maggio 2017 Autore Segnala Share Inserita: 11 maggio 2017 quando imposto i settaggi delle variabili per esempio avevo settato la tag byte e dopo avevo messo il nome di un uscita esempio q124.5 sull evento del pulsante riuscivo a mettere su pressione il bit 1 nella simulazione io vedevo andare a 1 la variabile e a 0 come da comando settato a destra del simulatore wincc cosi il pannello riusciva con la pressione del pulsante a comandare direttamente l uscita byte quando invece configuro con il merker in simulazione vedo -1 e 0 a comando e non mi cambia il merker Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 11 maggio 2017 Autore Segnala Share Inserita: 11 maggio 2017 Faccio delle prove ok ti ringrazzio dell aiuto Link al commento Condividi su altri siti More sharing options...
odx Inserita: 11 maggio 2017 Segnala Share Inserita: 11 maggio 2017 Q124.5 è IL BIT 6 del Byte Q124 Altra cosa, abituati alla simbologia tedesca ( settala nel programma ) se vuoi usare Siemens. E (eingang) A (ausgang) li troverai molto più sovente Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 11 maggio 2017 Autore Segnala Share Inserita: 11 maggio 2017 ora ti mando un po di immagini per capire meglio la prima foto sono le variabili booleane m40.0 e m20.0 Questa invece i settaggi dei due bottoni apri e chiudi Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 11 maggio 2017 Autore Segnala Share Inserita: 11 maggio 2017 Questo è il simulatore con il -1 che ti dicevo Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 11 maggio 2017 Autore Segnala Share Inserita: 11 maggio 2017 Sopra metto set value 1 e premo il bottone apri immediatamente il current val. va a -1 e' giusto ? O deve andare semplicemente a 1 io ho messo setbit e reset bit invece se mettevo setbitwhilekeypressed non mi faceva mettere il bit a 1 se invece metto byte nel tag mi fa inserire set bit e io lo posso mettere a 1 nella finestra simulatore vedo maxvalue 255 e minvalue 0 quando setto 1 e comando con il pulsante ora si che vedo il valore corrente 1 e dopo 0 Link al commento Condividi su altri siti More sharing options...
odx Inserita: 12 maggio 2017 Segnala Share Inserita: 12 maggio 2017 da 0 a 255 corrisponde ai valori decimali di un singolo Byte .... 8 bit .... 255 massimo valore decimale ... FF max esadecimale Se nel set bit del tag Byte vai a settare il bit 0, ti scrive 1 ... se setti il bit 1 ti scriverà 2 ... se setti il bit 3 scriverà 4 ..... 8 ... 16..... 32... 64...128. Quello che leggi è la conversione decimale del Byte .... ma a te serve leggere il singolo bit nel plc poi... cosa fattibilissima. Davvero non so dirti sul simulatore perché scrive -1 se metti il singolo merker bit. Siccome Siemens fa pagare le TAG usate. era buona norma usare word o dword per settare i vari bit di un impianto, in modo da risparmiare le PowerTag di licenza. Quindi se impari a settare i singoli bit delle word/byte/dword e poi a smistarteli nel plc, risparmi soldi in progetti veri. Anche se ora mi han detto che gli ultimi TIA licenziano la singola variabile visualizzata a video e quindi il giochetto non vale più sui sistemi nuovi. Per varie ragioni il mio WinCC è licenziato a 65535 e quindi non ho verificato la cosa, per un po' sono ancora coperto Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 12 maggio 2017 Autore Segnala Share Inserita: 12 maggio 2017 Sopra metto set value 1 e premo il bottone apri immediatamente il current val. va a -1 non mi fa caricare altre immagini Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 12 maggio 2017 Autore Segnala Share Inserita: 12 maggio 2017 Ok faccio cosi uso i byte grazie mille per quanto riguarda la sincronizzazione orologio il support Siemens mi dice di creane una db1 dati time vado sul progetto e faccio inserisci blocco dati e lo chiamo db1 ? o c è un blocco già fatto di time dalla Siemens e devo solo inserirlo dalla biblioteca? Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 12 maggio 2017 Autore Segnala Share Inserita: 12 maggio 2017 come si caricano i blocchi della libreria Siemens gia fatti non riesco ad accedere Link al commento Condividi su altri siti More sharing options...
odx Inserita: 12 maggio 2017 Segnala Share Inserita: 12 maggio 2017 Ti copio un sorgente utilizzato dai miei "antenati" .... ok sono partito con S5 a lavorare, ma oramai S7 lo vedo vecchio Se ti crei il file e ti importi il sorgente, te li trovi come FC 2 e DB 2 già fatti, poi guarda se riesci da solo a capire come settare la data alzando il bit giusto Spero che funziona, ho preso un progetto che sta girando, ma non ho testato ... se usi S7 ... se usi TIA ti giro quello che sto usando e so per certo che va DATA_BLOCK DB 2 AUTHOR : Pxx FAMILY : Dati_D_T NAME : Pxxx VERSION : 3.0 STRUCT Sistema_Anno_BCD : BYTE ; //ANNO di sistema - BCD Sistema_Mese_BCD : BYTE ; //MESE di sistema - BCD Sistema_Giorno_BCD : BYTE ; //GIORNO di sistema - BCD Sistema_Ora_BCD : BYTE ; //ORA di sistema - BCD Sistema_Minuti_BCD : BYTE ; //MINUTI di sistema - BCD Sistema_Secondi_BCD : BYTE ; //SECONDI di sistema - BCD DB_VAR_6 : BYTE ; DB_VAR_7 : BYTE ; Imposta_Anno_BCD : BYTE ; //ANNO impostazione - BCD Imposta_Mese_BCD : BYTE ; //MESE impostazione - BCD Imposta_Giorno_BCD : BYTE ; //GIORNO impostazione - BCD Imposta_Ora_BCD : BYTE ; //ORA impostazione - BCD Imposta_Minuti_BCD : BYTE ; //MINUTI impostazione - BCD Imposta_Secondi_BCD : BYTE ; //SECONDI impostazione - BCD DB_VAR_14 : BYTE ; DB_VAR_15 : BYTE ; Sistema_Anno_Decimale : BYTE ; //ANNO di sistema - decimale Sistema_Mese_Decimale : BYTE ; //MESE di sistema - decimale Sistema_Giorno_Decimale : BYTE ; //GIORNO di sistema - decimale Sistema_Ora_Decimale : BYTE ; //ORA di sistema - decimale Sistema_Minuti_Decimale : BYTE ; //MINUTI di sistema - decimale Sistema_Secondi_Decimale : BYTE ; //SECONDI di sistema - decimale DB_VAR_22 : BYTE ; DB_VAR_23 : BYTE ; Imposta_Anno_Decimale : BYTE ; //ANNO impostazione in decimale Imposta_Mese_Decimale : BYTE ; //MESE impostazione in decimale Imposta_Giorno_Decimale : BYTE ; //GIORNO impostazione in decimale Imposta_Ora_Decimale : BYTE ; //ORA impostazione in decimale Imposta_Minuti_Decimale : BYTE ; //MINUTI impostazione in decimale Imposta_Secondi_Decimale : BYTE ; //SECONDI impostazione in decimale DB_VAR_30 : INT ; //numero giorno dell'anno DB_VAR_32 : INT ; DB_VAR_34 : INT ; DB_VAR_36 : INT ; DB_VAR_38 : INT ; Carica_Set_Data_Ora : BOOL ; //carica nuovo set data e ora Set_Data_Ora_Caricati : BOOL ; //memoria caricamento set dati e ora Fp_Caricamento_Dati : BOOL ; //Fp caricamento completato set data e ora DB_VAR_40_3 : BOOL ; DB_VAR_40_4 : BOOL ; DB_VAR_40_5 : BOOL ; DB_VAR_40_6 : BOOL ; DB_VAR_40_7 : BOOL ; END_STRUCT ; BEGIN Sistema_Anno_BCD := B#16#0; Sistema_Mese_BCD := B#16#0; Sistema_Giorno_BCD := B#16#0; Sistema_Ora_BCD := B#16#0; Sistema_Minuti_BCD := B#16#0; Sistema_Secondi_BCD := B#16#0; DB_VAR_6 := B#16#0; DB_VAR_7 := B#16#0; Imposta_Anno_BCD := B#16#0; Imposta_Mese_BCD := B#16#0; Imposta_Giorno_BCD := B#16#0; Imposta_Ora_BCD := B#16#0; Imposta_Minuti_BCD := B#16#0; Imposta_Secondi_BCD := B#16#0; DB_VAR_14 := B#16#0; DB_VAR_15 := B#16#0; Sistema_Anno_Decimale := B#16#0; Sistema_Mese_Decimale := B#16#0; Sistema_Giorno_Decimale := B#16#0; Sistema_Ora_Decimale := B#16#0; Sistema_Minuti_Decimale := B#16#0; Sistema_Secondi_Decimale := B#16#0; DB_VAR_22 := B#16#0; DB_VAR_23 := B#16#0; Imposta_Anno_Decimale := B#16#0; Imposta_Mese_Decimale := B#16#0; Imposta_Giorno_Decimale := B#16#0; Imposta_Ora_Decimale := B#16#0; Imposta_Minuti_Decimale := B#16#0; Imposta_Secondi_Decimale := B#16#0; DB_VAR_30 := 0; DB_VAR_32 := 0; DB_VAR_34 := 0; DB_VAR_36 := 0; DB_VAR_38 := 0; Carica_Set_Data_Ora := FALSE; Set_Data_Ora_Caricati := FALSE; Fp_Caricamento_Dati := FALSE; DB_VAR_40_3 := FALSE; DB_VAR_40_4 := FALSE; DB_VAR_40_5 := FALSE; DB_VAR_40_6 := FALSE; DB_VAR_40_7 := FALSE; END_DATA_BLOCK FUNCTION FC 2 : VOID TITLE =Gestione Date e Time AUTHOR : Pinc FAMILY : DataTime NAME : Pincetti VERSION : 3.0 VAR_TEMP SET_DATA_ORA : DATE_AND_TIME ; VALORE_RITORNO : INT ; AUX_DATE_HEURE : DATE_AND_TIME ; AUX_STATUS : INT ; BCD_GIO_ANNO : INT ; END_VAR BEGIN NETWORK TITLE =LETTURA DATA E ORA DI SISTEMA (PLC) CALL SFC 1 ( RET_VAL := #AUX_STATUS, CDT := #AUX_DATE_HEURE); L LB 10; T DB2.DBB 0; // anno di sistema in BCD L LB 11; T DB2.DBB 1; // mese di sistema in BCD L LB 12; T DB2.DBB 2; // giorno di sistema in BCD L LB 13; T DB2.DBB 3; // ora di sistema in BCD L LB 14; T DB2.DBB 4; // minuti di sistema in BCD L LB 15; T DB2.DBB 5; // secondi di sistme in BCD NETWORK TITLE =GENERAZIONE DATA E ORA IN DECIMALE L DB2.DBB 0; // anno di sistema in BCD BTI ; T DB2.DBB 16; // anno numero intero L DB2.DBB 1; // mese di sistema in BCD BTI ; T DB2.DBB 17; // mese numero intero L DB2.DBB 2; // giorno di sistema in BCD BTI ; T DB2.DBB 18; // giorni numero intero L DB2.DBB 3; // ora di sistema in BCD BTI ; T DB2.DBB 19; // ora numero intero L DB2.DBB 4; // minuti di sistema in BCD BTI ; T DB2.DBB 20; // minuti numero intero L DB2.DBB 5; // secondi di sistme in BCD BTI ; T DB2.DBB 21; // secondi numero intero NETWORK TITLE =Compone ora e minuti in virgola mobile L DB2.DBB 19; // ora di sistema ITD ; DTR ; T DB3.DBD 52; // ora in vigola mobile L DB2.DBB 20; // minuti ITD ; DTR ; L 1.000000e+002; /R ; L 6.000000e-001; /R ; T DB3.DBD 56; // minuti in decimali in vigola mobile L DB3.DBD 52; // ora in virgola mobile L DB3.DBD 56; // minuti in decimali in vigola mobile +R ; T DB3.DBD 64; // ora+minutidi sistema in decimale in vigola mobile NETWORK TITLE =giorno dell'anno CALL FC 230 ( ANNO := DB2.DBB 0,// anno di sistema in BCD MESE := DB2.DBB 1,// mese di sistema in BCD GIORNO := DB2.DBB 2,// giorno di sistema in BCD JUL_DAY := DB2.DBW 30);// giorno anno L DB2.DBW 30; // numero del giorno dell'anni in numero intero ITD ; DTR ; T DB3.DBD 36; // numero del giorno dell'anno in numero in virgola mobile NETWORK TITLE =converti impostazioni da intero a BCD L DB2.DBB 24; // imposta anno ITB ; T DB2.DBB 8; // imposta anno in BCD L DB2.DBB 25; // impista mese ITB ; T DB2.DBB 9; // imposta mese in BCD L DB2.DBB 26; // imposta giorno ITB ; T DB2.DBB 10; // imposta giorno in BCD L DB2.DBB 27; // imposta ora ITB ; T DB2.DBB 11; // imposta ora in BCD L DB2.DBB 28; // impista minuti ITB ; T DB2.DBB 12; // imposta minuti in BCD L DB2.DBB 29; // imposta secondi ITB ; T DB2.DBB 13; // imposta secondi in BCD NETWORK TITLE =carica nuovo set data e ora U DB2.DBX 40.1; U DB2.DBX 40.0; FP DB2.DBX 40.2; R DB2.DBX 40.1; // reset memoria di avvenuto caricamento set data e ora U DB2.DBX 40.0; // bit inizio caricamento set data e ora UN DB2.DBX 40.1; // bit memoria di avvenuto caricamento set data e ora SPBN M001; L DB2.DBB 8; // imposta mese in BCD T LB 0; L DB2.DBB 9; // imposta giorno in BCD T LB 1; L DB2.DBB 10; // imposta ora in BCD T LB 2; L DB2.DBB 11; // imposta minuti in BCD T LB 3; L DB2.DBB 12; // imposta minuti in BCD T LB 4; L DB2.DBB 13; // imposta secondi in BCD T LB 5; CALL SFC 0 ( PDT := #SET_DATA_ORA, RET_VAL := #VALORE_RITORNO); M001: U DB2.DBX 40.0; S DB2.DBX 40.1; R DB2.DBX 40.0; END_FUNCTION Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 12 maggio 2017 Autore Segnala Share Inserita: 12 maggio 2017 Io volevo seguire questa procedura ma non riesco https://support.industry.siemens.com/cs/document/24104104/how-do-you-synchronize-the-date-and-time-between-an-operator-panel-and-an-s7-300-s7-400-controller-with-wincc-flexible-?dti=0&lc=en-WW nel blocco dati db1 che inserisco io non e' chiaro come devo inserire i dt dati? Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 12 maggio 2017 Autore Segnala Share Inserita: 12 maggio 2017 Io volevo seguire questa procedura ma non riesco https://support.industry.siemens.com/cs/document/24104104/how-do-you-synchronize-the-date-and-time-between-an-operator-panel-and-an-s7-300-s7-400-controller-with-wincc-flexible-?dti=0&lc=en-WW Non riesco a creare questo Link al commento Condividi su altri siti More sharing options...
odx Inserita: 12 maggio 2017 Segnala Share Inserita: 12 maggio 2017 In che senso ? Non riesci a scriverla in quel modo ? Sbagli qualcosa ... Creato e generato il sorgente: DATA_BLOCK DB 1 TITLE = VERSION : 0.1 STRUCT DB_VAR : STRUCT DATE_TIME : DATE_AND_TIME ; RESERVE : ARRAY [0 .. 3 ] OF BYTE ; END_STRUCT ; END_STRUCT ; BEGIN DB_VAR.DATE_TIME := DT#90-1-1-0:0:0.000; DB_VAR.RESERVE[0] := B#16#0; DB_VAR.RESERVE[1] := B#16#0; DB_VAR.RESERVE[2] := B#16#0; DB_VAR.RESERVE[3] := B#16#0; END_DATA_BLOCK Link al commento Condividi su altri siti More sharing options...
massimo1234 Inserita: 12 maggio 2017 Autore Segnala Share Inserita: 12 maggio 2017 Questo invece cosa scrivo in cdt selezio questa ob dalla libreria devo essere in ob1 ? non capisco il secondo passaggio della guida questo come lo creo 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