ModbusSlaveSimulación
Aplicación independiente de Windows que admite los protocolos Modbus RTU, TCP, UDP y ASCIIoverRTU para simulación.
También se incluyen sus versiones Mono para Linux y Mac OS X, estas son versiones VB Net por lo que:
- Para Linux tendrás que instalar los paquetes
mono-complete
y mono-vbnc
- Mac puede ser diferente dependiendo de la versión de OS X, tal vez instale paquetes
mono
y mono-basic
Si hay un firewall habilitado, es posible que le solicite que permita que esta aplicación se comunique en la red:
- Normalmente se le debe permitir comunicarse en la red privada, de lo contrario podría no funcionar correctamente.
- No permita el acceso público a menos que sepa lo que está haciendo
- Una vez finalizada la prueba, recuerde eliminar esta aplicación de la lista de aplicaciones permitidas del firewall.
La aplicación está diseñada para permitir ejecutar múltiples instancias de la aplicación al mismo tiempo, por ejemplo:
- Utilice el mismo protocolo para cada instancia pero con diferentes números de puerto, similar a:
- IP 127.0.0.1 Puerto TCP 501 e IP 127.0.0.1 Puerto TCP 502
- Utilice una combinación de diferentes protocolos con la ayuda de otras herramientas (como com0com para el protocolo RTU en Windows)
La aplicación debe atender solicitudes de cualquier ID de esclavo Modbus válida.
Todo esto se basa en bibliotecas nModbus .NET 3.5 modificadas, Copyright (c) 2006 Scott Alexander:
- Estos se incluyen como recurso para la versión de Windows pero están separados para la versión Mono.
Diseñado para ser utilizado como una herramienta de prueba rápida:
- Se puede probar con su homólogo ModbusMaster (consulte el vídeo más abajo)
- O tal vez utilice el software AdvancedHMI, ya que es altamente funcional y gratuito.
Captura de pantalla
Funcionalidad
- Todos los valores se pueden configurar antes de que se establezca la conexión: bobinas, entradas discretas, registros de entrada, registros de retención.
- La vista de cuadrícula de datos está configurada para mostrar inicialmente 20 filas de direcciones, pero se puede cambiar en el menú desplegable
Row Count
para mostrar más o todas las filas si es necesario. - En la vista de cuadrícula de datos, seleccionada con el menú desplegable
I/O Address Range
, haga doble clic en el valor para cambiarlo:- Los valores booleanos cambiarán entre 0 y 1
- Los valores Uint16 requieren un valor entero sin signo entre 0 y 65535
- Las entradas discretas y los registros de entrada brindan acceso
read-only
a la aplicación maestra:- El dispositivo MODBUS designado como
Master
SÓLO puede enviar solicitudes para leer estos valores - Estos valores deben ser manipulados por el usuario directamente en el simulador, de lo contrario no cambiarán.
- Las bobinas y los registros de retención brindan acceso
read/write
a la aplicación maestra:- El dispositivo MODBUS designado como
Master
puede enviar solicitudes para leer estos valores, así como enviar solicitudes para modificar estos valores. - Estos valores también pueden ser manipulados por el usuario directamente en el simulador si es necesario.
- Para protocolos
RTU
y ASCIIoverRTU
, en una sola PC, este simulador puede utilizar la ayuda de:- Programa com0com para Windows para proporcionar pares de puertos serie virtuales
- Programa tty0tty para Linux para proporcionar pares de puertos serie virtuales
- TextBox adicional permite la entrada manual del puerto serie:
- Diseñado principalmente para Linux, por lo que se puede acceder a esos pares de puertos virtuales
tty0tty
, como /dev/tnt0
<=> /dev/tnt1
- Este cuadro fue eliminado en la versión Mac Mono.
- La biblioteca también admite escritura de bits enmascarados, código de función 22 (0x16H o FC22).
Uso
-> Para Windows
- Utilice archivos ejecutables de Windows desde la carpeta
exe
o siga las instrucciones a continuación para crearlo usted mismo:- Descargue e instale la edición comunitaria de Visual Studio (idealmente 2019).
- Descargue y extraiga el archivo zip de este proyecto.
- Abra esto como un proyecto existente en Visual Studio y, en el menú, haga:
- Construir/Construir solución (o presione Ctrl-Shift-B).
- Depurar/Iniciar depuración (o presione F5) para ejecutar la aplicación.
- Localice el archivo EXE creado en la carpeta
/bin/Debug
y cópielo en su carpeta o escritorio preferido
- Para probar protocolos RTU, utilice com0com para crear puertos serie virtuales.
-> Para Mono
- Asegúrese de que Mono esté instalado en su computadora:
- Paquetes
mono-complete
y mono-vbnc
para Linux - Para Mac es posible que necesites experimentar, tal vez paquetes
mono
y mono-basic
- Descargue y extraiga el archivo zip de este proyecto y ubique el archivo Mono en la carpeta
Mono
. - Extraiga 4 archivos y potencialmente cambie el nombre de la carpeta y/o archivo exe recién creado a algo más corto si lo desea (solo para hacer que la navegación del terminal sea más rápida).
- Abra la terminal, navegue hasta la carpeta y escriba:
sudo mono ModbusSlaveSimulation.exe
:- En Mac, es posible que tengas que cambiar a la cuenta
su
superusuario.
- Para probar los protocolos RTU, en Linux es posible instalar y usar puertos virtuales tty0tty, mientras que en Mac las versiones posteriores de OS X parecen tener pseudo terminales: pares de dispositivos como
/dev/ptyp3
y /dev/ttyp3
.
Nota para usuarios de Mac: esto se probó en una computadora iMac G5 PowerPC antigua con Mono v2.10.2. Se presentó algún comportamiento extraño en el sentido de que la aplicación estaba perdiendo el foco, interrumpiendo así la comunicación TCP continua. Hay un cuadro de texto con una X roja en el que puedes hacer clic para intentar mantener el foco (si haces algo más después, haz clic en él nuevamente). Como no puedo probarlo de ninguna otra manera, te queda a ti experimentar.
Video
Modbus.TCP.Comunicación.mp4
Licencia
Con licencia MIT; consulte también el archivo README.txt dentro de la carpeta Recursos.
Marcas registradas
Todas y cada una de las marcas comerciales, ya sea directa o indirectamente mencionadas en este proyecto, pertenecen a sus respectivos propietarios.
Recursos útiles
El foro del sitio web AdvancedHMI, que es otro proyecto de código abierto.