Esecuzione routines software sui terminali touch screen
Home › Forum › Terminali operatore (Weintek) › Esecuzione routines software sui terminali touch screen
- Questo topic ha 5 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 15 anni, 2 mesi fa da
Sergio Bertana.
-
AutorePost
-
Marzo 2, 2010 alle 5:35 pm #34868
Antonino
PartecipanteVolevo sapere se è possibile sviluppare un applicativo con un altro linguaggio tipo C++ o Pascal da far girare in background (senza grafica tipo un servizio) per ricevere dati dalle porte seriali e scrivere nel database per poter poi inviare i dati al PLC.
Marzo 3, 2010 alle 5:22 pm #36471Sergio Bertana
Amministratore del forumAll’interno di un programma EasyBuilder è possibile scrivere programmi utilizzando il potente editor di macro. Il linguaggio utilizzato nelle macro è molto simile al linguaggio C, e tramite le macro è possibile operare sulle variabili del terminale e/o gestire un protocollo di comunicazione. Le macro possono essere eseguite a tempo o su eventi come pulsanti e/o altri oggetti grafici. E’ possibile eseguire il download del manuale di riferimento. A titolo di esempio riporto una semplice macro che permette l’invio di una stringa di interrogazione (Comando reading holding registers) Modbus sulla porta seriale e riceve la stringa di risposta.macro_command main() char command[32], response[32] short address, checksum short read_no, return_value, read_data[2] FILL(command[0], 0, 32) //command initialization FILL(response[0], 0, 32) //response initialization command[0]=0x1 //station no command[1]=0x3 //function code : Read Holding Registers address=0 HIBYTE(address, command[2]) LOBYTE(address, command[3]) read_no=2 //read 2 words (4x_1 and 4x_2) HIBYTE(read_no, command[4]) LOBYTE(read_no, command[5]) CRC(command[0], checksum, 6) LOBYTE(checksum, command[6]) HIBYTE(checksum, command[7]) // Send out a “Read Holding Registers” command OUTPORT(command[0], “MODBUS RTU Device”, 8) // Read responses for a “Read Holding Registers” command INPORT(response[0], “MODBUS RTU Device”, 9, return_value) if return_value > 0 then read_data[0] = response[4] + (response[3] << 8)// data in 4x_1 read_data[1] = response[6] + (response[5] << 8)// data in 4x_2 SetData(read_data[0], “Local HMI”, LW, 100, 2) end if end macro_command
Marzo 4, 2010 alle 7:54 am #36474Antonino
PartecipanteSi avevo visto la presenza di macro (guardando il manuale sembrano anche molto potenti), ma ho necessità di scrivere routine piu complesse di un invia/ricevi di semplici caratteri e poi dovrebbero essere eseguite molto frequentemente.
L’esecuzione delle macro è sincrona con il resto dell’HMI o gira in un thread separato ?
Per esempio se faccio una macro che impiega circa 5 secondi il resto dell’HMI continua ad essere eseguito o si blocca fino al termine della macro ?
Comunque dovrebbe essere possibile sviluppare e far eseguire applicativi autonomi sul pannello e poi metterlo in comunicazione con l’HMI tramite connessione ethernet/tcp/ip in localhost o sbaglio ?
Marzo 4, 2010 alle 9:24 am #36475Sergio Bertana
Amministratore del forumLe macro girano in thread separati dal resto della applicazione, quindi anche se l’esecuzione della macro si blocca per un certo periodo il resto del pannello continua a funzionare.
Ricordo che nelle macro è solo possibile come si evince dal manuale operare sulle variabili interne al pannello operatore e gestire cominicazioni su porta seriale, non sono previste gestioni di sockets TCP/IP.
Marzo 4, 2010 alle 11:19 am #36477Antonino
PartecipanteIl fatto che giri in un thread separato è ottimo, però a pagina 45 del manuale “Macro Reference” mi sembra di capire che posso inviare/ricevere dati su connessione socket, ovviamente l’HMI è client.
Un’ulteriore domanda, è possibile inviare un segnale di break sulla linea seriale RS232 (COM2) e gestire i segnali RTS, CTS, ecc. ?
Marzo 4, 2010 alle 1:42 pm #36478Sergio Bertana
Amministratore del forumSi è vero, le funzioni INPORT ed OUTPORT possono ricevere ed inviare dati su qualsiasi dispositivo configurato, quindi come è visibile nel manuale “Macro Reference” è possibile configurare anche un socket (Indirizzo IP e porta) ed operare su di esso. Lo scopo di queste funzioni è proprio di potere realizzare protocolli ad hoc per adattarli a qualsiasi prodotto commerciale.Inviare un segnale di break sulla seriale, equivale a poter gestire le linee di controllo RTS, CTS, ecc., questo non è possibile tramite le macro.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.