Vai al contenuto

Esecuzione routines software sui terminali touch screen

Home Forum Terminali operatore (Weintek) Esecuzione routines software sui terminali touch screen

Stai visualizzando 6 post - dal 1 a 6 (di 6 totali)
  • Autore
    Post
  • #34868
    Antonino
    Partecipante

    Volevo 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.

    #36471
    Sergio Bertana
    Amministratore del forum

    All’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

    #36474
    Antonino
    Partecipante

    Si 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 ?

    #36475
    Sergio Bertana
    Amministratore del forum

    Le 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.

    #36477
    Antonino
    Partecipante

    Il 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. ?

    #36478
    Sergio Bertana
    Amministratore del forum

    Si è 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.

Stai visualizzando 6 post - dal 1 a 6 (di 6 totali)
  • Devi essere connesso per rispondere a questo topic.