Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumIntanto ti consiglio di utilizzare il nuovo blocco funzione ModbusMaster nel forum si trovano moltissimi post che trattano il protocollo Modbus (Vedi esempio questo topic).
Ricordati poi l’offset 1, il blocco funzione in accordo alle specifiche Modbus sottrae 1 all’indirizzo, se il dispositivo che viene interrogato non somma 1 hai un errore di indirizzamento. Quindi prova a sommare 1 all’indirizzo che vuoi leggere.
Attiva lo Spy e da Telnet potrai vedere sia il frame inviato che il frame ricevuto e da qui potrai capire il tipo di errore.
Sergio Bertana
Amministratore del forumIl blocco funzione ModbusMaster si trova nella libreria ePLCUtyLib_C000.pll che è fornita con l’installazione della versione 2.3.0 di LogicLab. Ti consiglio di eseguiore il download dell’ultima versione di LogicLab dal nostro sito, che è arricchito da altre nuove funzioni e blocchi funzioni.
Sergio Bertana
Amministratore del forumE’ un problema di variabili allocate in area RETAIN, problema già segnalato in questo topic.
Sergio Bertana
Amministratore del forumAggiungo listato macro eseguita ciclicamente ad ogni secondo.
macro_command main()
bool RFlag=true //Reset flag
short ABuffer //Auxiliary buffer// Alla mezanotte eseguo reboot.
GetData(ABuffer, “Local HMI”, LW, 9019, 1) //Leggo ora
if (ABuffer == 23) then
GetData(ABuffer, “Local HMI”, LW, 9018, 1) //Leggo minuti
if (ABuffer == 59) thenGetData(ABuffer, “Local HMI”, LW, 9017, 1) //Leggo secondi
if (ABuffer >= 55) then
SetData(RFlag, “Local HMI”, LB, 9048, 1) //Reboot-HMI protection
SetData(RFlag, “Local HMI”, LB, 9047, 1) //Reboot-HMI
end if
end if
end if
end macro_commandSergio Bertana
Amministratore del forumLa tecnica di effettuare un reboot del pannello ogni giorno è una tecnica che consigliamo di utilizzare sui pannelli che restano sempre accesi per evitare che si crei un overflow di allocazione memoria. Il sistema operativo del pannello è un Linux e l’applicativo come tutti i programmi continua ad allocare e disallocare memoria, può essere che in un sistema sempre acceso si esaurisca l’area di malloc generando un blocco del programma applicativo.
Come detto prima vi sono due variabili che permettono il reboot, quindi l’operazione più semplice è creare una macro (Vedi manuale macro) eseguita a tempo in cui si controlla l’orologio interno al pannello ed all’ora stabilita, solitamente la mezzanotte quando presumibilmente nesuno stà utilizzando il pannello ne forza il reboot. Ho realizzato un semplice progetto che visualiza l’orologio del pannello ed alla mezzanotte forza il reboot (Download progetto).
La tecnica è quella di controllare se l’ora è maggiore delle 23:59:55, visto che il reboot richiede circa 15 secondi, al riavvio l’ora sarà 00:00:10 quindi sicuramente minore del valore di confronto, così il prossimo reboot avverrà alla mezzanotte successiva. Tutti i terminale serie iE hanno il real time clock integrato.
Ottobre 30, 2014 alle 1:29 pm in risposta a: Come funziona il blocco funzione eTON in LogicLab #38483Sergio Bertana
Amministratore del forumNella nostra FB di eTON il valore di ET rimane settato anche al reset dell’ingresso IN. In effetti la abbiamo chiamata eTON con quella “e” che stà a significare una variante dellla TON standard. Non sò come mai ti serva azzerato il valore di ET alla discesa di IN. Ti allego un progetto (Stampa) in cui la FB non è protetta e quindi puoi agevolmente modificarla per piegarla alle tue necessità (Download progetto).
Per ottenere l’azzeramento di ET sul reset di IN devi aggiungere nel ramo della IF sul controllo di IN anche l’azzeramento di ET.
IF NOT(IN) THEN
ET:=0; (* Executing time (mS) *)
TimeBf:=SysTime; (* Time buffer *)
Q:=FALSE; (* Delayed output *)
RETURN;
END_IF;Se guardi l’FB vedrai che su riattivazione di IN ET assumerà il valore ET:=SysTime-TimeBf; ed avendo nel ramo del controllo su IN posto TimeBf:=SysTime; conteggerà il reale tempo trascorso dalla attivazione di IN.
Ottobre 29, 2014 alle 8:16 am in risposta a: Acquisizione encoder e gestione del valore di quota #38481Sergio Bertana
Amministratore del forumPartendo dall’esempio postato sopra, ho modificato il blocco funzione di calcolo quota per fare ritornare un valore DINT al posto di un UDINT, ed il gioco è fatto. Il valore Quote ritornato dal blocco funzione QuoteMng lo dovrai appoggiare in una variabile DINT allocata in memoria DB 100 per poterlo visualizzare sul pannello Weintek (Ecco la stampa del programma).
Per permettere di poter memorizzare il valore di quota allo spegnimento del sistema ho inserito nel blocco funzione il parametro IQuote. In questo modo appoggiando sull’ingresso la variabile RETAIN del valore di quota si potrà alla abilitazione del blocco funzione iniziare il conteggio quota dal valore preesistente (Download programma).
Sergio Bertana
Amministratore del forumYou don’t report how many counters that must be managed, anyway I try to suggest some possible solutions at your question.
If you need a single counter you can use the counter on the SlimLine CPU module. It’s possible to read its value on a program executed on Fast task (Standard every 1 mS, but the time can be changed to your requirements and you can set times down to 100 uS). Here the screenshot of an example program, as you can see the program execution takes 9 uS and at the maximum 19 uS (Download program).
If you need more counters and for a significantly number of applications, we can modify the static output expansion I/O module. The module is based on a FPGA logic, so it’s possible to program it by adding up to 4 counters and the logic to preset a value and manage the output according to your requirements.
Ottobre 27, 2014 alle 11:35 am in risposta a: Come funziona il blocco funzione eTON in LogicLab #38478Sergio Bertana
Amministratore del forumIl blocco funzione eTON funziona esattamente come hai detto tu, non capisco come tu lo voglia utilizzare. Ecco lo screenshot di un programma di esempio in funzione sul simulatore SimuLab (Ho catturato lo screenshot mentre il timer stava temporizzando ET=1470), allego il progetto sorgente (Download progetto).
Come funziona eTON, attivando l’ingresso IN (Sul fronte di attivazione) si azzera il valore di tempo trascorso (ET elapsed time) ed inizia il conteggio del tempo, raggiunto il valore definito in (PT preset time) l’uscita Q si attiva e rimane attiva fino alla disabilitazione dell’ingresso IN.
Se l’attivazione di IN ha una durata inferiore al valore di tempo definito in PT, il timer inizia a contare ma non si attiva l’uscita Q. Ed in ET troveremo il valore di tempo per il quale l’ingresso IN è rimasto attivo. Allego la stampa dell’estratto della normativa IEC 61131-3 che riporta il diagramma temporale di funzionamento dei tre tipi di timer previsti.
Ottobre 25, 2014 alle 7:23 am in risposta a: Come utilizzare la SDCard per il salvataggio di file di log #38477Sergio Bertana
Amministratore del forumHo ipotizzato un record di log con i dati che ti necessitano (Data/ora; 7 valori REAL), il record è del tipo:
25/10/2014 00:00:00;120.5;75.8;1200.0;145.76;1560.6;456.8;985.75
Come vedi sono 64 bytes che arrotondiamo per eccesso a 70. Considerando un log ogni 10 secondi avremo 360 Record/Ora (Pari a 25Kb Ora). Anche ipotizzando un log continuo 24 ore su 24 e 31 giorni mese avremo ogni mese 267840 records con una quantità di dati pari a 18Mb. Formattando la SDCard per contenere i 12 mesi avremo per ogni file disponibili 44Mb di dati come si vede dal comando:
Format SDCard 12
Are you sure ? (Y,n)
Format Ok, Files:12, FSize:44738688, Time:54.290 (mS)In merito alla soluzione da te proposta di leggere da un PC tramite una connessione FTP i files dallo SlimLine, direi che è una ottima soluzione per garantire un efficace backup dei dati nello storage aziendale. Se opti per questa soluzione terrei i files sullo SlimLine più piccoli (Quindi farei una memorizzazione giornaliera) ed il server centrale può ogni giorno scaricare il file del giorno precedente avendo nello SlimLine un polmone di 7 giorni.
Sergio Bertana
Amministratore del forumCerto la tua soluzione è fattibile, se sai dove è ubicata l’antenna WiFi dell’access point pubblico ti consiglio una NanoStation al posto del Bullet per la station esterna alla casa. Essendo direttiva la puoi puntare sull’access point migliorando sia la trasmissione che la ricezione.
Poi come dici tu connetti al’interno della casa un dispositivo con antenna omnidirezionale da utilizzare come access point (Esempio Picostation). Ma a parte esigenze particolari Ubiquiiti rende disponibile l’AirGateway che fà esattamente quello che ti serve.
Comunque se configuri station l’antenna esterna e Access point il dispositivo interno entrambi in modalita bridged (Non router) i dispositivi interno casa utilizzeranno il server DHCP della rete WiFi pubblica.
Il WDS (Topic) è una tecnica per estendere il segnale utilizzando access point multipli.
Sergio Bertana
Amministratore del forumEd ora veniamo all’accesso al pannello da remoto, occorre installare sul PC il programma Easy Access 2.0 (Download dal ns sito), eseguendo il programma verranno richieste le credenziali di accesso (Definire le credenziali impostate all’utente) (Screenshot).
Eseguito l’accesso si visualizzerà lo stato di tutti i pannelli gestibili dall’utente, con l’indicazione dello stato di ogni pannello (Offline, Online). Clickando sul tasto di connessione verrà creata la VPN di connessione al pannello e visualizzato l’indirizzo IP assegnato dalla VPN al pannello. Riferendosi a questo indirizzo sarà possibile operare sul pannello come se fosse fisicamente in rete con il PC.
Easy Access 2.0 non rende solo possibile la connessione diretta ad un pannello della Weintek, ma fornisce anche la funzione pass-through che permette all’utente di connettersi a un PLC su una rete remota HMI, cioè sulla stessa LAN in cui è presente l’HMI. Una volta creata la rete VPN con il pannello un click sul pulsante “Set” permette di configurare l’indirizzo IP del PLC connesso alla rete del pannello. Dal tool di programmazione del PLC basterà riferirsi all’indirizzo IP definito per raggiungere tramite la VPN di Easy Access il PLC remoto. Attenzione, nel rete del vostro PC non dovrà gia esserci un dispositivo con lo stesso indirizzo IP (Screenshot).
Sergio Bertana
Amministratore del forumFino a quando non rilasceremo una versione del sistema operativo di SlimLine che prevede il client TCP non c’è altro modo che il convertitore. Puoi utilizzare la versione Codesys di SlimLine che ha sia il server che il client TCP, ma è più costosa (Licenza Codesys sigh)…Su questa versione inoltre trovando già molte applicazioni disponibili (Vedi libreria Oscat) non abbiamo portato tutta la gamma di librerie che invece offriamo con la versione LogicLab e quindi occorre cercare o scriversi la gestione del protocollo Modbus master.
Sergio Bertana
Amministratore del forumProseguo con lo step applicativo, affinchè il pannello possa essere gestito con EasyAccess occore registrarlo al sito Weintek nel proprio dominio, la prima volta occorrerà registrarsi e creare il dominio. Per registrarlo occorre conoscere il SessionID e la Password assegnati al pannello.
Per avere queste informazioni occorre realizzare un progetto EasyBuilderPro (Download progetto) che agisce sulle variabili relative. Come si vede dallo screenshot agendo sul tasto Connect, il terminale si collegherà in Internet con il server Weintek (Occorre avere definito nei parametri di Network il Gateway ed il server DNS), e visualizzerà i valori di SessionID e Password relativi a quel pannello (Allego estratto manuale EasyBuilderPro relativo ai System Registers). La condizione di attivazione dell’HMI si può vedere nella Status page, del System Setting (Screenshot).
A questo punto è possibile inserire il pannello nel dominio tramite il sito Weintek (Vedi screenhot). Se la procedura và a buon fine verranno visualizzati tutti i dati relativi al pannello (Screenshot). Ora è possibile creare dei gruppi assegnando ad ogni gruppo i pannelli corrispondenti.
Occorre poi definire gli utenti assegnando ad ogni utente un gruppo di pannelli su cui l’utente può operare. Attenzione per accedere da remoto con il programma EasyAccess 2.0 dovranno essere definite le credenziali assegnate all’utente. Ecco un semplice layout di configurazione (Screenshot).
Sergio Bertana
Amministratore del forumPer completezza e per soddisfare l’esigenza di chi deve necessariamente utilizzare il protocollo Modbus TCP, porto un esempio suggerito ad un nostro cliente. Non potendo lo SlimLine agire come client si aggira il problema utilizzando un convertitore Ethernet/Seriale (Anche un semplice ATC-1000) connesso alla porta seriale dello SlimLine. Il convertitore Ethernet/Seriale andrà configurato come Client definendo come server l’indirizzo IP e la porta (Default la 502) del sistema Modbus slave. Nello SlimLine si utilizza l’FB ModbusMaster connessa alla porta seriale avendo impostato come Type il valore 2 che gestisce il protocollo Modbus TCP.
-
AutorePost