Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Salve a tutti, avrei bisogno di fare comunicare un PLC con il PC. Pensavo di fare una app in VB. La comunicazione deve essere Modbus, 4word in lettura dal PLC e 4 word in scrittura. La app riesco a scriverla, ma non so come implementare la comunicazione Modbus. Qualche consiglio? Grazie
10 anni fa, ho scritto dei software che usavano il protocollo MODBUS, però erano in VB6.
Ho trovato l'esempio da cui ero partito, il modulo MODBUS ti potrebbe dare una base di partenza.
Vedi allegato.
Grazie Carlo
Ho guardato un po , e sinceramente non ci ho capito molto .
Stavo pensando , in rete si trova molta documentazione ma prevalentemente in C#.
Visto che l'applicazione è quasi banale , ricevo 4 valori , li elaboro , li rispedisco , stavo pensando di usare C#, non lo conosco , ma non dovrebbe essere un grosso problema fare quello che mi serve .
Opinioni ?
Se conosci VB.Net, il passaggio a C# è indolore.
Devi solo vedere come si scrivono i for, gli if e gli operatori logici, fatte due prove resta tutto chiaro. Anche le parentesi graffe non sono un problema, da visual studio 2017 in poi le graffe sono indendate e collegate da un tratteggio che evita di dover andare a contare quante ne sono, non da ultimo se vai con il cursore sopra ad una graffa appare un tooltip che ne indica la corrispondenza. Con la tastiera Italiana la graffa chiusa } si scrive con i tasti Shift + Alt Gr + ] e la graffa aperta { con Shift + Alt Gr + [
Diverso il discorso della conversione dei tipi, se in VB .Net programmavi senza Option Strict On, tutte le conversioni dei tipi venivano fatte dal compilatore (conversione implicita). In C# tutte le conversioni dei tipi devono essere gestite dal programmatore (conversione esplicita).
Potresti convertire i programmi in C# in VB .Net, ma te lo sconsiglio, visto che VB .Net non è più supportato nei nuovi Framework, il lavoro che spenderesti per convertire e poi far funzionare il tutto in VB .Net non avrebbe nessuna utilità futura. Mentre se impari a comprendere la sintassi C#, ti sarà utile anche in futuro.
Imparare la sintassi di C#, non ti farà diventare un programmatore C/C++, ma ti farà leggere e capire semplici programmi scolastici scritti anche in questi linguaggi.
Attenzione, sono della vecchia scuola e i miei programmi hanno un'approcio procedurale, da non prendere ad esempio, se non nello specifico delle routine contenute o per la sintassi.
Ultima modifica effettuata da Carlo il 13/12/2021 alle 13:02
Continuo qui , anche se sto cercando di cambiare da VB a C#.
Ho guardato un poco in rete , ho installato easymodbus e ho provato a fare quello che dovrei fare . Ovviamente non funziona .
Il programma è semplice, in un form c'è una label , una textbox e un button.
Il testo della label lo leggo dal modbus , mentre il valore che imposto nel textbox lo dovrei mandare al plc quando premo il tasto .
Quando lancio il dubug non mi trova il dispositivo slave .
La configurazione del dispositivo slave è l'unica cosa di cui sono sicuro.
Codice sorgente - presumibilmente C#
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.Windows.Forms;
usingEasyModbus;
namespace EroElectronic
{
publicpartialclass Form1 : Form
{
double temperatura;// dichiaro la variabile per leggere la temperatura dallo strumento
double setpoint;// dichiaro la variabile per il valore di setpoint
Grazie Thejuster Il baudrate l'ho settato nello strumento a 19200. Quello che non so è il bit di stop, nelle configurazioni dello strumento non è indicato.
Ho provato a cambiare il baudrate , e anche lo StopBits, il risultato non cambia.
Alla riga 32 " temperatura = ModbusClient.ConvertRegistersToInt(EroElectronic.ReadHoldingRegisters(0, 1)); "
mi da sempre l'errore "System.TimeoutException:'No Response from Modbus Slave'"
Qualche consiglio?
Grazie