Witte Software® https://www.modbustools.com

2019-09-29

1. Modbus Slave

Modbus Slave is for simulating up to 100 slave devices in 100 windows!. Speed up your PLC programming with this simulating tools. Start programming and test before you receive your slave device from supplier. Data contained with any open document is accessible to the master application. Same user interface as Modbus Poll.

Monitoring of serial traffic. OLE Automation for interfacing with Visual Basic, Excel etc. To interpret and show the Modbus data according to your specific requirements. E.g. edit your slave data in Excel. Try the Excel example.xls included with the program.

Each window opened within Modbus Slave may be configured to represent data from the same or different slave nodes.

1.1. System requirements for Modbus Slave

Hardware requirements

Processor; 1 GHz or faster recommended
1 GB RAM
5 MB of available hard drive space
1024 x 768 display resolution

OS requirements

All Windows versions from Windows XP SP3 to Windows 10 are supported.

1.2. End User License Agreement

You should carefully read the following terms and conditions before using Modbus Slave. Unless you have a different license agreement signed by Witte Software, your use of this software indicates your acceptance of this license agreement and warranty. If you do not accept these terms you must cease using this software immediately.

Copyright.
Modbus Slave ("The Software") is copyright 2002-2019 by Witte Software, all rights reserved.

Evaluation and Registration.
This is not free software. You are hereby licensed to use the Software for evaluation purposes without charge for a period of 30 days.

If you use the Software after the 30 day evaluation period a registration fee is required.

Unregistered use of the Software after the 30-day evaluation period is in violation of U.S. and international copyright laws.

One registered copy of the Software may either be used by a single person who uses the software personally on one or more computers, or installed on a single computer used by multiple people, but not both.

For information on order and pricing, please visit https://www.modbustools.com/order.html

Modbus Slave licenses are perpetual. Once you buy a license to a specific major version, and as long as you abide by the license agreement, you can use that version forever with no additional cost.

Distribution.
Provided that you do not include your License Key you are hereby licensed to make copies of the Software; give exact copies of the original to anyone; and distribute the Software in its unmodified form via electronic means. You are specifically prohibited from charging for any such copies.

LIMITED WARRANTY.
THE SOFTWARE IS PROVIDED AS IS AND WITTE SOFTWARE DISCLAIMS ALL WARRANTIES RELATING TO THIS SOFTWARE, WHETHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

LIMITATION ON DAMAGES.
NEITHERWITTE SOFTWARE NOR ANYONE INVOLVED IN THE CREATION, PRODUCTION, OR DELIVERY OF THIS SOFTWARE SHALL BE LIABLE FOR ANY INDIRECT, CONSEQUENTIAL, OR INCIDENTAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE SUCH SOFTWARE EVEN IF WITTE SOFTWARE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR CLAIMS. IN NO EVENT SHALL WITTE SOFTWARE’S LIABILITY FOR ANY DAMAGES EXCEED THE PRICE PAID FOR THE LICENSE TO USE THE SOFTWARE, REGARDLESS OF THE FORM OF CLAIM. THE PERSON USING THE SOFTWARE BEARS ALL RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE.

2. Modbus Slave Features

2.1. Connections

Modbus Slave read/write data from devices using:

  • Modbus RTU or ASCII on RS232 or RS485 networks. (USB/RS232/485 Converter)

  • Modbus TCP/IP

  • Modbus Over TCP/IP. (Modbus RTU encapsulated in a TCP packet)

  • Modbus UDP/IP

  • Modbus over UDP/IP. (Modbus RTU encapsulated in a UDP packet)

2.2. Supported Modbus Functions

  • 01: Read coils

  • 02: Read discrete inputs

  • 03: Read holding registers

  • 04: Read input registers

  • 05: Write single coil

  • 06: Write single register

  • 15: Write multiple coils

  • 16: Write multiple registers

  • 22: Mask write register

  • 23: Read/Write registers

2.3. Display formats

Each cell can be individual formatted.

  • Signed 16 bit register

  • Unsigned 16 bit register

  • Hex

  • Binary

  • 32 bit signed integer with any word/byte order

  • 32 bit unsigned integer with any word/byte order

  • 64 bit signed integer with any word/byte order

  • 64 bit unsigned integer with any word/byte order

  • 32 bit float with any word/byte order

  • 64 bit double float with any word/byte order

2.4. Miscellaneous features

  • OLE/Automation for interfacing with Excel VB etc.

  • Monitoring of data traffic

  • Print and print preview

  • Font selection

  • Color selection

  • Save/Open workspace

3. Overview

Modbus Slave uses a multiple document interface. That means several windows can be opened. Each one with different data contents for simulation of different slave devices at the same time.

Modbus Slave Master simulator

This picture shows two open windows. One simulate 10 Holding registers from address 4000 (44001) and another simulate 10 Holding registers from address 2000 (42001).

3.1. Help from anywhere

Press F1 and get context sensitive help on a topic associated with the current selected item.

SHIFT + F1 invokes a special “help mode” in which the courser turns into a help courser (arrow + question mark). The user can then select a visible object in the user interface, such as a menu item, toolbar button, or window. This opens help on a topic that describes the selected item.

3.2. Alias cells

Here you can type any text for designation of the value cells. You can also copy/paste text from Excel cells.

3.3. Value cells

Show the data values of the Modbus registers. If you double click a value cell an input dialog box lets you enter a new value to the value cell. Typing a number in a value cell shows the input dialog as well.

Write single register

3.4. Change font

Select the cells to be changed and then right click. Or from the menu select display and then font.

Color selection

3.5. Open a new window

To open another window you have 3 options:

  • Press CTRL+N

  • Select new in the file menu

  • Press New window on the tool bar

4. Connection dialog

To open the connection dialog you have 2 options:

  • Press F3

  • Select connect from the connection menu

Connection setup

4.1. Connection

There are 5 different connection types:

  1. Serial:
    Modbus over serial line. RS232 or RS485. A USB serial converter can be used.

  2. Modbus TCP/IP:
    Select TCP/IP if you want to communicate with a MODBUS TCP/IP network. In this case, slave ID is the same as the Unit ID used in MODBUS TCP/IP.
    The port number is default 502.

  3. Modbus UDP/IP:
    Select UDP/IP if you want to communicate with a MODBUS UDP/IP network. This is the same as Modbus TCP/IP but the connection less UDP protocol is used instead.

  4. Modbus RTU over TCP/IP:
    This is a RTU message send over a TCP/IP network instead of serial lines.

  5. Modbus RTU over UDP/IP:
    This is a RTU message send over a UDP/IP network instead of serial lines.

Connection type 3-5 is not standard Modbus as specified by www.modbus.org but they are added for convenience.

Depending on your selection some other settings will be grayed.

4.2. Serial Settings

Use these parameters to set serial port settings. They are only available if connection type is “Serial Port”.

Mode

Use this option to select RTU or ASCII mode. Default RTU.

DSR

Specifies whether the DSR (data-set-ready) signal is monitored for output flow control. If this member is TRUE and DSR is turned off, output is suspended until DSR is sent again.

CTS

Specifies whether the CTS (clear-to-send) signal is monitored for output flow control. If this checkbox is enabled and CTS is turned off, output is suspended until CTS is sent again.

RTS Toggle

Specifies that the RTS line will be high if bytes are available for transmission. After all buffered bytes have been sent, the RTS line will be low.
You can use this to switch direction if you have a 232/485 converter without automatic direction switch.

The use of RTS controlled RS232/RS485 converters should be avoided if possible. It is difficult to determine the exact time when to switch off the transmitter with non real-time operating systems like Windows and Linux. If it is switched off to early characters might still sit in the FIFO or the transmit register of the UART and these characters will be lost. Hence the slave will not recognize the message. On the other hand if it is switched off too late then the slave’s message is corrupted and the master will not recognize the message.

4.3. TCP/IP Server

TCP/IP server settings are only available when use an Ethernet connection.

IP Address

Specify which IP address to listen to. This is useful if you have several network connections on your PC. Each instance of Modbus Slave can listen to a specific network. Default is local host 127.0.0.1

Any Address

Check this on if you want Modbus Slave to listen on all networks.

IgnoreUnit ID

Many PLC devices will ignore this field, and most clients default value to zero. However gateways or specialized programs can use the unit number to indicate what type of processing is desired.

Port

Server port number. Default 502

5. Slave definition

Use this command to define the data array to be defined for the active window.

To open the Slave Definition dialog you have 3 options:

  • Press F8

  • Select "Slave Definition" from the Setup menu

  • Press Definition button on the tool bar

Slave definition

5.1. Slave ID

Range 1 to 255. (MODBUS protocol specifications say 247). The value 0 is also accepted to communicate directly to a MODBUS/TCP or MODBUS/UDP device.

5.2. Function code

You can select 1 of 4 function codes.

  • 01: Read coils (0x). Accepts write functions 05 and 15

  • 02: Read discrete inputs (1x)

  • 03: Read holding registers (4x). Accepts write functions 06, 16, 22 and 23

  • 04: Read input registers (3x)

5.3. Address

Addresses in the Modbus protocol are confusing! Some protocol specifications use the protocol/message address and others use device addressing.

5.3.1. Protocol/message address

Some protocol specifications use the protocol/message address counting from 0 to 65535 along with a function code. This is also what the new Modbus specifications use. This is the address inside the message sent on the wire.

Modbus Slave use protocol/message address counting from 0 to 65535.

5.3.2. Device address

Some protocol specifications use device address/registers. Registers counts from 1. The first digit describes the function to be used. That means the device address 40101 is identified by address 100. The “4” means Holding registers and 4x registers counts from 1. And even more confusing: 4x means function code 03 and 3x means function code 04!

5.3.3. 5 digits vs. 6 digits addressing

The address format 4x counts from 40001 to 49999. The next address is not 50000. In old days 9999 addresses was enough. There are cases where 9999 is not enough. Then a zero is added. 40101 become 400101 and so on. This is called 6 digits addressing or extended addressing.

This is not a problem with Modbus Slave. 410001 become 10000. The “4” is thrown away and the rest 10001 is decremented by 1 as we count from 0 instead of 1.

5.4. Address examples

These examples show how to setup Modbus Slave if a specification use device addresses.

5.4.1. Define Holding Registers

You want to define 20 registers from device address 40011 from slave ID 2. From the “4” we know this is function 03 “Read Holding Registers”.

  • Slave ID = 2

  • Function = ”03 Read Holding Registers (4x)”

  • Address = 10 (11 minus 1)

  • Quantity = 20

5.4.2. Read Discrete Inputs

You want to Define 1000 coils from address 110201 from slave ID 5. From the “1” we know this is function 02 “Read Discrete Inputs”

  • Slave ID = 5

  • Function = ”02 Read Discrete Inputs (1x)”

  • Address = 10200 (10201 - 1)

  • Quantity = 1000

5.5. Hide alias columns

Hide all alias columns. This is convenient to make more space if they are not used.

5.6. Address in cell

If enabled, the address is also shown in the value cell like: 2000 = 00000

Address in cell

5.7. PLC Addresses (Base 1)

This option will show the addresses as device address.

PLC address

5.8. Rows

Specify the number of rows in the grid you prefer.

6. Display formats

Mark the cells to be formatted. Select one of the 28 display formats from the display menu.

6.1. Native Modbus registers

The 16 bit Modbus registers can be displayed in 4 different modes.

  • Signed

  • Unsigned

  • Hex

  • Binary

6.2. 32 bit signed integer

This combines 2 16 bit Modbus registers. It can be displayed in 4 different word/byte orders.

  • Signed integer Big-endian

  • Signed integer Little-endian

  • Signed integer Big-endian byte swap

  • Signed integer Little-endian byte swap

    Example

    Byte Order: AB CD (Big-endian)
    The decimal number 123456789 or in hexadecimal 07 5B CD 15
    Order as they come over the wire in a Modbus message: 07 5B CD 15

6.3. 32 bit unsigned integer

This combines 2 16 bit Modbus registers. It can be displayed in 4 different word/byte orders.

  • Unsigned integer Big-endian

  • Unsigned integer Little-endian

  • Unsigned integer Big-endian byte swap

  • Unsigned integer Little-endian byte swap

    Example

    Byte Order: AB CD (Big-endian)
    The decimal number 123456789 or in hexadecimal 07 5B CD 15
    Order as they come over the wire in a Modbus message: 07 5B CD 15

6.4. 64 bit signed integer

This combines 4 16 bit Modbus registers. It can be displayed in 4 different word/byte orders.

  • Signed integer Big-endian

  • Signed integer Little-endian

  • Signed integer Big-endian byte swap

  • Signed integer Little-endian byte swap

    Example

    Byte Order: AB CD EF GH (Big-endian)
    The decimal number -1,234,567,890,123,456,789 or in hexadecimal EE DD EF 0B 82 16 7E EB
    Order as they come over the wire in a Modbus message: EE DD EF 0B 82 16 7E EB

6.5. 64 bit unsigned integer

This combines 4 16 bit Modbus registers. It can be displayed in 4 different word/byte orders.

  • Unsigned integer Big-endian

  • Unsigned integer Little-endian

  • Unsigned integer Big-endian byte swap

  • Unsigned integer Little-endian byte swap

    Example

    Byte Order: AB CD EF GH (Big-endian)
    The decimal number 1,234,567,890,123,456,789 or in hexadecimal 11 22 10 F4 7D E9 81 15
    Order as they come over the wire in a Modbus message: 11 22 10 F4 7D E9 81 15

6.6. 32 bit floating

This combines 2 16 bit Modbus registers. It can be displayed in 4 different word/byte orders.

  • Float Big-endian

  • Float Little-endian

  • Float Big-endian byte swap

  • Float Little-endian byte swap

    Example

    Byte Order: AB CD (Big-endian)
    The floating point number 123456.00 or in hexadecimal 47 F1 20 00
    Order as they come over the wire in a Modbus message: 47 F1 20 00

6.7. 64 bit double

This combines 4 16 bit Modbus registers. It can be displayed in 4 different word/byte orders.

  • Double Big-endian

  • Double Little-endian

  • Double Big-endian byte swap

  • Double Little-endian byte swap

    Example

    Byte Order: AB CD EF GH (Big-endian)
    The floating point number 123456789.00 or in hexadecimal 41 9D 6F 34 54 00 00 00
    Order as they come over the wire in a Modbus message: 41 9D 6F 34 54 00 00 00

7. Save/Open Workspace

If you open many related Modbus windows it is convenient to save a snapshot of the current layout of all open and arranged Modbus Windows in one workspace.

A workspace (*msw) is a file that contains display information and file names of all open windows. Not the actual contents. To do this, go to File→ Save Workspace.

When you open a workspace file, Modbus Slave opens all Modbus Windows and displays them in the layout that you saved.

8. Communication traffic

Select the menu Display→Communication to show the traffic on the serial line or Ethernet cable. Use the stop button to temporary stop the update for inspection.

Use the copy button to copy selected line to the clipboard.

This window show only data sent and received by Modbus Slave. You can’t use it as a data sniffer.
Leave this window open while doing other commands.

9. OLE/Automation

Automation (formerly known as OLE Automation) makes it possible for one application to manipulate objects implemented in another application.

An Automation client is an application that can manipulate exposed objects belonging to another application. This is also called an Automation controller.

An Automation server is an application that exposes programmable objects to other applications. Modbus Slave is an automation server.

That means you can use any program that supports VBA (Visual Basic for Applications) such as Visual Basic, Excel etc. to interpret and show the modbus data according to your specific requirements.

9.1. Excel example

You should display the Developer tab or run in developer mode when you want to write macros.

9.1.1. Excel 2007

Excel developer tab

  1. Click the Microsoft office button and then click Excel options.

  2. Click popular and then select the show Developers tab in the ribbon check box.
    Note the ribbon is part of the Microsoft fluent user interface.

9.1.2. Excel 2010

  1. Click on the file tab.

  2. Click options. Excel Options window will open.

  3. On the left pane click Customize Ribbon.

  4. On the right pane, under Main Tabs, check the Developer check box.

  5. Click OK. The Developer tab should now show in the ribbon (right most tab).

9.1.3. Excel sample code

This example opens a window simulating Holding registers.
Modbus Slave is hidden but you can show it by uncomment the “ShowWindow” line. This will show one of the windows.

An example is also included with the Modbus Slave installation.
Start → All Programs → Modbus Slave → Excel Example

Excel VBA Example
Public doc As Object
Public app As Object
Dim status As Integer
Dim n As Integer


Private Sub StartSlave_Click()
   ' Create an application object. You can only create 1 application object
   Set app = CreateObject("Mbslave.Application")

   ' Create a new Modbus Slave document (Data Window)
   ' This is the same as open a new data window in Modbus Slave
   ' You can create up to 50 Modbus Slave documents (Data Window)
   Set doc = CreateObject("Mbslave.Document")

   ' Show Modbus Slave
   ' res = doc.ShowWindow()

   ' Create doc2 if needed.
   ' Set doc2 = CreateObject("Mbslave.Document")

   ' Set one of 5 connection types.
   app.Connection = 1 ' Modbus TCP/IP

   ' TCP/IP settings.
   ' No need to set IP address. We listen to any address. (Default).
   app.ServerPort = 502
   app.IPVersion = 4

   ' Open the connection.
   res = app.OpenConnection()
   Range("D5").Value = res

   res = doc.SetupHoldingRegisters(1, 100, 8)
   doc.SRegisters(0) = 1     ' Modbus address 100
   doc.SRegisters(1) = -10   ' Note that the Index used counts from 0
   doc.URegisters(2) = 50000 ' no matter the Mo0dbus address used.
   doc.URegisters(3) = 60000
   doc.Longs(4) = 10000      ' A long takes 2 registers
   doc.Floats(6) = 123.45    ' A float takes 2 registers
   ' Now a master can read 8 Holding registers with a mix of 3 data types

End Sub

9.2. Connection Functions/Properties

The following properties and functions do the same as you setup in the connection dialog (F3).

9.2.1. Connection

Connection selects the desired connection. A serial port or one of the Ethernet connections can be selected.

Property Connection as Integer

Valid values

0 = Serial port
1 = Modbus TCP/IP
2 = Modbus UDP/IP
3 = Modbus ASCII over TCP/IP
4 = Modbus ASCII over UDP/IP

Example
Connection = 0

9.2.2. BaudRate

Applicable only for Connection = 0

Property BaudRate as Long

Valid values

300
600
1200
2400
4800
9600 (Default)
14400
19200
38400
56000
57600
115200
128000
256000
460800
921600

Example
BaudRate = 9600

9.2.3. DataBits

Applicable only for Connection = 0

Property DataBits as Integer

Valid values

7
8 (Default)

Example
DataBits = 8

9.2.4. Parity

Applicable only for Connection = 0

Property Parity as Integer

Valid values

0 = None
1 = Odd
2 = Even (Default)+

Example
Parity = 2

9.2.5. StopBits

Applicable only for Connection = 0

Property StopBits as Integer

Valid values

1 (Default)+ 2

Example
StopBits = 1

9.2.6. SerialPort

Applicable only for Connection = 0

Property SerialPort as Integer

Valid values

1…255

Default value = 1

Example
SerialPort = 1

9.2.7. ServerPort

Applicable only for Connection = 1…4

Property ServerPort as Long

Valid values

0…65535

Default value = 502

Example
ServerPort = 502

9.2.8. IPVersion

Applicable only for Connection = 1…4

Property IPVersion as Integer

Valid values

4 = IP Version 4 (Default)+ 6 = IP Version 6

Example
IPVersion = 4

9.2.9. AnyAddress

Applicable only for Connection = 0

Property AnyAddress as Integer

Valid values

0 = Any address = false
1 = Any address = true (Default)

Example
AnyAddress = 1

9.2.10. OpenConnection

Opens the connection selected with the Connection property.

Function OpenConnection() As Integer

Return Value:

Zero if success. Nonzero value if failed.

Example how to open a Modbus TCP/IP connection
Public app As Object
Dim res As Integer
' Create an object to Modbus Slave
Set app = CreateObject("Mbslave.Application")
app.Connection = 1 ' Select Modbus TCP/IP
app.IPVersion = 4
' app.IPAddress = “192.168.1.27”    ' No need to setup if AnyAddress = 1. Modbus Slave listen on all.
app.ServerPort = 502
res = OpenConnection()
Example how to setup a serial connection
Public app As Object
Dim status As Integer
' Create an object to Modbus Slave
Set app = CreateObject("Mbslave.Application")

app.Connection = 0         ' Mode is serial port
app.SerialPort = 1         ' Com port 1
app.BaudRate = 9600        ' 9600 baud
app.Parity = 0             ' None parity
app.Mode = 0               ' RTU mode
status = app.OpenConnection()

9.2.11. CloseConnection

Function CloseConnection() As Integer

Return Value

Zero if success. Nonzero value if failed.

9.3. Automation setup Functions

The following functions do the same as you setup in the read/write definition dialog (F8). Read functions are associated with a Modbus Slave document. (The window with data)
.Example

Res = doc.SetupDiscreteInputs (1, 100, 5)
Coils (0) = 1    ' Address 100 = 1
Coils (1) = 0    ' Note that the index used in Coils starts from 0
Coils (2) = 1    ' no matter the address used.
Coils (3) = 0
Coils (4) = 1
' Now the Master reads 1, 0, 1, 0, 1 when read 5 discrete inputs starting from address 100

9.3.1. SetupCoils

Function SetupCoils(SlaveID As Integer, Address As Long, Quantity As Integer) As Integer

Return Value

True if success. False if not success

Parameters

SlaveID: The slave address 1 to 255
Address: The data address (Base 0)
Quantity: The number of data. 1 to 10000

9.3.2. SetupDiscreteInputs

Function SetupDiscreteInputs(SlaveID As Integer, Address As Long, Quantity As Integer) As Integer

Return Value

True if success. False if not success

Parameters

SlaveID: The slave address 1 to 255
Address: The data address (Base 0)
Quantity: The number of data. 1 to 10000

9.3.3. SetupHoldingRegisters

Function SetupHoldingRegisters(SlaveID As Integer, Address As Long, Quantity As Integer) As Integer

Return Value

True if success. False if not success

Parameters

SlaveID: The slave address 1 to 255
Address: The data address (Base 0)
Quantity: The number of data. 1 to 10000

9.3.4. SetupInputRegisters

Function SetupInputRegisters(SlaveID As Integer, Address As Long, Quantity As Integer) As Integer

Return Value

True if success. False if not success

Parameters

SlaveID: The slave address 1 to 255
Address: The data address (Base 0)
Quantity: The number of data. 1 to 10000

9.3.5. ShowWindow

ShowWindow()
As default Modbus document windows are hidden. The ShowWindow function makes Modbus Poll visible and show the document with data content.

9.4. Automation data properties

The below properties are used to set or get values in the internal write/read arrays in Modbus Slave. The Index used is not a Modbus Address. The Index always counts from 0 no matter of the address used. The data properties are associated with a Modbus Slave document. (The window with data)

Example 1:

doc is assumed created first. See Excel example.
doc.SRegisters(0) = 1
doc.SRegisters(1) = 10
doc.SRegisters(2) = 1234

Example 2 with floating point values:

doc.Floats(0) = 1.3
doc.Floats(2) = 10.5
doc.Floats(4) = 1234.1

9.4.1. Coils

Property Coils(Index As Integer) As Integer

Description

Sets a coil in the write array structure or return a coil from the read array.

Syntax

Coils(Index) [=newvalue]

9.4.2. SRegisters

Property SRegisters(Index As Integer) As Integer

Description

Sets a register in the write array structure or return a register from the read array.

Syntax

SRegisters (Index) [=newvalue]

9.4.3. URegisters

Property URegisters(Index As Integer) As Long

Description

Sets a register in the write array structure or return a register from the read array.

Syntax

Object. URegisters (Index) [=newvalue]

9.4.4. Ints_32

Property Ints_32(Index As Integer) As Double

Description

Sets a 32 Bit integer in the write array structure or return an integer from the read array.

Syntax

Ints_32 (Index) [=newvalue]

9.4.5. UInts_32

Property UInts_32(Index As Integer) As Double

Description

Sets a 32 Bit unsigned integer in the write array structure or return an unsigned integer from the read array.

Syntax

UInts_32 (Index) [=newvalue]

9.4.6. Ints_64

Property Ints_64(Index As Integer) As Double

Description

Sets a 64 Bit integer in the write array structure or return an integer from the read array.

Syntax

Ints_64 (Index) [=newvalue]

9.4.7. UInts_64

Property UInts_64(Index As Integer) As Double

Description

Sets a 64 Bit unsigned integer in the write array structure or return an unsigned integer from the read array.

Syntax

UInts_64 (Index) [=newvalue]

9.4.8. Floats

Property Floats(Index As Integer) As Single

Description

Sets a float in the write array structure or return a float from the read array.

Syntax

Floats* (Index) [=newvalue]

9.4.9. Doubles

Property Doubles(Index As Integer) As Double

Description

Sets a double in the write array structure or return a double from the read array.

Syntax

Doubles* (Index) [=newvalue]

9.4.10. ByteOrder

Property ByteOrder As Integer

Description

Sets the byte order used by Longs, Floats and Doubles properties.
0 = AB CD (Default)
1 = CD AB
2 = BA DC
3 = DC BA

Example for Longs

Byte Order: AB CD
The decimal number 123456789 or in hexadecimal 07 5B CD 15
Order as they come over the wire in a Modbus message: 07 5B CD 15

Syntax

ByteOrder [=newvalue]