Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumCerto che è possibile, naturalmente dovrai agire sulle stesse variabili da entrambe le istanze Modbus, in pratica da Mobus RTU la tua schedina scrive/legge le stesse variabili che sono scritte/lette da Modbus TCP/IP.
Se prendiamo ad esempio la variabile UINT DB 100.16 (Address Modbus 40008) potrai scrivere il valore da Modbus RTU e leggerlo da Modbus TCP/IP e viceversa.
Se la tua schedina può operare come slave Modbus RTU puoi anche utilizzare l’FB ModbusTCPGateway (Topic) per accedervi da Modbus TCP/IP.
Sergio Bertana
Amministratore del forumHo provato a verificare il funzionamento dell’esempio con Google Chrome e funziona correttamente. Il punto che tu indichi AJAXSendRequest(b) è una funzione javascript di richiesta pagina HTM (La pagina richiesta è quella indicata nella chiamata).
La funzione viene eseguita automaticamente ogni 3 secondi body onLoad=”setInterval(‘AJAXSendRequest(‘Values.htm’)’, 3000)”, e come vedi viene richiesta la pagina Values.htm che deve essere nella stessa cartella della pagina AjaxPage.htm.
Tu hai trasferito nella cartella Storage entrambe le pagine HTM ?
AJAX non è altro che una tecnica di richiesta pagine al server HTTP (Tramite la funzione AJAXSendRequest) che si comporta come un browser, alla ricezione della pagina viene eseguita la funzione SetupValues a cui è passato il contenuto della pagina richiesta PContent.
La pagina Values.htm contiene Tags che saranno valorizzare con i valori, se tu provi ad aprire la pagina Values.htm da un browser riceverai i 3 valori separati dal simbolo “|”.
Sergio Bertana
Amministratore del forumL’ambiente CODESYS ha sicuramente dalla sua il fatto di essere utilizzato da diversi costruttori di PLC e quindi dispone di maggiori fonti di informazioni. L’ambiente LogicLab pur avendo come ambiente di sviluppo nulla da invidiare al CODESYS 2 (Anzi per alcune cose lo preferisco) è presente su PLC e drivers di alcuni costruttori che a differenza di CODESYS non ne enfatizzano l’utilizzo.
Ecco quindi il nostro maggiore sforzo documentativo su questo ambiente che offre buone possibilità ma dove le fonti di informazioni sono molto ridotte. Tra le altre cose ricordo che LogicLab importa i files scritti in ST di CODESYS (Topic).
Ad oggi CODESYS ha dalla sua la possibilità di operare anche come client TCP cosa che nei sistemi programmabili da LogicLab è ancora in fase di sviluppo. Mentre non ci sono problemi ad operare come server TCP.
Altro vantaggio di CODESYS è la disponibilità del WebVisu (Topic), su LogicLab abbiamo le pagine web dinamiche (Topic).
Sergio Bertana
Amministratore del forumCerto che è possibile gestire le comunicazioni seriali nel modo che più ti aggrada, dopo avere aperto la porta con la funzione Sysfopen disponi di un file pointer che puoi utilizzare nelle funzioni:
Sysfgetc, get character from file,
Sysfputc, put character to file,
Sysfread, read data from file,
Sysfwrite, write data to file,
Ecc…Il problema è il Modbus TCP che sulla CPU CODESYS non è nativo ma devi cotruirti e/o cercare su Internet un gestore. Se invece utilizzi la versione SlimLine per LogicLab hai le stesse identiche funzioni ed in più hai anche disponibile il supporto di 3 server Modbus TCP.
Per la versione LogicLab puoi trovare nel forum molti esempi applicativi, semplice programma echo, sambio dati seriale/UDP, semplice convertitore Ethernet/Seriale. Ma usando il search nel forum troverai molti altri esempi in codice sorgente. Tutti gli esempi per LogicLab possono comunque essere adattati all’ambiente CODESYS.
Sergio Bertana
Amministratore del forumThe answer is in the previous posts if you use the Virtual COM you can use any Ethernet to serial converter (ATC-1000 is the cheapest). For Wireless communication if you use the WiFi you can use any WiFi to serial converter, with a Virtual COM (I suggest the ATC-1000WF).
Febbraio 10, 2015 alle 3:08 pm in risposta a: Eseguire Ping di un indirizzo IP per testare comunicazione #38714Sergio Bertana
Amministratore del forumMolte volte per ripristinare il funzionamento di un sistema non presidiato, ove possibile, viene eseguito un reboot dell’intero sistema SlimLine che se tramite le sue uscite logiche alimenta i dispositivi di connessione di rete (Switches, Routers, Access point WiFi , ecc) può gestire anche lo spenimento e la riaccensione degli stessi.
Questa funzione definita Ping reboot, garantisce tramite lo spegnimento e la riaccensione di tutti i dispositivi di ripristinare il funzionamento nel caso di blocchi accidentali. Anche se il sistema SlimLine è già di per se controllato dal suo circuito di Watchdog integrato.
Come si vede dalla stampa del programma nel caso di più di 3 errori di Ping consecutivi viene incrementato un contatore di reboot NrOfRestarts (Variabile allocata in DB 100.2048 che è una zona RETAIN). Dopo 1 secondo dall’incremento della variabile viene eseguito un loop WHILE infinito che fà intervenire il circuito di Watchdog che resetta in modo hardware il sistema disattivando tutte le uscite (Topic). Il sistema poi riparte in modo autonomo (Non ci deve essere LogicLab connesso).
La pausa di 1 secondo è stata inserita per dare tempo al sistema operativo di salvare l’area RETAIN in modo da avere NrOfRestarts salvato (Download programma sorgente).
Sergio Bertana
Amministratore del forumJust a remark for people who has experience in PLC programming at a paragonable cost to the Ethernet to serial converter it’s possible to use our SlimLine ARM7 Compact Ethernet with the DataStreamExch (Manual abstract) (See topic with source program), or ModbusTCPGateway (Manual abstract) (See topic with source program) FBs it’s possible to have both the type of converters.
Sergio Bertana
Amministratore del forumThe ATC-3001 communicates in the same manner but operates a protocol translation. So the equipment connected to the ethernet communicates with the Modbus TCP protocol and the module converts it to Modbus RTU or Ascii to the serial line and vice versa. As you see in this topic unfortunately the converter doesn’t manages the node ID between modbus TCP to RTU/AScii so it’s not possible to create a daisy chain connection on the RS485 serial line.
To conclude this report if you connect to the meters by using a Virtual COM you can use any Ethernet to serial converter, your software uses the modbus RTU protocol over the Virtual COM and it’s possible to have a daisy chain on a RS485 network.
If you want to eliminate the Virtual COM (To avoid any possible compatibility problems) it’s possible connect to the Ethernet to serial converter in TCP mode (Only if your software allows this), but in this case, specially for the SCADA softwares you have to use the Modbus TCP protocol, and so it must be used a Modbus gateway module as ATC-3001 and it’s not possible to have a daisy chain on a RS485 network.
Sergio Bertana
Amministratore del forumAll the Ethernet to Serial Converters (and which we distribute also) are able to work in several different ways, usually they are configurable by a web browser. The Wireless to serial converters work in the same way, the ATC-1000WF has a web interface the ATC-2000WF no.
Server: They accept an TCP/IP connection on a dedicated TCP port (It’s possible to define which) and when a client connect to them all the characters received by this connection are sent to the serial line and vice versa.
Client: You must define to which IP server and TCP port it has to connect, ad when a character is received by the serial line it connects to the server and sends the received character to int and vice versa.
UDP: A TCP connection is made by the UDP protocol and the converter acts as a Client/Server. This is a faster communication way but you must define the IP address of the UDP server and so it’s difficult to use through Internet connection.
All of them have a Virtual COM program that install a serial COM in your PC, so you just open the communication on this port and dialogue with it exactly as a standard COM port. Pay attention: unfortunately the virtual COM software has compatibility problem and the TCP/IP communication introduces some delay that can compromise the modbus communication. The only way to know if your program work well is to test.
Sergio Bertana
Amministratore del forumIl pannello è Master CAN quindi puoi caricare i file EDS dei dispositivi slave (Puoi impostare i soli PDO).
Anche la serie eMT3000 utilizza EasyBuilder Pro, quindi non vi sono problemi nell’importare i progetti sviluppati per le altre serie di terminali. Parti dal progetto importato e poi aggiungi la parte di gestione inverter.
Sergio Bertana
Amministratore del forumHere the answers.
1. All the catalogs, program tools, program examples, are on the site, it’s possible to freely download them by registering.
2. The product is a Programable Logic Controller and can be programmed using the 5 languages of the IEC-61131 norm through CODESYS. As a suggestion, you can find similar products in the SlimLine family more cheaper, they are programmable trough the LogicLab instead of CODESYS.
3. In this forum you can find a lot of applications, mostly of them are written in Italian but all have the source code downloadable and usually the comments in the source code are in English.
4. The product manages up to 16 extension modules the modules can have up to 48 logic I/Os each.
5. The module has Ethernet connection and supports TCP/IP protocol. It has also embedded servers for Telnet, FTP and HTPP.
6. The choice of the Internet connection depend only by your needs. You can connect through ADSL, UMTS, WiFi, Satellite.
7. What do you mean exactly for cloud support, you can connect the system to web services located on the cloud. Some examples in PHP are available on the forum for the LogicLab products but the two families are very similar.
8. Yes sure there are some examples how to write CSV files on the forum (See topic, topic).
9. The FTP server is available.
10. You can write your own program that access directly to SQL server, or as some customer make, the program dialogues with a web application (Written in ASP or PHP) that interfaces to SQL server.
11. Yes sure CODESYS uses the WebVisu environment (See topic).
12. The operating system is multitasking.
Sergio Bertana
Amministratore del forumLogicLab ad ogni compilazione ritorna le informazioni relative all’impiego di memoria del programma compilato, ecco un esempio:
Code size: 72E0h ( 28 KByte)
Free code space: 10D10h ( 67 KByte)Indica che il programma compilato stà utilizzando circa 28 KBytes e rimangono 67 Kbytes di memoria codice libera. La memoria libera varia in funzione del dsispositivo che utilizzi. I modelli Compact dispongono di metà memoria CODE rispetto ai modelli normali. Naturalmente più righe di programma scrivi più utilizzi memoria.
Data space: 2000h ( 8 KByte)
Free data space: 197Ah ( 6 KByte)Indica che il programma compilato stà utilizzando circa 2 KBytes e rimangono 6 Kbytes di memoria DATA libera, più variabili allochi più utilizzi memoria DATA. La memoria DATA ha la stessa dimensione su tutti i dispositivi sia normali che Compact. Ricordo che oltre a questi 8 KBytes di memoria DATA tutti i dispositivi hanno 4 KBytes aggiuntivi di memoria DATA accessibile come DB 100, di questi 2 KBytes sono ritentivi.
Retain data space: 3E8h ( 0 KByte)
Free retain data space: 3E8h ( 0 KByte)Indica che il programma non stà utilizzando la memoria RETAIN e quindi rimangono 1000 bytes di memoria libera. La memoria RETAIN ha la stessa dimensione su tutti i dispositivi sia normali che Compact. Questa area di memoria viene utilizzata ogni volta che definisci attributo RETAIN su una variabile.
NOTA: Per quanto riguarda le FB ogni istanza della stessa FB utilizza nuova memoria in area DATA ma è utilizzata una sola volta la memoria in area CODE per contenere il codice della FB.
Sergio Bertana
Amministratore del forumNella Guida connessioni PLC è riportato il protocollo Lenze e un po di tempo fà un cliente mi ha accennato alla connessione con un inverter Lenze ma sinceramente non riesco più a ricordare chi fosse il cliente per eventualmente chiedere informazioni.
Se utilizzi la connessione in RS485 ed hai sul PC una porta RS485 (Eventualmente puoi utilizzare un convertitore USB-Seriale) puoi provare con il programma EasyBuilder Pro a fare un semplice progetto e simularlo direttamente sul PC (Senza terminale) testando se funziona il protocollo di comunicazione.
Per la comunicazione in CAN invece devi utilizzare la serie eMT3000 ed in questo caso il test è possibile solo disponendo del terminale.
Gennaio 31, 2015 alle 10:26 am in risposta a: Visualizzazione ore di funzionamento ed allarmi su HMI #38705Sergio Bertana
Amministratore del forumLa tua soluzione dimostra come vi siano diverse soluzioni allo stesso problema, tu per fare il contaore hai scomodato Timer e Counter. Sinceramente ti consiglio di utilizzare la soluzione vista nel post precedente, utilizzando una semplice operazione di somma con la base tempi di 1 secondo già fornita dal sistema operativo (Ecco lo screenshot).
Se la struttura HMIVars è allocata come credo nella DB100 per essere accessibile da Modbus ma ad indirizzi inferiori al 2048, si trova in un’area che non è ritentiva, quindi alla accensione del sistema riparte da “0”. In merito al valore massimo conteggiabile devi fare riferimento al range indicato per ogni tipo di variabile (Vedi tabella).
Come vedi se la variabile HMIVars.Tempo è di tipo UINT il suo valore massimo è 65535 quindi poco più di 18 ore poi si azzera e riparte a contare da “0”. Se è di tipo UDINT (Ti consiglio questo) il suo valore massimo è 4294967295 poco più di 136 anni. Naturalmente per leggere una variabile UDINT (32 bits) da Modbus dovrai leggere due registri a 16 bits consecutivi.
Sergio Bertana
Amministratore del forumQuello che fai è corretto, è un normale cast di una variabile, unica accortezza è controllare che il valore massimo che assume la variabile REAL dopo i calcoli non superi il valore che può essere espresso in una variabile UINT (65535).
Nel tuo caso il massimo può essere 10.0*16.0*100.0=16000.
Ma se fai tutte le operazioni così come mi scrivi il compilatore non deve dare nessuna warning e la conversione deve funzionare come vedi dal mio screenshot. Non è che la variabile WORD è allocata in memoria ad un indirizzo che non è divisibile per 2.
-
AutorePost