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.
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.
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.
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.