Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 2,371 a 2,385 (di 4,264 totali)
  • Autore
    Post
  • in risposta a: Definizione di costanti utilizzabili nel programma #39045
    Sergio Bertana
    Amministratore del forum

    Ho scritto un programma esattamente uguale al tuo e come vedi dallo screenshot il risultato è corretto. Ti allego anche il progetto così puoi testarlo sul tuo sistema, funziona anche con il simulatore (Download progetto).

    Se da te non funziona, puoi controllare la versione del firmware del tuo sistema e la versione del programma LogicLab.

    in risposta a: Definizione di costanti utilizzabili nel programma #39043
    Sergio Bertana
    Amministratore del forum

    Non esistono costanti predefinite, però è possibile definire variabili che sono assunte come costanti in tutto il programma. Nella tabella di definizione delle variabili globali si defiscono le nuove costanti con l’attributo CONSTANT (Screenshot).

    in risposta a: Come utilizzare gli esempi forniti con SlimLine #39040
    Sergio Bertana
    Amministratore del forum

    Si certo è un esempio e vuole dimostrare come sia possibile gestire una connessione modbus in TCP. Non sono in ufficio e quindi non posso fare tests, ma guardando il codice basta modificare il case 3 nel modo:

    3: Mdb.Enable:=NOT(Mdb.Done);

    In pratica sul Done togli l’Enable che fà ripartire la richiesta. In questa fase puoi anche modificare i registri da leggere/scrivere. Naturalmente un occhio al CSk.Fault se cade il socket devi ripartire dall’inizio.

    in risposta a: Come utilizzare gli esempi forniti con SlimLine #39038
    Sergio Bertana
    Amministratore del forum

    Anche LogicLab si attiene alla normativa IEC61131 che indica anche come definire le aree di memoria. Esssendo Siemens il leader del mercato PLC, la normativa si è molto ispirata a loro.

    La famiglia SlimLine LogicLab utilizza l’ambiente di sviluppo LogicLab sviluppato da una azienda italiana. L’ambiene essendo conforme alla IEC61131 è molto simile al CODESYS. Crediamo molto in questo prodotto, ed proprio per la famiglia LogicLab abbiamo sviluppato tantissime funzioni e FB. Dando una occhiata al forum dedicato al prodotto troverai moltissimi esempi con relativo codice sorgente.

    in risposta a: Come utilizzare gli esempi forniti con SlimLine #39036
    Sergio Bertana
    Amministratore del forum

    Nell’esempio il master Modbus si connette ad un sistema SlimLine LogicLab che agisce come slave. Ora nello SlimLine LogicLab il Modbus è gestito dal sistema operativo e l’area di memoria accessibile è la DB 100 che ha 4096 bytes di memoria.

    L’indirizzo Modbus per accedere a quest’area si ottiene sommando 40000 all’indirizzo di allocazione della variabile in memoria  nel caso di comandi Modbus con accesso a bit. Nel caso di comandi Modbus con accesso a WORD l’indirizzo di allocazione della variabile và diviso per 2. Ecco quindi che nel mio caso accedendo a due variabili WORD consecutive allocate a DB 100.2312. L’indirizzo Modbus diventa: 40000+(2312/2) =41156 (Topic).

    Ma se tu accedi a dispositivi commerciali dovrai fare riferimento alla documentazione del dispositivo che indicherà l’indirizzo Modbus da utilizzare. Attenzione, in accordo alle  specifiche Modbus il FB invia come frame di richiesta il valore Mdb.Address-1. Ma non tutti i sistemi slaves sommano 1 all’indirizzo ricevuto quindi molte volte devi falsare di 1 il valore di Mdb.Address.

    in risposta a: Come utilizzare gli esempi forniti con SlimLine #39034
    Sergio Bertana
    Amministratore del forum

    Il programma dimostrativo PTP131A100 è ancora in sviluppo probabilmente hai visto il riferimento in qualche stralcio del manuale postato sul forum. Quindi non è ancora disponibile nella sezione download, ne posto una copia preliminare qui nel forum (Download programma).

    in risposta a: Gestione backup dati automatico #39032
    Sergio Bertana
    Amministratore del forum

    Non ho idea del perchè capita questo devo contattare Weintek al riguardo (Lo farò dopo le ferie). Ma come consiglio puoi provare a mettere l’oggetto di Backup nella Common Window. Essendo una finestra sempre attiva dovrebbe garantire il funzionamento costante della procedura.

    Se non vuoi vedere l’oggetto puoi eliminare lo shape così sarà del tutto invisibile anche se di fatto visualizzato dietro a tutte le finestre attive.

    in risposta a: Interfaccia grafica WebVisu su dispositivi mobili #39031
    Sergio Bertana
    Amministratore del forum

    Non ho provato personalmente ma Googlando ho trovato questa risposta: Ti confermo che funziona sia su dispositivi mobili con Android, (ho verificato con Chrome) che con IOS.

    Nel PlayStore puoi trovare la App SpiderControl che è a pagamento.

    Se il browser Android supporta HTML5, si puo’ provare ad vedere questo interessante progetto su Sourceforge WebVisu beta Pure Browser based Visualisation for PLCs. Ho provato e funziona a parte qualche problema di visualizzazione su alcuni tipi di controlli grafici, d’altronde il progetto è in fase beta.

    in risposta a: Dimensionamento batterie su modulo DR-UPS40 #39030
    Sergio Bertana
    Amministratore del forum

    Certo puoi collegare la batteria senza problemi, naturalmente controlla la massima corrente che il dispositivo può erogare non collegare carichi da pilotare con correnti più elevate del massimo (40 A).

    in risposta a: Visualizzazione interfaccia grafica da web browser #39029
    Sergio Bertana
    Amministratore del forum

    Come tutti i PLC anche lo SlimLine ha un controllo di watch dog sul tempo di esecuzione del programma. I programmi eseguiti in automatico hanno un tempo prefissato e non modificabile. Si è visto che accedendo da pagina web si allunga il tempo di esecuzione del programma al punto da fare intervenire il controllo di watch dog che ne ferma l’esecuzione.

    Eseguendo il programma in una task è invece possibile definire se si vuole o no il controllo di watch dog e/o definirne il tempo su quel programma. Ecco quindi che si evita il problema che un allungamento del tempo di esecuzione provochi l’errore.

    in risposta a: Esportare dati sul web da SlimLine (Usando Php) #39027
    Sergio Bertana
    Amministratore del forum

    Non vi sono particolari problemi sul numero di variabili da acquisire, se vuoi suddividerle puoi realizzare nello SlimLine più file htm con all’interno le variabili da acquisire. Il programma in php dovrà leggere i vari files è gestire le variabili di ognuno, esempio:

    $Content1=file_get_contents(“http://xxx.xxx.xxx.xxx/Storage/Values1.htm”);
    $Content2=file_get_contents(“http://xxx.xxx.xxx.xxx/Storage/Values2.htm”);

    Ti consiglio di dare una occhiata anche a questo topic dove trovi una classe php per gestire il protocollo modbus master. In questo modo potrai da server interrogare i vari sistemi SlimLine via modbus TCP/IP, in questo modo puoi leggere e scrivere variabili senza alcun limite.

    in risposta a: Connessione sensore 4-20 mA a 2 fili con modulo mixed I/O #39025
    Sergio Bertana
    Amministratore del forum

    La connessione è la stessa ma la sostanziale differenza è che AGnd della scheda analogica non è in comune con il GND della alimentazione del modulo CPU. Inoltre se usi una modulo da 10 canali, o più moduli, i segnali AGnd di ogni banco da 5 ingressi sono tra loro isolati.

    Vantaggio principale è una minore sensibilità ai disturbi dovuta alla separazione galvanica tra le due masse, inoltre puoi utilizzare riferimenti di massa diversi tra i vari banchi da 5 ingressi.

    in risposta a: Problema con funzione SysVarsnprintf #39023
    Sergio Bertana
    Amministratore del forum

    La funzione SysVarsnprintf è esattamente la stessa su entrambe le due versioni del firmware che stai utilizzando. La funzione si appoggia sulla printf che è una funzione di libreria del compilatore GNU CC e quindi potrebbe esserci una qualche differenza in quella libreria.

    Il mio consiglio è di utilizzare una variabile STRING e non un ARRAY di BYTE come variabile di appoggio della stringa in uscita dalla SysVarsnprintf.

    IF (SysVarsnprintf(ADR(SOut), 19+1, ‘<CODIC:%u’, UDINT_TYPE, ADR(MData[i].codic))) == EOF) THEN Flt:=Flt OR 1; END_IF
    IF (SysVarsnprintf(ADR(SOut)+LEN(SOut), 18+1, ‘;LOTTO:%u’, UDINT_TYPE, ADR(MData[i].lotto)) == EOF) THEN Flt:=Flt OR 2; END_IF;

    In questo modo un errore nella funzione può essere controllato dal valore che assume Flt al termine e soratutto evita che la somma dei caratteri stampati sia errata. Se errore nella conversione del valore la funzione SysVarsnprintf ritorna EOF. EOF corrisponde al valore -1, questo potrebbe se sommato ad una variabile intera spostare completamente l’indice dell’array di appoggio mandando in eccezione il PLC.

    in risposta a: Connessione sensore 4-20 mA a 2 fili con modulo mixed I/O #39021
    Sergio Bertana
    Amministratore del forum

    Si certo lo schema di connessione è corretto, i sensori 4-20 mA a 2 fili si alimentano con la tensione di caduta sul circuito di misura. In pratica misurando la corrente con una resistenza di shunt da 62 Ω si avrà una caduta massima ai capi della resistenza di 1,24 Volt a 20 mA. E questa sarà la massima tensione che entrerà nel modulo Mixed I/O, per questo devi rimuovere il ponticello LK55 predisponendo l’ingresso a tensioni inferiori a 1,25 Volt.

    Certo dovrai verificare che il tuo sensore accetti il 24 Vdc di alimentazione. Comunque anche nel caso di rottura dello shunt e/o errori di connessione ti ricordo che l’ingresso analogico del modulo mixed I/O è protetto dalle sovratensioni ed un eventuale 24 Vdc applicato all’ingresso non crea problemi.

    Ricordo che il modulo mixed I/O, a differenza del Modulo espansione I/O Analogico, non è galvanicamente isolato, quindi l’ingresso di riferimento analogico AGnd è in comune con il GND di alimentazione del modulo CPU.

    in risposta a: Acquisizione codice scheda da lettore RFiD #39020
    Sergio Bertana
    Amministratore del forum

    Prendendo spunto da altri programmi presenti nel forum ho realizzato un semplice blocco funzione RFiDInterface che esegue l’interfaccia con il lettore RFiD. Come si vede dalla stampa del programma il FB è realizzato in linguaggio ST e viene gestito da un programma ladder.

    Ho gestito nel FB la completa interfaccia con il lettore e due uscite impulsive (Un loop di programma) indicano se carta presente oppure no. Nel caso di carta presente viene ritornato su di una variabile UDINT CardCode, il codice UID letto dalla carta. Naturalmente dovrai gestire un array di UINT con i vari codici UID abilitati, su attivazione dell’uscita BOOL CardOk, puoi eseguire un loop di ricerca nell’array per verificare se il codice letto è presente (Download programma).

    Nel forum puoi trovare questo topicquesto topic dove viene trattata la gestione del Mifare Reader/Writer SL025B.

Stai visualizzando 15 post - dal 2,371 a 2,385 (di 4,264 totali)