Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumLe Function nello standard IEC61131 a differenza delle Function Block non possono operare su variabili globali. Tutti i valori devono essere passati per variabili ed è previsto un solo valore di ritorno. Ecco un esempio di funzione che effettua la somma tra due valori e ritorna il risultato.
FUNCTION FctAdd: UINT
VAR_INPUT
FirstAddend: UINT; { DE:”First addend” }
SecondAddend: UINT; { DE:”Second addend” }
END_VAR{ CODE:ST }
FctAdd:=FirstAddend+SecondAddend;END_FUNCTION
Ecco il codice che utilizza la funzione:
IOVar:=FctAdd(100, 200);
Nella variabile IOVar sarà trasferito il valore 300.
Sergio Bertana
Amministratore del forumIl protocollo modbus sia TCP su seriale che OverIP su rete ethernet permette l’accesso a tutte le variabili relative alla memoria utente (MX100), come si evince dal manuale Programmazione IEC su sistema SLine di cui allego stralcio.
Attenzione! Siccome l’allocazione delle variabili nella memoria del PLC è eseguita a byte, mentre la lettura dei registri da modbus è eseguita a word, per indirizzare nel terminale le variabili PLC occorre dividerne per 2 l’indirizzo di allocazione. Vediamo per semplificazione una tabella di definizione variabili sul PLC ed il relativo indirizzo nel terminale:
Variabili su PLC Indirizzo HMI
Name Type Address
Var0 UINT %MW100.0 3x 40000
Var1 UINT %MW100.10 3x 40005
Var2 UINT %MW100.100 3x 40050
Var3 UINT %MW100.2048 3x 41024
Var4 UINT %MW100.4094 3x 42047Ricordo che la memoria da %MW100.2048 ad %MW100.4095 è memoria ritentiva, pertanto i valori presenti nelle variabili allocate in questo range di indirizzi sono mantenuti allo spegnimento del sistema.
Luglio 28, 2010 alle 6:54 am in risposta a: Come rilevare ed impostare l’indirizzo IP sulla CPU Slimline #36503Sergio Bertana
Amministratore del forumRiporto lo screenshot dei comandi così come visualizzati nel programma di emulazione terminale:
Login: Admin
Password: *****
[Admin]>[Admin]> ifconfig
————————————————————-[Interface: eth]–
Interface:…. On board Ethernet interface
MAC address:.. 00-50-C2-C3-C0-0E
IP address:… 192.168.0.122
Subnet mask:.. 255.255.255.0
Gateway:…… 192.168.0.1
————————————————————-[Interface: slip]–
Disabled[Admin]> ifconfig eth -a 192.168.0.124
IP address: 192.168.0.124
Use “cfgcommit” and “reboot” commands to apply settings[Admin]> cfgcommit
System configuration saved[Admin]>
Adesso è possbile spegnere e riaccendere il sistema per rendere operative le impostazioni effettuate.
Sergio Bertana
Amministratore del forumEsistono comunque anche i blocchi funzione eTOF, Timer Off ed eTON, Timer On che possono essere utilizzati in tutti e 5 i linguaggi della IEC61131. Entrambi i blocchi funzione eseguono temporizzazioni con tempo definibile in mS.
Sergio Bertana
Amministratore del forumEsiste anche la funzione SysGetSysTime() che permette la lettura di un tick di sistema che si incrementa ogni uS, in questo caso il programma precedente può essere modificato nel modo.
(* Init the reference time at first program loop. *)
IF SysFirstLoop THEN
RefTimeBuf:=SysGetSysTime(TRUE); (* Save the reference time *)
END_IF;(* Check if 1 Sec is passed and invert the logic DoOOM00 state. *)
IF (SysGetSysTime(TRUE) > (RefTimeBuf+1000000)) THEN
RefTimeBuf:=SysGetSysTime(FALSE); (* Save the reference time *)
Do00M00:=NOT(Do00M00);
END_IF;Da notare la chiamata a SysGetSysTime() con la flag FALSE per avere lo stesso tempo utilizzato nel confronto e non perdere i uS di tempo necessari alla esecuzione delle istruzioni di confronto.
Sergio Bertana
Amministratore del forumLa funzione IsMsecTimeOver() si basa sul controllo del tick di sistema che nei sistemi Picolog si incrementa automaticamente ogni 1 mS.
Nei sistemi SlimLine è possibile da linguaggio ST testare la variabile di sistema SysTime di tipo UDINT che si incrementa ad ogni mS raggiunto il valore massimo si reinizializza. In pratica per eseguire la temporizzazione similarmente a quanto facevi in “C” sui sistemi Picolog puoi fare qualcosa simile al programma sottoriportato che esegue l’inversione della uscita Do00M00 ogni secondo. La variabile RefTimeBuf deve essere dichiarata di tipo UDINT.
(* Init the reference time at first program loop. *)
IF SysFirstLoop THEN
RefTimeBuf:=SysTime; (* Save the reference time *)
END_IF;(* Check if 1 Sec is passed and invert the logic DoOOM00 state. *)
IF (SysTime > (RefTimeBuf+1000)) THEN
RefTimeBuf:=SysTime; (* Save the reference time *)
Do00M00:=NOT(Do00M00);
END_IF;Sergio Bertana
Amministratore del forumNo nessun terminale touch screen Weintek da noi distribuito supporta la rete Profibus.
I terminali touch screen serie i MT80xx, che sono provvisti di interfaccia Ethernet, supportano la rete ProfiNet, quindi possono dialogare con i PLC Siemens utilizzando la rete ProfiNet.Luglio 20, 2010 alle 9:04 am in risposta a: Raccolta dati logici/analogici da campo con Modbus TCP #36498Sergio Bertana
Amministratore del forumGuardando tra i nostri prodotti posso ipotizzare l’utilizzo dei nostri sistemi SlimLine, in merito ai costi puoi, essendo registrato al sito, vederli direttamente dalle nostre pagine web. La nuova gamma di prodotti SlimLine dispone di modulo CPU con interfaccia ethernet direttamente collegabile ad un dispositivo wireles. Il modulo supporta il protocollo Modbus over IP ed al modulo CPU come vedi possono essere collegati moduli di acquisizione logica ed analogica. Naturalmente il prodotto è programmabile in IEC61131 e quindi potresti oltre ad acquisire gli I/O anche gestire logiche locali.
Sergio Bertana
Amministratore del forumLa soluzione proposta è fattibile, non conosco il protocollo 101 nei dettagli, ma abbiamo sicuramente già realizzato applicazioni simili con il protocollo modbus.
In modalità TCP i due convertitori ATC2000 vanno configurati come Client/Server, il convertitore che funziona da Client si connetterà al convertitore che funziona da Server creando una connessione TCP sulla quale verranno veicolati i dati seriali tra le apparecchiature (SCADA e RTU).
Essendo il protocollo 101 sicuramente in grado di controllare gli errori di trasmissione, per minimizzare il traffico TCP/IP è anche possibile realizzare una connessione UDP. In questo modo si evitano i messaggi di acknowledge del protocollo TCP diminuendo traffico e costo.
Come router GPRS e/o UMTS consiglio di dare una occhiata ai prodotti da noi commercializzati nella famiglia dei routers Conel, questi modelli hanno la possibilità di essere ordinati con una scheda di espansione seriale all’interno. Utilizzando questa opzione è possibile realizzare la connessione seriale to seriale direttamente con il router senza utilizzare il convertitore ATC2000.
Luglio 15, 2010 alle 8:07 am in risposta a: Riportare alle impostazioni di default su ATC2000 #36492Sergio Bertana
Amministratore del forumLa connessione Client/Server tra due convertitori ethernet avviene utilizzando il protocollo TCP o UDP che sono protocolli standard, pertanto non vi sono vincoli tra i dispositivi da utilizzarsi lato Client e lato Server.
Quindi è possibile “mischiare” dispositivi diversi tra di loro, sia dello stesso produttore che di produttori differenti.
In pratica però è preferibile scegliere un modello e realizzare reti con modelli uguali, se non altro per avere una unica interfaccia utente sui diversi dispositivi della rete.
Luglio 15, 2010 alle 6:18 am in risposta a: Riportare alle impostazioni di default su ATC2000 #36490Sergio Bertana
Amministratore del forumLa procedura per ripristinare le condizioni di default sul convertitore ATC2000 è la seguente:
Aprire il convertitore (Fare riferimento alla foto).
Individuare sul circuito stampato le piazzole denominate RESET e GND.
A convertitore spento cortocircuitare con un filo di rame le due piazzole.
Accendere il convertitore mantenendo le piazzole cortocircuitate per almeno 5 secondi.
A questo punto è possibile rimouovere il cortocircuito tra le piazzole.Ora l’ATC è impostato con i suoi parametri di default, indirizzo IP 192.168.168.125, username admin e password admin.
Sergio Bertana
Amministratore del forumHo realizzato un progetto che in linguaggio SFC realizza una semplice comunicazione con un nodo slave utilizzando il function block di comunicazione modbus.
Nel programma vi sono 3 actions, una di apertura porta seriale e definizione parametri di comunicazione, una di gestione lettura registri da nodo slave ed una di scrittura registri su nodo slave.
Il passaggio tra le varie actions è condizionato dal termine della esecuzione del comando definito per il blocco funzione di comunicazione, download programma.
Sergio Bertana
Amministratore del forumSi questa è una tipica applicazione del router RUT10x, la possibilità di raggiungere via Internet con connessione TCP/IP qualsiasi apparecchiatura dotata di interfaccia di rete Ethernet. Per poter accedere al terminale MT8070i occorre mettere in rete il terminale con il router, assegnando indirizzi IP appartenenti alla stessa rete. Esempio:
Router
IP: 192.168.0.1
Mask: 255.255.255.0Terminale
IP: 192.168.0.10
Mask: 255.255.255.0
Gateway: 192.168.0.1 (Indirizzo IP del router)Il terminale Weintek utilizza per la programmazione la porta 20248, quindi sul router occorre eseguire un port forwarding su protocollo TCP, tra la porta in ingresso 20248 verso indirizzo IP 192.168.0.10 (Indirizzo IP terminale).
Marzo 10, 2010 alle 1:33 pm in risposta a: Drivers per Windows 7 convertitori USB-Seriale Trycom #36486Sergio Bertana
Amministratore del forumIl convertitore TRP-C08S ha effettivamente una porta RS232 ed una porta RS422/485 che sono mappate dal driver come due porte COM nel PC, e possono essere utilizzate contemporaneamente.
Come già riportato in un post precedente, il convertitore modello TRP-C08S utilizza il chips MCS7820 della Moschip, presso il sito del produttore del chip sono disponibili i drivers per Windows 7 sia versione 32 bit che 64 bit. Ho comunque provveduto a rendere disponibili per il download dal nostro sito la nuova versione dei drivers.
Marzo 9, 2010 alle 11:32 am in risposta a: Chiarimenti sul funzionamento del sensoreTemp-485 Box2 #36484Sergio Bertana
Amministratore del forumIl sensore di temperatura Temp-485 Box2 è interrogato inviando stringhe ascii, ed il sensore risponde inviando stringhe ascii.
Stringa richiesta temperatura: T<address>I (Esempio TAI)
Stringa risposta: *<address><temp><CR> (Esempio *A+025.51C<CR>)
Stringa risposta se errore: *<address>Err<CR> (Esempio *AErr<CR>)<address> é un carattere da ‘A’…’Z’ con eccezzione del carattere ‘T’.
<CR> è il carattere di carriage return 0x0D o 13 decimale.
<temp> è il valore di temperatura nel formato “segno, 3 cifre intero, punto, 2 cifre decimali, C”.Quindi valori di temperatura validi possono essere: +025.51C, +102.10C, -002.35C.
-
AutorePost