Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Febbraio 1, 2016 alle 10:34 am in risposta a: Chiarimenti sulle nuove funzionalita’ di LogicLab4 #39321
Sergio Bertana
Amministratore del forumLe tue domande sono molto interessanti anche per altri clienti che utilizzano LogicLab per cercare di ottenere il massimo dall’ambiente. Per alcune risposte ho girato la richiesta alla Axel che è lo sviluppatore di LogicLab, anzi consiglio di effettuare direttamente a loro le richieste che riguardano l’ambiente di sviluppo. Ma alcune risposte le posso dare direttamente.
I programmi LD realizzati con il vecchio editor continuano ad utilizzare il vecchio stile, non hanno le nuove funzionalità abilitate.
In LD ogni ramo logico deve avere almeno un coil di terminazione, solitamente definisco una variabile Dummy di tipo BOOL che utilizzo come coil in tutti i rami. Proprio come hai fatto correttamente tu.
Legare lista variabili e diagramma, attualmente è come hai detto tu nella domanda, ho girato la richiesta ad Axel.
Per l’ultima domanda mi sono rifatto a questo vecchio topic, ho ripreso il programma FBArray e ho definito due programmi ladder dove utilizzo lo stesso FB. Quando trascini nella finestra di watch una variabile interna alla FB, LogicLab ti presenta una finestra di richiesta della istanza di cui vuoi vedere il valore (Screenshot). Allego il progetto per il download.
Sergio Bertana
Amministratore del forumNon commetti errori è proprio CODESYS che non permette di avere variabili RETAIN allocate in memoria specifica (Nella famiglia LogicLab esiste l’area da MD100.2048 a MD 100.4095).
Un workaround utilizzato da altri clienti è di copiare da programma l’area ad indirizzamento da terminale su di un’area RETAIN quando vi è una variazione del contenuto (Qualcuno da terminale ha cambiato i dati). Poi alla accensuione del sistema esegui l’operazione inversa.
Riporto il link a questo topic dove si trova un progetto di esempio di utilizzo di un terminale Weintek connesso a SlimLine CODESYS.
Sergio Bertana
Amministratore del forumProbabilmente hai un progetto di vecchio tipo (Estensione prj) (Topic) ed utilizzi una libreria di nuovo tipo (Estensione plclib). Questo lo puoi fare solo forzando la mano, dalla finestra Project library list anzichè selezionare la libreria (LogicLab ti presenta solo quelle con estensione pll) tu definisci manualmente la libreria eLLabUtyLib_C030.plclib.
Consiglio di non includere nel progetto la libreria eLLabUtyLib, perchè contiene oggetti tra di loro eterogenei che si utilizzano importando l’oggetto direttamente nel progetto (Topic).
Febbraio 1, 2016 alle 9:05 am in risposta a: Chiarimenti sulle nuove funzionalita’ di LogicLab4 #39316Sergio Bertana
Amministratore del forumHai individuato perfettamente come fare, i progetti con la vecchia estensione ppjs vanno salvati con la nuova estensione plcprj per poter utilizzare le nuove features.
Quando crei un nuovo progetto solo scegliendo XTarget 12.0 avrai di default il salvataggio del progetto con estensione plcprj, con tutti gli altri targets LogicLab utilizzerà ancora il formato ppjs. Quindi se devi fare un nuovo progetto con un vecchio target devi per forza salvarlo nel vecchio formato e poi per trasformarlo nel nuovo lo devi aprire e salvare con la nuova estensione.
Non vi sono problemi di compatibilità il nuovo formato plcprj è perfettamente compatibile con tutti i targets, LogicLab4 utilizza i files di configurazione delle vecchie versioni di LogicLab per i targets precedenti al XTarget 12, ed ecco perchè di default salva nel formato ppjs.
Sergio Bertana
Amministratore del forumLa porta seriale RS485 opera solo in Half-Duplex su 2 fili, ma da quanto mi dici sembra di capire che il tuo protocollo è comunque un protocollo di questo tipo. Un sistema invia una stringa di 8/12 carattteri e tu devi interpretarla e poi rispondere.
Intanto la porta RS485 pùo operare in diversi modi (Vedi FB SysSerialPort, estratto manuale), per operare con la RS485 devi impostare COM2. Il parametro DTRManagement definisce il modo in cui la porta opera, impostando DTR_AUTO_WO_TIMES, la porta è sempre in ricezione, ed andrà automaticamente in trasmissione quando viene eseguita una scrittura di dati su di essa.
Da programma è possibile acquisire i dati in ricezione con le funzioni Sysfgetc e Sysfread, mentre per trasmettere i dati dovrai usare le funzioni Sysfputc e Sysfwrite. Naturalmente per interpretare la stringa ricevuta dovrai realizzare un piccolo programma che buffera i dati in ricezione, poi li interpreta, ed infine invia la risposta.
Il forum è pieno di esempi di questo genere puoi guardare qui, qui, qui, qui.
Gennaio 29, 2016 alle 4:53 pm in risposta a: Bridge between 2 Modbus RTU devices over ethernet LAN #39314Sergio Bertana
Amministratore del forumThe OSCAT library is a source of informations, often i take a look on it, but I prefer to write the FBs by myself, about the Modbus you can use our FBs (In this topic you can find them).
About the PHPToModbus program (It can be reached here), and about the PHP class it uses the Modbus TCP protocol…
Don’t make confusion between RTU and TCP. The Modbus TCP frame starts with 6 bytes of additional data (Transaction Identifier, Protocol Identifier, Length) and after it’s exactly the same frame that Modbus RTU without the final 2 bytes of CRC (Please refer to this manual).
Gennaio 29, 2016 alle 4:05 pm in risposta a: Acquisizione temperatura e storicizzazione in file di log #39312Sergio Bertana
Amministratore del forumPer acquisire le Pt100 devi giustamente come hai scritto utilizzare il FB SysGetAnInp definendo il modoi di acquisizione coerente con il tuo tipo di sonda, in questo topic trovi altre indicazioni. Nel topic il FB è utilizzato in ladder ma lo puoi utilizzare anche in ST (Vedi in questo topic come fare).
Per salvare i dati su di un file puoi gestire il file con le funzioni classiche Sysfopen, Sysfseek, Sysfwrite, Sysfread, ecc… poi il file scritto sarà accessibile da una connessione FTP Topic.
In alternativa puoi utilizzare il FB StringToLogFile, che esegue tutte queste operazioni in modo autonomo. Nel forum ci sono esempi di utilizzo del file system prova con il cerca, ti rimando a questo topic per un esempio.
In merito al simulatore, sul simulatore si possono testare solo le funzioni di gestione logica, per le analogiche è ritornato un valore numerico che è indipendente dal modo di acquisizione. Non è possibile sul simulatore testare le funzioni di accesso ai files. In questo topic un progetto che permette di testare sul simulatore il FB di gestione PID, credo possa essere un buon punto di partenza.
Gennaio 28, 2016 alle 8:42 am in risposta a: Registrazione dati su variazione stato variabili #39310Sergio Bertana
Amministratore del forumIntanto dovendo registrare la variazione di stato di più variabili BOOL se vuoi utilizzare la registrazione su base trigger devi creare una variabile BOOL di trigger sullo SlimLine. La variabile trigger deve dare l’impulso di trigger ogni volta che cambia stato una o più delle variabili che vuoi registrare.
Ma attenzione la lettura delle variabili da parte del terminale è abbastanza lenta (Più di 1 secondo) quindi le tue variabili BOOL verranno viste dal pannello solo se la loro variazione di stato perdura per almeno un paio di secondi. Se hai variabili che cambiano di stato molto velocemente puoi registrane la variazione solo agendo con un programma sullo SlimLine.
Trovi ulteriori informazioni sulla registrazione dati in questo topic, o in questo topic.
Sergio Bertana
Amministratore del forumI blocchi funzioni vanno sempre istanziati…
Istanziare un oggetto (Nel nostro caso un blocco funzione) vuol dire creare l’oggetto assegnandogli un nome ed una posizione di memoria prendendo come riferimento un modello presente nella libreria.
Il blocco funzione RS come vedi dall’estratto del manuale si trova nella libreria eLLabStdLib_B100, quindi per poterlo utilizzare lo devi importare nel tuo progetto e poi lo devi istanziare. Per importare un oggetto occore selezionare la libreria in cui si trova l’oggetto (Screenshot) e poi importarlo (Screenshot). Il blocco funzione RS ora è parte integrante del tuo progetto, volendo organizzare meglio l’albero del progetto puoi creare una cartella FBs con dentro i blocchi funzioni importati e/o da te realizzati (Troverai questo nel progetto che allego).
Ora nel programma ST dovrai istanziare l’oggetto creando una variabile (Esempio MyRS) di tipo RS e potrai così utilizzare la variabile nel tuo programma, ecco lo screenshot del programma in funzione sul simulatore, allego programma sorgente.
Gennaio 27, 2016 alle 4:22 pm in risposta a: Bridge between 2 Modbus RTU devices over ethernet LAN #39307Sergio Bertana
Amministratore del forumThe two SlimLine models MPS046 (Starting from version B) and MPS053 are both capable to run the TCPServer and TCPClient FBs. About the program memory dimension on the MPS053, it’s true it normally has half space of the MPS046 but now it’s possible to extend the memory to the same dimension of the MPS046. You must buy a DID code (The ordering code and price will be added shortly to our site).
The CODESYS version of the SlimLine has raffly the same functionality of the LogicLab version, also for it you can find the TCPServer and TCPClient FBs. If you use two CPU modules both equipped with ethernet connection, you can exchange data between them by using Modbus TCP directly on ethernet without any serial converter.
On this topic you will find a modbus RTU implementation, but it can be easily modified to use modbus TCP. On this topic a program that allow to access to the SlimLine by PHP script. The Modbus TCP client is native in the SlimLine LogicLab.
Gennaio 27, 2016 alle 12:54 pm in risposta a: Bridge between 2 Modbus RTU devices over ethernet LAN #39305Sergio Bertana
Amministratore del forumYes, two ATC-1000 converters can be configured to work paired, one, must be set as a TCP server, the other must be set as a TCP client. In the TCP client, the IP address of the server must be defined. The two Powerline adapters work as an ethernet cable, so the RTU serial packets received by one ATC converter are sent out from the other ATC conveter and viceversa.
But a suggestion, it could be better to use an ethernet version of SlimLine PLC, so in this way you can connect it directly to the Powerline and using the TCPServer FB it can directly receive the data from the ATC-1000 configured as a client. Or by using the TCPClient FB it can send the data directly to the ATC-1000 configured as a server.
Sergio Bertana
Amministratore del forumL’elettronico che c’è in te credo sia attratto dalla funzione SysI2CWrRd, che permette di gestire qualsiasi dispositivo I2C standard connesso al bus di estensione del modulo CPU.
In questo modo è possibile gestire dispositivi I2C commerciali in ambiente CODESYS, analogamente a quanto hanno fatto alcuni ns Clienti con l’ambiente LogicLab.
In questo topic la gestione di un display alfanumerico. In questo topic la gestione di un lettore RFiD. In questo topic la gestione di motori stepping.
Sergio Bertana
Amministratore del forumL’eccezione DAT_ABORT (Data abort) si ha quando si tenta di accedere ad un indirizzo di memoria non esistente.
Giustamente come fai notare tu il programma sviluppato dall’utente è allocato dopo l’indirizzo 0x60000, agli indirizzi riportati nel file di log corrispondono funzioni del sistema operativo. Se hai la versione SFW184B000 ad indirizzo 0x000052C4 è allocata la funzione memcpy che è richiamata dalla funzione Sysmemmove, mentre ad indirizzo 0x000055E0 è allocata la funzione memset che è richiamata dalla funzione Sysmemset.
Queste funzioni operano con dei puntatori, in generale attenzione quando si usano puntatori se l’indirizzo caricato nel puntatore è sabagliato si può incorrere in questo tipo di eccezione.
Aggiungo inoltre che magari tu non stai usando direttamente queste funzioni ma utilizzi una funzione e/o un blocco funzione che a sua volta utilizza queste funzioni.
Sergio Bertana
Amministratore del forumIl router VPN eWon permette già l’accesso a tutti i dispositivi interni alla rete quindi configurandolo opportunamente tramite la sua VPN è possibile raggiungere sia il pannello operatore che il PLC. Non è necessario attivare l’EasyAccess sul terminale per questo.
L’EasyAccess serve proprio ad evitare l’utilizzo della VPN e del router eWon. Basta che il cliente abbia una connessione ad Internet e tramite l’EasyAccess è possibile passare attraverso il firewall del cliente e raggiungere il pannello operatore da Internet anche se la connessione del cliente non prevede IP pubblico.
Utilizzando il Pass-Trough è possibile configurare l’accesso sia al PLC Siemens che, semplicemente modificando l’indirizzo IP definito nel Pass-Trough, raggiungere qualsiasi altro dispositivo IP presente nella rete dal pannello operatore.
Sergio Bertana
Amministratore del forumProbabilmente il cliente non ha fatto una ricerca nel forum, perchè proprio in risposta al P.S. in questo topic c’è quello che richiede. Ed in molti altri topics può trovare suggerimenti per rispondere alla sua domanda. Ma visto che è meglio avere un esempio in più che in meno, ho preparato un esempio che comprende sia il programma sullo SlimLine per la acquisizione della Pt1000 che il programma sul terminale per la visualizzazione.
SlimLine
Ho realizzato un programma in FBD che utilizza il FB SysGetAnInp per acquisire la temperatura da una sonda Pt1000 (Screenshot). Come si vede l’acquisizione è effettuata dal canale “0” di un modulo acquisizione A/D con indirizzo “0”. Il valore acquisito in gradi centigradi è appoggiato nella variabile Temperature di tipo REAL che è allocata nella DB100 ad indirizzo 60.HMI
Nel progetto per comodità ho utilizzato un MT8050iE connesso in ethernet con lo SlimLine, per usare un MT6050iE occorrerà configurare una connessione seriale in alternativa alla connessione ethernet (Screenshot). Per la visualizzazione ho inserito due oggetti. Visualizzazione numerica per visualizzare il valore numericamente (Screenshot). Grafico angolare per visualizzare uno strumento virtuale (Screenshot).Come si vede dagli screenshots l’indirizzo Modbus è 40030, questo si calcola partendo dall’indirizzo della variabile (Allocata a indirizzo 60 della DB100) dividendolo per 2 e sommando 40000 (Topic). Allego il progetto con il programma SlimLine ed il programma HMI, ricordo che il programma HMI si può simulare sul PC con EasyBuilderPro (Download progetto).
-
AutorePost