mbtoday
2008-07-15 01:40:04 UTC
I believe there is an error under Communication Settings on the following reference manual page,
<a href="http://zone.ni.com/reference/en-XX/help/371361D-01/lvdialog/dsc_config_modbus_instance/" target="_blank">http://zone.ni.com/reference/en-XX/help/371361D-01/lvdialog/dsc_config_modbus_instance/</a>
For "Address", it states "Specifies the address of this instance of the Modbus I/O server. "
I believe this is incorrect. I think Address specifies the address of the one, and only one, Modbus slave device that this server instance will communicate with.
All of my testing is with RS-485 in 2-wire mode using a NI PCI-8433/4 RS-458 board, and NI/DSC 8.5.1. I have 12 Watlow temperature controllers on Com 3, and it works ok with 12 instances of the Modbus I/O server configured with the 12 different Watlow device addresses. At first it was not reliable - giving bad status and quality warnings mixed in with good quality data. I concluded that each instance is stand-alone, each spawned at about the same time at lvlib deployment time, and all in contention for the serial port at the same time, stepping all over each other and causing timeouts. I then set a slightly different refresh rate on each instance, instead of the default 1 second rate. For example, 1.1 seconds, 1.2, 1.3, 1.4, etc. so that in general, the likelihood of two master instances attempting to communicate at the same time will be much reduced. This works great, giving solid data.
As far as I can tell, the DSC Modbus I/O server is one to one - one instance of the server code, connected to one slave device. Multiple instances of the server module can be created, but there is no attempt to create a true Modbus master that can handle multiple slave devices on the same communication channel.
Please tell me I'm wrong and that the DSC Modbus master, or any other version of the Modbus master, CAN deal with this.
Thanks,
Mike
<a href="http://zone.ni.com/reference/en-XX/help/371361D-01/lvdialog/dsc_config_modbus_instance/" target="_blank">http://zone.ni.com/reference/en-XX/help/371361D-01/lvdialog/dsc_config_modbus_instance/</a>
For "Address", it states "Specifies the address of this instance of the Modbus I/O server. "
I believe this is incorrect. I think Address specifies the address of the one, and only one, Modbus slave device that this server instance will communicate with.
All of my testing is with RS-485 in 2-wire mode using a NI PCI-8433/4 RS-458 board, and NI/DSC 8.5.1. I have 12 Watlow temperature controllers on Com 3, and it works ok with 12 instances of the Modbus I/O server configured with the 12 different Watlow device addresses. At first it was not reliable - giving bad status and quality warnings mixed in with good quality data. I concluded that each instance is stand-alone, each spawned at about the same time at lvlib deployment time, and all in contention for the serial port at the same time, stepping all over each other and causing timeouts. I then set a slightly different refresh rate on each instance, instead of the default 1 second rate. For example, 1.1 seconds, 1.2, 1.3, 1.4, etc. so that in general, the likelihood of two master instances attempting to communicate at the same time will be much reduced. This works great, giving solid data.
As far as I can tell, the DSC Modbus I/O server is one to one - one instance of the server code, connected to one slave device. Multiple instances of the server module can be created, but there is no attempt to create a true Modbus master that can handle multiple slave devices on the same communication channel.
Please tell me I'm wrong and that the DSC Modbus master, or any other version of the Modbus master, CAN deal with this.
Thanks,
Mike