Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Settembre 17, 2013 alle 1:11 pm in risposta a: Esempio movimentazione carrello in linguaggio SFC #37778
Sergio Bertana
Amministratore del forumCon un attimo di tempo libero ho provveduto ad ampliare il progetto di movimentazione carrello e/o asse aggiungendo la movimentazione automatica, come si vede dallo screenshot del programma SFC.
In modo manuale viene atteso il comando di start per movimentare in avanti o indietro, il movimento continua fino al raggiungimento del finecorsa relativo.
In modo automatico, su comando di start viene eseguita la movimentazione in avanti, raggiunto il finecorsa viene atteso un tempo di pausa, poi viene eseguita la movimentazione indietro. Raggiunto il finecorsa viene eseguita una pausa poi il ciclo riprende con la movimentazione in avanti. Per interrompere il ciclo automatico occorre passare in manuale.
Ho predisposto anche un ingresso %IX0.2 di simulazione, con l’ingresso attivo vengono simulati i finecorsa dopo un tempo dall’avvio della movimentazione, in questo modo si può testare il funzionamento in modo molto più agevole, non dovendo gestire gli ingressi di finecorsa.
Le varie azioni e transizioni sono gestite con programmi sia in linguaggio ladder LD che structured text ST, questo per dimostrare come un unico programma SFC possa contenere parti scritte negli altri 4 linguaggi della normativa IEC61131, allego stampa programma e files sorgenti.
Settembre 17, 2013 alle 8:14 am in risposta a: Collegamento di un HMI MT6050iV3 con CPU SlimLine #37777Sergio Bertana
Amministratore del forumSi certo è possibile, il protocollo di comunicazione tra il panello e la CPU è il Modbus RTU che è un protocollo a pacchetti adatto ad essere utilizzato anche su linee RS485, quindi nel caso di utilizzo su RS232 sono necessari solo il Tx e Rx oltre al GND. Per la connessione al terminale MT6050 devi eseguire le connessioni:
HMI -> Modulo CPU
6 (Tx) -> 5 (Rx)
9 (Rx) -> 6 (Tx)
5 (GND) -> 4 (GND)Per la programmazione del terminale puoi usare un normale cavo USB To Mini USB, lo stesso che utilizzi per connetterti alla porta USB del modulo CPU SlimLine.
Settembre 16, 2013 alle 9:54 am in risposta a: Realizzare un multiplexer seriale programmabile #37776Sergio Bertana
Amministratore del forumAttualmente la seriale del modulo di I/O analogico non può essere utilizzata come PCOMx.x, l’unico modulo che permette di estendere il numero di porte seriali dei sistemi SlimLine è il modulo 20I/O mixed signal. Questo modulo aggiunge una porta seriale RS232 per ogni modulo che utilizzi, ma ti trovi ad avere anche un numero di I/O che non utilizzi. Vediamo altre soluzioni possibili.
Utilizzare un modulo CPU aggiuntivo
Come hai detto ogni modulo CPU dispone di 3 porte seriali, interconnettendo via ethernet i moduli CPU puoi passare i dati da un modulo all’altro utilizzando l’FB UDPDataTxfer, UDP data transfer. E puoi mettere tanti moduli CPU aggiuntivi in base al numero di seriali necessarie (Nel tuo caso ne basta 1).Utilizzare convertitore Ethernet/Seriale in TCP/IP
Ogni convertitore ATC-1000 può gestire una seriale, il modo più semplice di gestirli è configurare il convertitore come Client TCP definendo come Server l’indirizzo IP e la porta dello SlimLine. Sullo SlimLine dovrai mettere in ascolto dei sockets sulle varie porte TCP che utilizzi (Una per ogni convertitore). Vi sono 3 sockets liberi utilizzabili per questo servizio, il vantaggio che nel programma potrai disporre di 3 file pointers FILEP che potrai utilizzare come fossero porte seriali.Utilizzare convertitore Ethernet/Seriale in UDP
Anche in questo caso ogni convertitore ATC-1000 può gestire una seriale, non disporrai più del file pointer FILEP ma dovrai utilizzare le funzioni SysUDPSktSend, UDP socket send e SysUDPSktRcv, UDP socket receive, per gestire la comunicazione. Però non vi è più il limite dei 3 sockets disponibili.Sergio Bertana
Amministratore del forumIn questo post si può trovare un programma che realizza un semplice convertitore Ethernet/Seriale.
Settembre 14, 2013 alle 6:24 am in risposta a: Esempio movimentazione carrello in linguaggio SFC #37773Sergio Bertana
Amministratore del forumNon sono un esperto programmatore in SFC, quando ho programmi sequenziali da realizzare preferisco utilizzare il linguaggio ST, lo statement CASE OF permette di gestirli in modo molto ordinato. Ma cerco di dare una risposta alla tua richiesta realizzando un semplice programma SFC che assolve allo scopo (Stampa programma, Download sorgente).
– Nello step Init, eseguo l’azzeramento delle due uscite di comando direzione.
– Nella successiva transazione attendo l’attivazione del pulsante di start.
– Prima di aprire una transizione devo forzatamente inserire uno step, lo step Dummy e solo un riempitivo.
– Apro una transizione divergente, eseguendo due transazioni di controllo sullo stato dei finecorsa. Se nessun finecorsa è attivo prevale il ramo più a sinistra quindi attivo l’asse in avanti (Come tua richiesta).
– Eseguo i due step di Avanti ed Indietro in cui viene attivata la relativa uscita di comando.
– Quando viene attivato il finecorsa, si salta sullo step Init che azzera le uscite di comando.Sergio Bertana
Amministratore del forumNella tua domanda non è chiaro se il protocollo è Modbus e se il sistema deve agire da master o da slave. SlimLine dispone di 4 Kb di memoria allocata nella DB100 (Questa è l’unica area accessibile dai comandi Modbus integrati nel sistema operativo).
In merito alla memoria utente come fai notare giustamente tu vi sono poi altri 8 Kb che vengono utilizzati per allocare le variabili automatiche. Quindi se utilizzi il blocco funzione ModbusSlave puoi gestirti l’accesso ad una tua propria memoria, ed in questo caso puoi allocare un array fino a 8 Kb ed accedervi da Modbus.
Ma se i registri sono molti di più e qui sinceramente non capisco l’applicazione, è possibile utilizzare il file system andando ad allocare un file nella directory Storage (Fino a 256 Kb). Con le funzioni Sysfseek, Sysfread, Sysfwrite, potrai posizionarti sul file (Come se fosse un indirizzo di memoria e poi leggere e scrivere). Naturalmente dovrai farti un tuo proprio comando di gestione del protocollo, in questo post trovi il programma sorgente di una FB modbus master.
Sergio Bertana
Amministratore del forumIl problema è che il driver RNDIS di Windows sul reboot non si accorge della sconnessione del sistema e quindi mantiene attiva la connessione USB, lo SlimLine invece essendosi resettato ha interrotto l’endpoint e quindi non comunica più.
Scollegando il cavo o spegnendo e riaccendendo lo SlimLine viene a mancare il segnale elettrico sull’USB del PC il quale resetta tutte le connessioni attive.
Sergio Bertana
Amministratore del forumMa che tipo di connessione usi con lo SlimLine ?
Connessione seriale, dovrebbe riprendere senza alcun problema.
Connessione TCP/IP su rete ethernet, eseguendo il reboot viene persa la connessione, occorre disabilitarla e poi riabilitarla.
Connessione TCP/IP su USB, occorre scollegare e ricollegare il cavo USB e/o come fai tu spegnere e riaccendere il dispositivo.Settembre 11, 2013 alle 8:45 am in risposta a: Gestione pagine web dinamiche da parte dell’utente #37766Sergio Bertana
Amministratore del forumGli ID utilizzati nelle pagine Web di configurazione come hai detto giustamente tu sono gestiti solo per i files presenti nella directory System, il web server dello SlimLine controlla la directory dove si trova la pagina da visualizzare e se diversa da System non gestisce gli ID.
Gli ID utilizzati non sono documentati, sono definiti nel programma e possono cambiare a nostra discrezione quindi non devono essere utilizzati. Le pagine web utente operano solo su variabili allocate nella DB 100, se vuoi gestire variabili di sistema occorre forzatamente appoggiarle su variabili allocate nella DB 100.
Settembre 11, 2013 alle 6:41 am in risposta a: Gestire I/O remoti con connessione via radiomodem #37764Sergio Bertana
Amministratore del forumNell’insieme la soluzione è fattibile ma come I/O remoti non utilizzerei HWg-ER88a perchè non supporta il protocollo modbus su seriale, ma puoi scegliere tra gli i moduli di I/O seriale (Il modello TRP-C28M dispoone di 4 ingressi e 4 uscite). Ti ricordo anche che un modulo SlimLine CPU Compact ARM7 costa comunque meno di un I/O remoto e lo puoi utilizzare per lo stesso scopo disponendo inoltre di una intelligenza locale.
Il problema maggiore è la comunicazione radio, il radiomodem ATC-3200 lavora a frequenza di 2.4 Ghz e ad una frequenza così elevata i muri (Nel tuo caso le solette) sono degli schermi difficilissimi da oltrepassare (Nel tuo caso ne hai addirittura 3). L’unica speranza di poter passare quelle solette è di utilizzare un radiomodem a frequenze più basse, esempio il modello DL169 potrebbe essere risolutivo.
Purtroppo come sai nelle comunicazioni radio non si può prevedere il funzionamento a priori di una comunicazione si parte da un progetto ottimale sulla carta ma poi solo il test sul luogo può dare la risposta sulla funzionalità. Naturalmente tutto cambia se tu potessi montare le antenne all’esterno dell’edificio.
Sergio Bertana
Amministratore del forumE’ quello che volevi ottenere. Se leggi bene il mio post, chiudendo il programma in un loop infinito, il sistema si resetta e quindi riparte dall’inizio (Esattamente come se venisse spento ed acceso).
La tua domanda era di eseguire un reboot su certe condizioni, ecco allora il loop infinito deve essere abilitato solo sulle condizioni nelle quali vuoi eseguire reboot.
Settembre 10, 2013 alle 12:56 pm in risposta a: Abilitazione VNC server su terminale MT8100iE #37763Sergio Bertana
Amministratore del forumLa serie iE è una serie con un prezzo d’attacco inferiore alle altre serie e nasce da Weintek senza la gestione del server VNC, ecco il perché non compare la finestra di settaggio. A seguito di pressioni sul fornitore, per il mercato Italiano è possibile eseguire l’upgrade del firmware originale con una versione speciale che ha il server VNC abilitato. Per eseguire l’upgrade occorre scaricare il firmware (19/07/2013) dal nostro sito ed eseguire le seguenti operazioni.
1- Estrarre file zip e copiarlo su pen drive USB.
2- Inserire la pen drive USB sul pannello (Anche acceso).
3- Andare nel system setting del pannello.
4- Dovresti trovare un menu upgrade firmware.
5- Cliccare upgrade.
6- Cliccare il + a fianco di USB e selezionare la cartella che contiene il file, se messo nella root principale selezionare USB disk.
7- Attendere l’aggiornamento, si conclude con il riavvio del pannello.
8- Probabilmente sarà necessario ricalibrare il pannello impostando ad On lo switch 1 e riaccendendo il pannello.
9- Toccare le frecce di calibrazione e al termine reimpostare lo switch a Off.
10- Eventualmente riscaricare il progetto.Sergio Bertana
Amministratore del forumCerco di chiarirti come funziona il CAN Bus sullo SlimLine, cominciamo con il dire che come CAN Controller viene utilizzato il controller CAN 1 presente nel controllore ARM (Allego estratto datasheet). Il bit bit 31 (FF) di SYSCANMESSAGE.MsgID indica se il messaggio ha un identificatore a 11 bit oppure a 29 bit.
Per utilizzare il CAN occorre inizializzarlo definendo la velocità ed i filtri, tipicamente viene impostato per ricevere tutti i messaggi SysCANSetMode(CAN_500KBIT, 16#00000000, 16#00000000);
Ricezione messaggi CAN
I messaggi sono ricevuti in interrupt e memorizzati nel buffer di ricezione (32 messaggi fino a 8 bytes di dato ciascuno). Il programma utente con la funzione SysCANRxMsg(Mask, ID, ADR(Msg)); estrae dal buffer il messaggio desiderato è lo memorizza nella variabile Msg. Occorre eseguire la funzione fino a svuotare completamente il buffer di ricezione gestendo tutti i messaggi ricevuti. Il tempo di esecuzione della funzione è di di pochi uS ma per non perdere messaggi occorre che venga eseguita ciclicamente in un tempo inferiore al tempo di riempimento buffer (32 messaggi).Trasmissione messaggi CAN
I messaggi sono caricati nel buffer di trasmissione (32 messaggi fino a 8 bytes di dato ciascuno) con la funzione SysCANTxMsg(ADR(Msg)); i messaggi vengono poi trasmessi in interruzione dal sistema.Sergio Bertana
Amministratore del forumConcordo sul fatto che il linguaggio ST (Structured Text) è molto simile al linguaggio C, ne condivide alcune sintassi IF, FOR, WHILE, CASE (Ha lo stesso significato di SWITCH) e questo unito all’utilizzo dei puntatori e delle strutture dati permette di realizzare programmi complessi.
Ma ora vediamo di comprendere il significato di Task, l’ambiente LogicLab come hai detto giustamente tu esegue la task di Boot al primo loop di avvio, in questa task si devono eseguire tutti i programmi di inizializzazione. Viene poi gestito un sistema multitasks basato su tre tasks.
Fast: Eseguita di default ogni 1 mS interrompendo sia la Back che la Slow (La funzione SysSetTaskLpTime permette di impostare tempi di esecuzione da 100 µS a 10 mS). I programmi eseguiti in questa task gestiscono logica veloce. E’ possibile catturare segnali digitali che hanno durata molto breve. In questo post ad esempio viene gestita la acquisizione di un lettore RFID.
Slow: Eseguita di default ogni 10 mS interrompendo la Back (La funzione SysSetTaskLpTime permette di impostare tempi di esecuzione da 1 mS a 100 mS). Inserire in questa task tutti i programmi che controllano le sequenze logiche di funzionamento di un impianto. La certezza del tempo di esecuzione garantisce il corretto funzionamento dell’impianto.
Back: Eseguita nel tempo libero, il suo tempo di scansione non è determinato, può variare da veloce meno di 1 mS a lento decine di mS. In questa task si eseguono i programmi che non sono deterministici, esempio calcoli, gestione I/O analogico ed I/O digitale non utilizzati nel funzionamento di un impianto. In questa task devono essere inserite tutte le comunicazioni sia seriali che TC/IP oltre a tutte le funzioni di accesso al file system.
Settembre 7, 2013 alle 6:33 am in risposta a: Convertitore ATC-108N con inverter Aurora Power-One #37757Sergio Bertana
Amministratore del forumRingrazio byflog per il suo contributo, la porta RS485 è uno standard quindi tutti i convertitori della ns gamma che hanno l’interfaccia RS485 sono sicuramente compatibili a livello elettrico con l’inverter Aurora Power-One.
Il protocollo di comunicazione è un protocollo a pacchetti binario, questo facilita la sua gestione non solo in seriale diretta come nel caso del post precedente, ma anche in caso di comunicazioni a pacchetti su rete ethernet (Vedi post) od in WiFi (Vedi post), abbiamo clienti che hanno utilizzato Radiomodems per il collegamento.
-
AutorePost