"map Modbus channels.vi" was added to the Modbus Slave configuration class in order to facilitate modification of the Modbus address assignments.
The VI is static dispatch, and has one new dependency (increment Modbus address.vi). The address assignments
(starting address, subindex) modified by "map Modbus channels.vi" are technically contained in Modbus Module Channel.lvclass, but this
class is part of the configuration class object.
Add new subVI to "map Modbus channels.vi" which takes as its inputs the next available Modbus address (starting
address, subindex) for the Modbus channel by its modbus type (coils, discrete inputs, input registers, or holding registers)
and data type (DBL, SGL, I64, U64, I32, U32, I16, U16, I8, U8, or Boolean). The VI outputs an updated array for the
next Modbus addresses available, indexed by by modbus type (0 - coils, 1 - discrete inputs, 2 - input registers, 3 -
holding registers).
"map Modbus channels.vi" was added to this class in order to facilitate modification of the Modbus address assignments by the Modbus Slave editor node.
"map Modbus addresses.vi" was added to Modbus Slave configuration.lvclass.
Rebuild of package which now includes "map Modbus channels.vi" in Modbus Slave configuration.lvclass for the purposes of selecting an auto-mapping of Modbus addresses by the Modbus Slave editor node.
Added "Mapping" page to the tab control. This new page contains a "mapping" numeric control for the user to select the
desired Modbus mapping at edit time (0 = custom mapping, 1 = optimized mapping). The default value is "0," which will
leave the user-defined Modbus address assignments unchanged. If a mapping value of "1" is selected, all existing
Modbus channels will be sorted into continuous groups of addresses for optimized data access.

*Note - Changing from "0" to "1" will overwrite existing Modbus address mapping, and values will not be saved.
Rebuild of package which now includes a "Mapping" page in configuration UI.vi for the purposes of selecting a mapping option for Modbus channel addresses. The options for the "mapping" control are 0 - Custom (user defined)
and 1 - Optimized (auto-mapped). A value of 0 will leave Modbus address assignments (starting address, subindex) unchanged, whereas a value of 1 will auto-map the Modbus channels (by modbus type) to the largest possible contiguous groups
of addresses in order to facilitate the fastest possible data read and write operations.
The VI "map Modbus channels.vi" was added as a dependency of the project. It is a member of Modbus Slave configuration.lvclass and is called in configuration UI.vi. This VI should be located in vi.lib as part of the installed Modbus Slave TBD Framework module.
Fixed a bug with incrementing of the subindex value (Boolean data types only).
Created a "Refresh" user event after each "mapping" control value change in order to update the Module channels listbox with any mapping changes.
Rebuild for configuration UI.vi with Modbus mapping refresh.
Rebuild for bug fix in Modbus subindex incrementing for Boolean data.
This is code that incorporates Daniel's comments, and adds a test for optimized modbus mapping.
rename
minor cleanup
minor style cleanup
changed build location