Vai al contenuto
PLC Forum


Comunicazione Ethernet plc-pc


Messaggi consigliati

Inserito:

Salve a tutti, sto utilizzando Visual Studio 2015 con Drive di comunicazione x PLC Micro850 AB.

Funziona con C# ma vorrei usare un progetto di VB per poter utilizzare anche la logica vero/falso, qualcuno puo' indicarmi il codice per la comunicazione ethernet?

 

Grazie


Inserita:
Quote

vorrei usare un progetto di VB

 

Sin tratta di VB o VB.NET?

Con VB.NET non ci dovrebbero essere grossi problemi a ricompilare il sorgente C#, bastano pochi aggiustamenti.

Inserita:

VB.NET con VC# non c'entrano proprio niente e ci vogliono di piu di "pochi aggiustamenti" ....partendo dalla sintassi , ai casting e a tutto il resto 

Inserita:

Valter, non ci sei proprio: VB.NET e C# sono talmente affini che i testi di MS (che sono vangelo essendo MS l'autore dei 2 linguaggi) ti fanno sempre gli esempi nei 2 linguaggi, proprio per mostrarne le affinità.

E' VB che ha poco a che spartire con C# ed anche con VB.NET

Inserita:

Livio , lascia fare non offenderti ma con questi oggetti ci gioco da un bel pò e se mi permetto di dire una cosa lasciamela dire e fidati che non la dico cosi tanto per dire a caso.

Ti manderò un bel libro sul core della .NET e capirai tante cose, che C# è il linguaggio principe e che non sono la stessa cosa , VB.NET rimane ancora sopra per l'interpretazione.Altro linguaggio degno di nota al livello di VB.NET e forse piu è Python 

I linguaggi C# e java hanno degli affini per la sintassi e per molte cose ma anche li ci sono diversità fondamentali.

Se devi fare un'applicazione con finestrelle , dataset , DB etc è veloce ed utile usare Vb.net magari ma per tutto il resto non sono la stessa cosa

Per capirlo devi sbatterci la testa in lavori di un certo livello e di una certa difficoltà.

Con C# puoi implementare molte cose da molti anni come XNA , reflection , reverse engineering etc .VB.net non le supporta

Non si tratta solo di compilare in IL per la CLR , ci sono altri limiti in VB.net che ovviamente se programmi ad un certo livello applicativo di larga scala non puoi capire ne tantomeno prevedere. Questo te lo dico da anni , se poi vuoi credere in quello che dici libero di farlo ,a me non cambia niente .

I libri che citi tu li ho tutti fin dal 2002 quando uscii ed acquistai la prima  .NET 

VB 6 non c'entra nulla con C# e VB.NET  è ovvio . Il framework .NET è stato concepito dopo ricopiando la JVM , infatti molti progettisti sono gli stessi che hanno scritto il delphi , java e c# . Tra C# e VB.NET a parte le librerie comuni del framework ......c'e' un abisso .

Chiedi il parere a qualche informatico esperto di livello 2 anche in ambiente industriale e ti dirà le stesse cose .

Il codice non è per nulla scambiabile , la sintassi è totalmente diversa , VB.net non fa i casting perchè se ne occupa l'interprete per esempio e molte altre cose.

Quando lavori a livelli bassi di framework si lavora con C# non con VB.net he puo comunque essere usato perche piu veloce e meno ostico di un linguaggio fortemente tipizzato come c# o java .A sto punto rpeferisco python a vb e a vb.net .

I libri avanzati con un certo senso di impegno trattano solo c# o vb.net , quelli di partenza giusto per farti imparare gli assembly piu importanti li fanno in doppio linguaggio per gestire tabelle, finestre etc .

Anni fa ho implementato un engine che mi eseguiva files di python al volo da una app che avevo scritto in c# , questo per impedire di dover fare sempre modifiche e ricompilare e lasciare ai programmatori interni dell'azienda la possibilità di modificare gli interessi aziendali come etichette, bolle e di conseguenze link a sql .Questo engine con VB:net non lo potevi fare perche non supportava molti oggetti del .NET , cosi come il framework per progettare e scrivere videogiochi anche in 3D , VB:net non lo supportava e no nlo supporta tuttora. ci sono dei motivi di fondo che vanno studiati e testati in un certo modo , poi capirai perche ti dico sempre le stesse cose ;)

Diciamo che a partire dal C , che ora è anche ad oggetti e mi fa schifo , al C++ dove iniziò il paradigma di linguaggio ad oggetti e/o funzionale .

Dal il C++ , per sintassi e potenzialità di ereditarietà, polimorfismo , incapsulamento , interfacce (classi virtuali ) etc etc sono nati java e C# con il controllo del framework che tramite il garbage collector si occupa di liberare la memoria , infatti il concetto di distruttore di classe non esiste ma esiste solo il costruttore , e comunque puoi implementare anche i distruttore ed occuparti in prima persona in quanto GC è asincrono e non sempre fa quello che deve bene e velocemente. Al VB.NET  come sintassi il quale deriva dal  VB come sintassi  hanno voluto creare istruzioni built.in per farlo diventare ad oggetti quando non lo è nativamente per cui ti lascio immaginare che razza di porcheria possa essere .

Se ti interessa passo da casa tua e ti spiego un po di cose ;)

Inserita:

Molto bene....allora viste le considerazioni , provo a modificare la richiesta:

utilizzo C# ,leggo e scrivo su PLC AB micro850 ma in realta' C# legge gli indirizzi come stringa .

Ora io ho la necessita' di poter utilizzare anche logica booleana, es: quando dopo aver attivato un bit a tempo tramite pulsante del Form, alla fine del conteggio,che e' nel plc, il pulsante deve ritornare nella modalita' non attivo.

Inserita:

che cosa usi per scrivere sul plc ?  Un opc server ?  Una libreria nativa ? Cosa?

Devi creare almeno due aree di memoria nel plc , una che scrive e l'altra che legge.

Scrivi un bit che attiva il timer nel plc e poi leggi lo stato dello stesso per fare quello che vuoi nel pc 

Ovviamente un'applicazione con un minimo di fondamenta deve implementare diversi threads, mutex , deve essere ben sincronizzata 

Dopodichè per poter estendere le funzionalità devi saper implmentare qualche design pattern.Per evitare di creare oggetti che necessitano di altri oggetti all'interno degli stessi , puoi creare una classe statica come globale all'interno della quale dichiarare gli oggetti che ti servono con relativi metodi e poi tramite delegati ed eventi li utilizzi dove ti servono 

La logica booleana con C# o VB.net non è un problema , esistono vari tipi di dati , metodi etc .Puoi anche crearti i tuoi tipi di dati con classi che contengono metodi specifici che puoi riutilizzare ovunque e sempre , che puoi specializzare , estendere etc 

Inserita:

uso i drive di comunicazione e funzionano,questo e' il sistema 

 

namespace WindowsFormsApplication2
{
  

    public partial class MANUALE : Form
    {
        EthernetIPforMicro800Com MyAB = new EthernetIPforMicro800Com();


    public MANUALE()
        {
            InitializeComponent();
            MyAB.IPAddress = "192.168.1.11";


        }

    private void button1_Click(object sender, EventArgs e)
        {
            // MyAB.Write("T_TEMPO", input.Text);
            MyAB.Write("times_luce", set_t_luce.Text);
            // string Rev"80" = input.Text;
            //string REV_PROJECT = MyAB.Read("REV_PROJECT");
            // textBox2.Text = REV_PROJECT;
            // MyAB.Write("REAL_APP_Copy_1", input.Text);
            // textBox1.Text = MyAB.Read("REAL_APP_Copy_1");

        }

        // conversione risultato stringa in bool


        

        ///---------------------------------------------------------------///

     
    private void timer1_Tick(object sender, EventArgs e)
        {

            textBox1.Text = MyAB.Read("_IO_EM_DO_00");
            //LETTURA TEMPERATURA
            C.Text = MyAB.Read("_IO_X2_AI_00");
            //LETTURA PRESSIONE
            BAR.Text = MyAB.Read("_IO_X2_AI_01");
            //LETTURA PRESSIONE CALDAIA
            BAR_C.Text = MyAB.Read("_IO_X2_AI_02");
            //LETTURA PESATURA
            KG.Text = MyAB.Read("_IO_X2_AI_03");


          

        }

il mio problema attualmente e' una volta letto lo stato " MyAB.Read("_IO_EM_DO_00")", mettere a zero lo stato del pulsante nel form che ha attivato la funzione 

     private void P_Luce1_CheckedChanged_1(object sender, EventArgs e)
        {
            MyAB.Write("_IO_EM_DO_00", 1);
        }

Inserita:
Quote

Livio , lascia fare non offenderti ma con questi oggetti ci gioco da un bel pò e se mi permetto di dire una cosa lasciamela dire e fidati che non la dico cosi tanto per dire a caso.

 

Walter lascia stare che questi linguaggi li uso dallo loro nascita, ho ancora tutti i CD della prima versione della suite MS (anno 2000).

Quindi se ti ho scritto quello che ho scritto l'ho fatto a ragion veduta.

Addurittura nella prina versione della visual suite era presente, nel wizard di creazione del progetto, anche il tool di conversione automatica da VB.NET a C#.

Poi dipende sempre da come usi i vari oggetti e se miri alla massima compatibilità o alla massima efficienza.

Quote

Il framework .NET è stato concepito dopo ricopiando la JVM , infatti molti progettisti sono gli stessi che hanno scritto il delphi , java e c#

 

Che ci siano gli stessi progettisti almeno in parte è abbastanza probabile, come è vero che C# è stato il tentativo di MS di prendersi una fetta del mercato di java.

Comunque non devo chiedere a nessuno basta consultare i manuali di MS che posseggo, assieme ai testi Mondadori che hanno l'imprimatur ufficiale di MS.

 

Che poi tu ci creda o meno a me non è che mi procuri piacere o dispiacere, oramai sono abbondantemente al di sopra di certe cosucce.:smile:

 

Ora però chiudo l'OT altrimenti dovrei autosanzionarmi.;)

Inserita:

pensala come vuoi .

A me non cambia nulla 

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...