Issue
Distinguishing whether an xDriver-enabled commport on a controller is set for Modbus RTU or Modbus TCP/IP.
Environment
CX9900, CX9940
CX9680
bCX4040
Cause
How does one know if the xDriver-enabled commport on a controller is for Modbus RTU or Modbus TCP/IP?
Resolution
Open the controller editor and go to the Options tab.
At a minimum the Modbus RTU XDriver, like all Xdrivers, requires Bit 0 for the commport be Xdriver enabled. The most common example would look like this:
Xdrvr Commx: 00000001(####).
In the above example x = commport number.
The four digit number in parentheses indicates whether an Xdriver file is loaded into the port. If it is 0000 then no Xdriver file is loaded into the port. A number such as 4767 corresponds to "Xdriver Valid" line at the end xdriver XDR file. You can edit the XDR file with a text editor and go to the bottom to see this.
In addition to Bit 0 being enabled for the commport, the Modbus TCP/IP Xdriver requires Bit 3 to be Xdriver enabled. A common example of this would look like this:
Xdrvr Commx: 00000009(####).
The 00000009 is in hexadecimal format - converting this to an 8-bit binary number you get 00001001. The furthest right bit is Bit 0 and the 4th from the right is Bit 3. Both are set to 1 which means they are Xdriver enabled. For a further explanation see page 15 of the linked Modbus TCP/IP Xdriver User Guide.
Note: Since Bit 0 is enabled in both of the above examples, the Modbus RTU Xdriver will work on either. But only the second example will load the Modbus TCP/IP Xdriver.