Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumPer chi è interessato al disegno dinamico sul pannello rimando a questo topic dove vi sono degli approfondimenti sull’argomento.
Sergio Bertana
Amministratore del forumAggiungo un’altro interessante progetto dimostrativo fornito da Weintek Wood_Cutting_Machine, nel progetto si visualizzano le sagome di taglio di un pannello di legno in base alle dimensioni fornite da una ricetta (Download).
Sergio Bertana
Amministratore del forumL’oggetto “Dynamic Drawing” è la soluzione corretta, per testarne il funzionamento ti consiglio il programma dimostrativo Dynamic_Drawing_Demo fornito da Weintek (Download). In questo topic troverai altre indicazioni.
Puoi provare in simulazione il funzionamento, per disegnare un rettangolo devi impostare le coordinate X1,Y1 e X2,Y2 definire un riempimento in Attributes+2 (Esempio 10) e poi dare il comando di disegno rettangolo in Attributes+0 (Scrivendo 2).
Per cambiare dimensioni e posizione modifica le coordinate, cancelli l’oggetto e poi dai un nuovo comando di disegno in Attributes+0.
Giugno 13, 2018 alle 12:27 pm in risposta a: Collegamento schede proprietarie al bus espansione #44321Sergio Bertana
Amministratore del forumI segnali +5Vdc e +5V (AUX) sono connessi insieme sul modulo CPU, li abbiamo diversificati sul BUS con l’intento di collegare al +5Vdc l’elettronica ed al +5V (AUX) gli eventuali carichi (Ad esempio le nostre schede di espansione collegano le bobine dei relè).
Questo tipo di connessione permette di avere una caduta di tensione minore sul +5Vdc dovuta al minor carico. La corrente totale erogata comunque è quella indicata nelle caratteristiche (Nel caso di MPS052 è di 2.5A).
Sergio Bertana
Amministratore del forumNon capisco la domanda, hai un PLC Micrologix 1400 che a quanto ne sò supporta il Modbus TCP quindi non vedo il problema.
Sergio Bertana
Amministratore del forumHo fatto una ricerca in rete e ho trovato parecchi flussometri tipo quello di cui mi riporti le caratteristiche (Data sheet), sono tutti oggetti dal costo di una decina di euro. Hanno una connessione a 3 fili (2 di alimentazione) e l’uscita segnale. Non ho trovato se il segnale di uscita è push-pull od open collector, in ogni caso è possibile collegarlo agli ingressi digitali del modulo CPU SlimLine.
Per la lettura puoi collegarlo all’ingresso counter, ma se la portata è bassa e di conseguenza anche la frequenza in uscita puoi acquisire il conteggio campionando direttamente gli ingressi digitali (Vedi topic). Per calcolare la portata basterà contare gli impulsi nel tempo proprio come in questo topic si è fatto per calcolare la velocità di rotazione di un motore.
Sergio Bertana
Amministratore del forumLa sintassi è corretta, ho provato ed effettivamente per un BUG di LogicLab può essere che venga generato errore anche se non vi sono errori, ho segnalato il problema al supporto della Axel.
La buona notizia è che chiudendo LogicLab e riaprendolo si può compilare normalmente, spero questo succeda anche nel tuo progetto.
Sergio Bertana
Amministratore del forumProva ad accedere alla pagina web del CMT e nella sezione storici esegui una cancellazione di tutti gli storici.
Sergio Bertana
Amministratore del forumMeglio dell’immagine è vedere insieme con TeamViewer il problema, installa il programma (Download dal nostro sito) poi mi chiami e vediamo immediatamente il problema.
Sergio Bertana
Amministratore del forumLeggo un pò di confusione, mi sembra tu stia parlando di un FB e non di un program. Nei program l’accesso alle variabili globali è libero, se la variabile è dichiarata nella tabella delle globali è direttamente accessibile con il proprio nome.
Diverso è l’utilizzo nelle Functions e nei FB, dove tutte le variabili devono essere passate come I/O (Vedi topic, topic). Solo nei FB e non nelle Functions puoi anche riferirti a variabili globali, ma in questo caso le devi dichiarare esattamente come sono dichiarate nelle GLOBALS e dopo averle dichiarate le assegni come VAR_EXTERNAL. Consiglio di copiare la dichiarazione dalla lista GLOBALS (Ctrl-C) ed incollarla nel FB (Ctrl-V) definendola poi come VAR_EXTERNAL.
Sergio Bertana
Amministratore del forumMettendo nella finestra di Watch la variabile SysLastError, oppure connettendoti in Telnet con il comando SysLog potrai vedere che errore hai, seguendone il numero nel manuale troverai le indicazioni per risolvere il problema. Puoi anche indicarmi l’errore e/o inviare il file Logs.txt con i logs di sistema alla nostra mail di supporto.
Il FB ModbusSlave ha anche l’ingresso SpyOn che se attivo permette di spiare dalla console di spionaggio cosa succede, ti consiglio di attivarlo e magari anche questo ti aiuterà a capire il problema.
Sergio Bertana
Amministratore del forumConsigliamo sempre di acquistare almeno un’ora di supporto remoto, così con TeamViewer possiamo lavorare insieme su LogicLab e partire con il “piede giusto” con la programmazione dei dispositivi. Inoltre possiamo durante il supporto fornire “pezzi” di programma già fatti che sono ottimi puntio di partenza per le proprie applicazioni.
Per il supporto remoto occorre utilizzare la versione di TeamViewer scaricabile dal sito, la si può anche solo eseguire senza installazione. Installato il programma puoi contattarci e solitamente possiamo fare subito la sessione di supporto.
Sergio Bertana
Amministratore del forumIl file Logs.txt contiene tutte le informazioni riferite alle anomalie del sistema, sono le stesse restituite dal comando SysLog eseguito da Telnet. Ogni riga inizia con il tipo di segnalazione:
[W] Warning, indica una anomalia minore
[E] Error, indica un errore di funzionamento
[L] Log, indica la registrazione di un eventoLa stringa seguente indica in che sezione del sistema operativo l’evento si è creato. Segue data/ora dell’evento, poi il numero identificativo dell’evento ed una breve descrizione. Questi dati servono a noi per capire il tipo di problema che si è verificato in un certo programma per questo non sono documentati.
Analizzando il tuo report, alle 9:42 si è mandato in esecuzione il programma PLC, ed alle 9:57 si è verificato una eccezione di accesso alla memoria (Questo errore è molto grave e riavvia il sistema). Questo può succedere quando utilizzando ad esempio un puntatore si esce dal range di memoria indirizzabile del sistema.
Siccome mi dici che hai aggiunto una SysVarsnprintf controlla l’indirizzo della variabile e l’indirizzo del buffer di memoria dove la funzione scrive la stampa del valore, probabilmente hai un errore di indirizzamento.
Sergio Bertana
Amministratore del forumSi le variabili BOOL utilizzano comunque un byte di memoria e non le puoi allocare a DB100.0 perchè il driver Modbus del pannello HMI “ragiona” sempre a interi 16 bits. Quindi anche per acquisire una sola variabile BOOL esegue un comando Modbus 01 Read Coil Status acquisendo 16 coils con indirizzo a cavallo della variabile desiderata.
Quindi se allochi a DB100.0 il terminale eseguirà la lettura di 16 coils nel range da -8 (39993) a +8 (40008), ma come evidente ad interrogazioni Modbus con indirizzo minore di 40000 lo SlimLine risponde con errore. Da tutta questa discussione emerge che non puoi allocare BOOL al di sotto dell’indirizzo DB100.8, noi per comodità diciamo DB100.16.
Sergio Bertana
Amministratore del forumIn questo topic e in questo, trovi informazioni utili per l’allocazione delle variabili, in linea generale (A meno di istanziare un FB ModbusSlave nel tuo progetto), tutte le variabili accesibili da Modbus devopno essere allocate nella DB100 (Address Modbus 40000).
Per l’allocazione, le variabili BOOL utilizzano un byte di memoria, quindi le puoi allocare a partire da DB100.16 (Address Modbus 0x 40016) in avanti una per byte.
Le variabili WORD utilizzano 2 bytes quindi se ne allochi una a DB100.100 (Address Modbus 3x 40050) la prossima sarà a DB100.102 (Attenzione sempre allocate ad indirizzi divisibili per 2).
Le variabili DWORD utilizzano 4 bytes quindi se ne allochi una a DB100.100 (Address Modbus 3x 40050) la prossima sarà a DB100.104 (Attenzione sempre allocate ad indirizzi divisibili per 4).
E’ ovvio che se una variabile utilizza un indirizzo di memoria non potrai allocare allo stesso indirizzo altre variabili.
-
AutorePost