News:

SMF - Just Installed!

Main Menu

Problemas comunicación modbus con openPLC

Started by jocasae, July 31, 2026, 02:00:00 PM

Previous topic - Next topic

jocasae

Buenas,

estoy intentando comunicar openPLC v4 con Machines Simulator v.4.5.7 a través de modbus. Para ello he configurado un servidor modbus en openPLC (ver serverModbus.jpeg). En machines en configurado el modBusDriver, según la captura adjunt,a pero al iniciarlo me aparece un error de Microsoft.Net Framework (error_NET_framework.jpg), del cual adjunto el detalle a continuación.

Ha conseguido alguien comunicar openPLC con MS?.

Un saludo y gracias por adelantado.

EasyPLC_Master

Parece que la configuración de IPs no es correcta.
Si todo lo estás ejecutando en el mismo PC, también debes poner la IP 127.0.0.1 en el driver de Machines Simulator.
Si son equipos diferentes, la IP del servidor no es correcta.

jocasae

Hola,

están en equipos diferentes, openPLC está en una VM con IP 192.168.10.201 y MS en el host con IP 192.168.10.254.

Adjunto las configuraciones.

Y este es el log del error:

Consulte el final de este mensaje para obtener más detalles sobre cómo invocar a la depuración
Just-In-Time (JIT) en lugar de a este cuadro de diálogo.

************** Texto de la excepción **************
Modbus.SlaveException: Se produjo una excepción de tipo 'Modbus.SlaveException'.
Function Code: 130
Exception Code: 11 - Specialized use in conjunction with gateways, indicates that no response was obtained from the target device. Usually means that the device is not present on the network.
   en Modbus.IO.ModbusTransport.UnicastMessage[T](IModbusMessage message)
   en Modbus.Device.ModbusMaster.ReadDiscretes(Byte functionCode, Byte slaveAddress, UInt16 startAddress, UInt16 numberOfPoints)
   en Modbus.Device.ModbusMaster.ReadInputs(Byte slaveAddress, UInt16 startAddress, UInt16 numberOfPoints)
   en Nirtec.ExternalDriver.ModBusDriver.ReadAllDigitalInputs()
   en ␂.␃(Object ␂, EventArgs ␃)
   en System.Windows.Forms.Timer.OnTick(EventArgs e)
   en System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
   en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Ensamblados cargados **************
mscorlib
    Versión del ensamblado: 4.0.0.0
    Versión Win32: 4.8.9325.0 built by: NET481REL1LAST_25H2_C
    Código base: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
ExternalDriversManager
    Versión del ensamblado: 1.2.0.0
    Versión Win32: 1.2.0.0
    Código base: file:///C:/Nirtec/Machines%20Simulator%204/Drivers/ExternalDriversManager.exe
----------------------------------------
System
    Versión del ensamblado: 4.0.0.0
    Versión Win32: 4.8.9333.0 built by: NET481REL1LAST_25H2_B
    Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
    Versión del ensamblado: 4.0.0.0
    Versión Win32: 4.8.9325.0 built by: NET481REL1LAST_25H2_C
    Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Versión del ensamblado: 4.0.0.0
    Versión Win32: 4.8.9221.0 built by: NET481REL1LAST_25H2
    Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
ExternalDriver
    Versión del ensamblado: 1.3.0.0
    Versión Win32: 1.3.0.0
    Código base: file:///C:/Nirtec/Machines%20Simulator%204/Drivers/ExternalDriver.DLL
----------------------------------------
System.Configuration
    Versión del ensamblado: 4.0.0.0
    Versión Win32: 4.8.9221.0 built by: NET481REL1LAST_25H2
    Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
    Versión del ensamblado: 4.0.0.0
    Versión Win32: 4.8.9319.0 built by: NET481REL1LAST_25H2_B
    Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
    Versión del ensamblado: 4.0.0.0
    Versión Win32: 4.8.9221.0 built by: NET481REL1LAST_25H2
    Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
ModBusDriver
    Versión del ensamblado: 1.7.0.0
    Versión Win32: 1.7.0.0
    Código base: file:///C:/Nirtec/Machines%20Simulator%204/Drivers/ModBusDriver.DLL
----------------------------------------
Modbus
    Versión del ensamblado: 1.11.0.0
    Versión Win32: 1.11.0.0
    Código base: file:///C:/Nirtec/Machines%20Simulator%204/Drivers/Modbus.DLL
----------------------------------------
log4net
    Versión del ensamblado: 1.2.10.0
    Versión Win32: 1.2.10.0
    Código base: file:///C:/Nirtec/Machines%20Simulator%204/Drivers/log4net.DLL
----------------------------------------
Unme.Common
    Versión del ensamblado: 1.1.0.0
    Versión Win32: 1.1.0.0
    Código base: file:///C:/Nirtec/Machines%20Simulator%204/Drivers/Unme.Common.DLL
----------------------------------------
mscorlib.resources
    Versión del ensamblado: 4.0.0.0
    Versión Win32: 4.8.9032.0 built by: NET481REL1
    Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_es_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Windows.Forms.resources
    Versión del ensamblado: 4.0.0.0
    Versión Win32: 4.8.9032.0 built by: NET481REL1
    Código base: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_es_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** Depuración JIT **************
Para habilitar la depuración Just In Time (JIT), el archivo de configuración de esta
aplicación o equipo (machine.config) debe tener el
valor jitDebugging establecido en la sección system.windows.forms.
La aplicación también se debe compilar con la depuración
habilitada

Por ejemplo:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

Cuando esté habilitada la depuración JIT, cualquier excepción no controlada
se enviará al depurador JIT registrado en el equipo
en lugar de controlarlo mediante el cuadro de diálogo.

EasyPLC_Master

Por el mensaje, parere que la comunicación funciona.

Las razones principales por las que OpenPLC lanza este error 0x0B (11) son:
1. El ID de Esclavo (Slave Address / Unit ID) es incorrecto

Revisa qué Slave Address has configurado en el driver. En OpenPLC, por defecto suele ser 1 (MS usa el 0)

2. Dirección de memoria (Start Address) fuera de rango

Estas intentando leer/escribir I/Os no declaradas. Revisa cuántas entradas digitales intenta leer el driver y desde qué dirección. Si pide 8 entradas y OpenPLC solo tiene mapeadas 4, OpenPLC rechazará la solicitud.

3. OpenPLC está en STOP o no tiene un programa subido

Si el motor de OpenPLC (OpenPLC Runtime) está en estado de paro (STOP) o no tiene compilado y corriendo un programa con asignación de E/S (%IX), el servicio Modbus responderá con una excepción al consultar registros inexistentes.

Para verificar el diver puedes probar con un cliente Modbus genérico (como Modbus Poll o QModMaster). No podemos darte soporte de la parte de OpenPLC.