ModbusMaster
Aplicación independiente de Windows que admite los protocolos Modbus RTU
, TCP
, UDP
, RTUoverTCP
, RTUoverUDP
, ASCIIoverRTU
, ASCIIoverTCP
y ASCIIoverUDP
.
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)
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 ModbusSlaveSimulation (consulte el vídeo más abajo)
Una alternativa fácil de usar sería el software AdvancedHMI, ya que es altamente funcional y gratuito.
Captura de pantalla
Funcionalidad
- Lea los comentarios dentro del formulario y también pase el mouse sobre las etiquetas para obtener sugerencias.
- Sin direccionamiento compensado (donde xxxxx va desde 00000 hasta 65534):
- Bobinas = 0xxxxx
- Entradas discretas = 1xxxxx
- Registros de entrada = 3xxxxx
- Registros de tenencia = 4xxxxx
- Además de
Int16
, que es una dirección de registro únicamente sin modificador, esta aplicación también admite:- Modificadores
U
, F
, L
, UL
y S
(que se utilizan para UInt16
, Float32
, Int32
, UInt32
, String
)
- Se agregó soporte para valores de 64 bits: Float64, Integer64 con y sin signo:
- Utilice modificadores
FQ
, LQ
y UQ
(donde Q
significa palabra cuádruple)
- Se agregó un soporte experimental para valores de 128 bits: Integer128 con y sin signo:
- Utilice modificadores
LO
y UO
(donde O
significa Octa Word)
- También admite lectura/escritura de bits/caracteres:
- seleccione bits/caracteres consecutivos dentro de un solo elemento o el bit/carácter individual exacto de cada uno de los múltiples elementos
- Se requerirá un valor único o el número exacto de valores separados por comas para escribir si Número
Points
> 1
- Para protocolos basados en RTU, en una sola PC, esta aplicación puede utilizar la ayuda de:
- El programa com0com de Windows para proporcionar pares de puertos serie virtuales
- TextBox adicional permite la entrada manual del puerto serie, diseñado para Linux, por lo que se puede acceder a los pares de puertos virtuales tty0tty, como
/dev/tnt0
<=> /dev/tnt1
- Este cuadro fue eliminado en la versión Mac Mono.
- La biblioteca admite
Masked Bit Write
, código de función 22 (0x16H o FC22) - La aplicación también incluye el código integrado para dispositivos esclavos que no son compatibles con
FC22
:- Esto implica un proceso de
read-modify-write
que puede llevar un poco de tiempo y podría sobrescribir los valores que cambiaron durante su ejecución.
IMPORTANTE: Tenga cuidado al intentar escribir cualquier valor en el PLC.
Uso
-> Para Windows
- Utilice los archivos ejecutables de Windows de la carpeta
exe
o siga las instrucciones a continuación para compilarlo 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:
- Crear/Crear solución (o presionar 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 preferida o en el Escritorio
-> 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 instalar paquetes
mono
y mono-basic
- Descargue y extraiga el archivo zip de este proyecto y ubique el archivo zip 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 en la terminal sea más rápida.
- Abra la terminal, navegue hasta la carpeta y escriba:
sudo mono ModbusMaster.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 utilizar pares de puertos virtuales tty0tty, mientras que en Mac las versiones posteriores de OS X parecen tener pseudo terminales: pares de dispositivos como
/dev/ptyp3
<=> /dev/ttyp3
Nota para usuarios de Mac: esto se probó en una vieja computadora iMac G5 PowerPC 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 en el modo de lectura automática. 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 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.