Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumPer farlo devi utilizzare le macro. Per il layout ad esempio puoi partire da una delle tastiere standard del programma (Esempio quella in pagina 50), selezioni e copi tutti gli oggetti e li incolli in una tua pagina (Esempio pagina 10) (Screenshot).
La tastiera è composta da un disegno di sfondo e da oggetti pulsanti, sostituisci tutti i pulsanti con oggetti Imposta Bit. Ecco l’esempio del tasto 7 (Screenshot). Come vedi ho scelto di settare sui vari tasti un bit diverso tasto per tasto (LB 7 per il tasto 7). Sulla pressione tasto eseguo la macro che controllerà quale bit è attivo determinando quale tasto è premuto.
Ecco la parte di macro che gestisce il data entry sul display, ad ogni tasto premuto il numero relativo è aggiunto al valore del display.
macro_command main()
int i, KeyStatus, Displayfor i=0 to 10
GetData(KeyStatus, “Local HMI”, LB, i, 1)if (KeyStatus == true) then
KeyStatus=false
SetData(KeyStatus, “Local HMI”, LB, i, 1)
GetData(Display, “Local HMI”, LW, 1, 1)
Display=(Display*10)+i
SetData(Display, “Local HMI”, LW, 1, 1)
end if
next
end macro_commandQuesta è una mia scelta operativa, ci possono essere altre strade per raggiungere l’obbiettivo, naturalmente ho solo dato una traccia tutto il lavoro è da portare avanti da te. Ma come vedi ti basterà disegnare altri pulsanti sulla tastiera ed abbinare ad essi le relative funzionalità nella macro di gestione.
Sergio Bertana
Amministratore del forumPer leggere variabili da altri PLC devi utilizzare il FB ModbsMaster che è utilizzabile su uno stream di comunicazione in questo topic trovi un esempio di comunicazione in RS485 tra un master e molti slaves. Purtroppo però allo stato attuale del sistema operativo è possibile aprire connessioni TCP/IP solo in modalità server e non è possibile aprire connessioni in modalità client. Quindi non è possibile aprire uno stream di comunicazione TCP/IP da collegare alla FB ModbusMaster.
Per il dialogo tra diversi sistemi SlimLine in TCP/IP è disponibile il FB UDPDataTxfer (Topic).
Sergio Bertana
Amministratore del forumLa gestione delle connessioni al web server è gestita dal sistema operativo, e purtroppo non vi è modo di sapere l’indirizzo IP del client collegato.
Sergio Bertana
Amministratore del forumTi ricordo cher il Modbus TCP/IP slave è nativo nei moduli CPU SlimLine, sono gestibili fino a 3 connessioni sulla porta standard 502. Indirizzo di nodo di default è 1. Dalla pagina web di configurazione è possibile modificare questi parametri (Screenshot).
Se invece l’esigenza è di sviluppare un tuo protocollo di comunicazione TCP/IP puoi dare una occhiata a questo topic. Va da sè che utilizzando il programma postato nel topic, una volta che hai il FILEP del socket TCP/IP puoi inserire nel programma il FB ModbusSlave ed utilizzare il FB in alternativa alla gestione Modbus nativa.
Sergio Bertana
Amministratore del forumEsistono diverse possibilità per soddisfare la tua esigenza, vediamo alcuni suggerimenti.
Sistema programmabile SlimLine e/o NetlogIII
Questi prodotti hanno un web server integrato con cui è possibile visualizzare pagine web dinamiche (Topic). Tramite una rete RS485 è possibile acquisire in Modbus RTU i valori di peso dagli amplificatori di cella di carico (Topic) che saranno visualizzati nella pagina Web. Aggiungendo al modulo CPU uno o più moduli espansione I/O analogico è possibile acquisire il segnale di peso direttamente dalla cella di carico eliminando il costo dell’amplificatore (Topic).Terminale operatore
Tramite una rete RS485 è possibile acquisire in Modbus RTU i valori di peso dagli amplificatori di cella di carico e visualizzarli sul terminale. Il terminale è visualizzabile da Web browser (Topic) e/o da Smartphone (Topic). E’ anche possibile utilizzare il modello Cloud HMI cMT-SVR direttamente visualizzabile tramite apposita App.Ora tu parli di poterli visualizzare da remoto, bisogna capire come tu puoi collegare i dispositivi ad Internet, se disponi di un IP pubblico (Statico o no), puoi configurare il Port Forwarding/NAT sul router per reindirizzare l’IP pubblico verso l’IP privato del dispositivo.
Se non disponi di un IP pubblico devi realizzare una VPN o meglio utilizzare l’Easy Access 2.0 sul terminale operatore. In alternativa puoi pensare a soluzioni basate sul cloud (Topic).
Sergio Bertana
Amministratore del forumCome tutti i convertitori Ethernet-Seriale, anche l’ATC-1000 esegue la conversione pura dei dati ricevuti dalla connessione Ethernet verso la porta seriale e viceversa. A differenza dei gateway Modbus che eseguono la conversione dei protocolli, se sulla connessione Ethernet arriva un frame Modbus TCP/IP il frame viene passato esattamente uguale alla porta seriale e viceversa.
Quindi per utilizzarlo sui tuoi azionamenti è obbligatorio che vengano eseguite modifiche sulla gestione del protocollo lato RS485. Il protocollo Modbus TC/IP in realtà incapsula il protocollo RTU, vengono aggiunti in testa 6 bytes e viene eliminato il campo CRC (2 bytes), vedi manuale.
Detto questo, è possibile realizzare in uscita dalla seriale del convertitore una connessione RS485 in multidrop tra diversi azionamenti, ma in questo caso chiaramente dovrai interrogare gli azionamenti uno ad uno sulla stessa connessione TCP/IP senza alcun vantaggio di tempi.
Diverso invece se equipaggi ogni azionamento con un converitore Ethernet-Seriale, in questo caso il PLC master potrà gestire tante connessioni TCP/IP con i vari convertitori, ed in questo caso le comunicazioni saranno in parallelo guadagnando sui tempi di comunicazione totali.
Gennaio 20, 2015 alle 1:14 pm in risposta a: Compatibilità I/O Controller II con versioni precedenti #38670Sergio Bertana
Amministratore del forumHo sentito il fornitore al riguardo che assicura la completa intercambiabilità dell’I/O Controller II con il modello precedente.
Si scusano per le informazioni errate riportate sul manuale e ricordano di fare riferimento sempre alla tabella Technical specifications, provvedono subito a correggere i manuali.
Quindi è possibile intercambiare l’I/O Controller II con il modello precedente senza preoccuparsi della compatibilità.
Sergio Bertana
Amministratore del forumSe guardi la nota il costrutto esatto per riferirsi alla flag di reset SFC della Action è [Programma]_[Action]_RESET_SFC. Quindi nel tuo esempio sarà Main_subSFC_RESET_SFC.
Ho modificato l’esempio di prima aggiungendo una Action in SFC (ABlink) ed ho gestito il comando di reset del SFC della Action sia dal programma SFC principale (Screenshot), allego il programma sorgente.
Il programma esegue 10 lampeggi della uscita e poi resta in attesa per 5 secondi con l’uscita attiva, prima di riprendere il ciclo dall’inizio. Con un ingresso digitale Di00CPU è possibile resettare in qualsiasi momento l’esecuzione del ciclo.
Gennaio 19, 2015 alle 3:23 pm in risposta a: Monitoraggio temperatura e consumi di punti vendita #38667Sergio Bertana
Amministratore del forumContinuo la descrizione della applicazione dando indicazione sul rilevamento dei consumi elettrici. Come visto già nei vari links del post precedente essendo il sistema programmabile è aperto a varie soluzioni per il monitoraggio dei consumi elettrici.
La soluzione più naturale è quella di interfacciare il sistema con l’analizzatore da quadro che solitamente è già presente nel quadro di distribuzione. Nel caso non fosse presente si può montare un qualsiasi analizzatore commerciale provvisto di porta seriale con protocollo Modbus RTU, cito ad esempio il modello Smart più della Ducati Energia (Vedi datasheet), il modello Nano della Frer (Vedi datasheet) o ancora il modello ADR-D230 della Vemer (Vedi datasheet).
Se ci si vuole limitare al solo controllo del consumo è possibile utilizzare dei contatori di energia da porre in cascata al contatore generale magari suddividendo le varie utenze. Esistono contatori con uscita Modbus e con uscita ad impulsi (Vedi datasheet).
Esiste anche la possibilità di utilizzare un modulo di conversione da impulso ottico a segnale (Vedi datasheet) da applicare direttamente al contatore Enel esistente che permette tramite due ingressi digitali del modulo SlimLine di acquisire i consumi.
Tutte queste soluzioni utilizzano prodotti facilmente reperibili sul mercato, alcuni di essi sono forniti da aziende con cui collaboriamo e di cui possiamo su richiesta farne fornitura.
Sergio Bertana
Amministratore del forumIl manuale a cui faccio riferimento è il Manuale programmazione IEC61131-3 che si trova nel pacchetto di installazione di LogicLab.Il topic è riferito ai sistemi programmabili con LogicLab, la tecnica AJAX è sviluppata utilizzando il Javascript all’interno di pagine HTML e si appoggia al server HTTP standard dei sistemi SlimLine e NetlogIII. Abbiamo un modulo SlimLine CPU CODESYS IEC61131-3 che si programma in CODESYS.
Gennaio 16, 2015 alle 3:38 pm in risposta a: Invio di stringhe con valore variabile su socket TCP #38664Sergio Bertana
Amministratore del forumNon ho l’ultimo tuo programma, ma il perchè il quell’esempio ST viene ignorato l’ingresso l’ho spiegato nello screnshot, entri nella IF dove leggi l’ingresso solo sul fronte di connessione del socket poi non entri più.
In pratica tutto quello che è scritto dentro la IF non viene mai eseguito IF vuol dire se… se è vera la condizione THEN allora esegui…
IF (SktLsn.Connect <> WMsgPulse) THEN è vera solo sul fronte di connessione perchè dopo
WMsgPulse:=SktLsn.Connect; copia lo stato della connessione sul BOOL WMsgPulseE tu copiavi l’ingresso proprio dentro l’IF quindi non lo copiavi mai… o meglio lo avresti copiato una sola volta sulla connessione del socket.
Sergio Bertana
Amministratore del forumPer poter visualizzare in forma grafica 2 variabili combinate su unico grafico bisogna utilizzare l’oggetto Plot XY (Estratto manuale) dove il pannello legge da una tabella di dati il grafico da realizzare, la tabella si può leggere da registri del PLC o da registri del pannello (Screenshot).
Sergio Bertana
Amministratore del forumI dispositivi STE come tutte le soluzioni per monitoraggio IP della HWgroup supportano il protocollo SNMP, sono in grado sia di rispondere ad interrogazione SNMP che di inviare TRAP su condizioni di allarme.
Presso il fornitore è disponibile un prodotto On-Line per i test (Segui il link dal ns sito), dal menù system della pagina web del prodotto è possibile scaricare la SNMP MIB table con tutti gli OID delle grandezze rilevabili.
Nel Vs caso disponete gìà di un software di monitoraggio, ma ricordo che HWgroup rende disponibile il software di monitoraggio PDMS (Gratuito fino a 3 sensori).
Gennaio 16, 2015 alle 10:57 am in risposta a: Invio di stringhe con valore variabile su socket TCP #38660Sergio Bertana
Amministratore del forumEcco lo screenshot del tuo programma (Tanti piccoli errori da correggere e/o migliorie da consigliarti).
Come vedi parlo di effetto -]P[- da creare in ST, nel linguaggio LD basta mettere il simbolo in ST devi creare l’effetto transizione per poter gestire il fronte di salita e/o discesa ecco come fare. AuxPls è una variabile BOOL locale nel tuo programma.
IF (Ingresso <> AuxPls) THEN
AuxPls:=Ingresso; (* Auxiliary pulse *)IF (Ingresso) THEN
Tutto quello scritto qui avviene sul fronte di attivazione -]P[-
END_IF;IF NOT(Ingresso) THEN
Tutto quello scritto qui avviene sul fronte di disattivazione -]N[-
END_IF;
END_IF;Nel tuo progetto hai anche scelto di eseguire il download del codice sorgente ad ogni download e questo rallenta il download ad ogni modifica di programma, leggi attentamente questo topic.
Gennaio 16, 2015 alle 9:53 am in risposta a: Invio di stringhe con valore variabile su socket TCP #38658Sergio Bertana
Amministratore del forumMi parli di array in cui mappi gli ingressi digitali da programma LD e sinceramente non ho ben chiaro a cosa ti riferisci in questo topic si parla di array di I/O digitali.
Però vista la complessità della domanda forse è meglio se invii alla nostra eMail di supporto il programma così da poterlo verificare direttamente.
-
AutorePost