C # HMI in tempo reale (Human Machine Interface)

0

Mi sono imbattuto in una discussione sulla programmazione in tempo reale su questo sito che sembrava avere delle buone intuizioni. Vorrei avere le tue opinioni sul mio prossimo progetto.

Ho intenzione di scrivere un HMI C # per una macchina che esegue un ciclo produttivo di circa 30 secondi. Ci sarebbero alcune funzioni di configurazione che avrebbero bisogno di guardare in tempo reale all'operatore, ma la parte importante è il ciclo di produzione. Nel ciclo di produzione, il più possibile, il controllore legge direttamente tutti gli ingressi e controlla i servomotori e le uscite in base ai parametri caricati prima del ciclo. Se la risposta in tempo reale scade tra i cicli, nessun problema.

Il mio piano è di avere una discussione che legge lo stato dal controller e può inviare comandi al controller se necessario, ma evita qualsiasi cosa, come l'aggiornamento dello schermo, che potrebbe bloccarne l'esecuzione. Un timer che ottiene informazioni sullo stato dal thread, quindi aggiorna le informazioni sullo schermo e visualizza le caselle dei messaggi di errore secondo necessità. La discussione originale risponderà ai controlli sullo schermo. Mi aspetto che sia necessario un qualche tipo di oggetto di sincronizzazione per controllare il passaggio dei dati dal thread al timer. Come ho capito C # il timer avrebbe condiviso il tempo con il thread originale e potrebbe bloccare la sua esecuzione. Non sono sicuro se ciò potrebbe accadere o se sarebbe buono o cattivo?

Quali problemi vedi in questo piano, che cosa dovrei cercare, in qualsiasi posto posso guardare il lavoro di altre persone, e c'è un modo migliore?

BTW: Non compro molti biglietti della lotteria e non bevo molto alcolici, quindi spostarmi in montagna e allestire un fermo non è ancora un modo migliore per me.

Grazie per il tuo tempo

Sono d'accordo che C # non darà mai vero tempo reale. Sto solo chiedendo come le persone fanno il meglio di ciò che C # può fare.

    
posta user1221579 10.03.2015 - 04:50
fonte

1 risposta

4

Posso dirti con certezza che non realizzerò mai in tempo reale (e dubito seriamente che tu possa fare soft in tempo reale) con C # e l'ambiente .NET standard.

Sviluppo sistemi di ispezione di visione artificiale utilizzando C # e abbiamo scaricato tutti i requisiti in tempo reale per la tracciabilità del prodotto e l'ingresso del sensore, ecc. su un PLC (in particolare un soft-PLC in tempo reale B & R)

Ciò che troverai se tenti di fare in tempo reale con .NET è che all'improvviso ci sarà una quantità di tempo in cui il tuo sistema sta semplicemente facendo "niente". Ciò è dovuto principalmente alla raccolta dati obsoleti in .NET, ma può anche essere dovuto a un numero qualsiasi di attività di Windows sottostanti in corso in background (gestione del disco, controllo degli aggiornamenti, ecc.). Ci riferiamo affettuosamente a questo come "Windows si lecca da solo". Come un cane che lecca il suo ... errr .... sé, non sta facendo nulla di utile, ma quello che sta facendo è più importante di quello che vuoi che faccia.

    
risposta data 10.03.2015 - 04:59
fonte

Leggi altre domande sui tag