User Configurable (U-CON)

Licensing starts at $545.00
Download Free Demo

Product Overview

The User Configurable (U-CON) driver for KEPServerEX allows users to quickly and easily create a device driver for serial and Ethernet devices for which an off-the-shelf driver is not available (including barcode readers, weigh scales, various sensors, and RTUs). Its intuitive interface was designed for the non-programmer. Users only need a basic knowledge of protocols, the protocol manual, and the device to get started. OPC and other proprietary client interface technologies are handled within KEPServerEX, simplifying client-side communications. The U-CON driver supports all feature sets available within the KEPServerEX communications platform.



  • Supports Function Blocks
  • Supports Solicited and Unsolicited Modes (Master/Slave)
  • Supports Global, Scratch, and Initialization Buffers
  • Supports Event Counters
  • Supports up to 100 concurrent serial port and Network Interface Card (NIC) configurations
  • Supports error recovery, adjustable timeouts, write optimizations
  • Ensures optimum performance through multi-threaded design
  • Includes built-in Ethernet Encapsulation for device/terminal server connections
  • Includes dialup modem features for serial device connections
  • Includes robust communication diagnostics system with protocol display
  • Allows on-the-fly changes with full-time online operation
  • Supports direct scaling of device data, which allows raw device data to be converted to engineering units for OPC client applications

Available Languages

  • English

Release Notes



  • Fixed issues with calculating the CRC32 and CRC32 reflected algorithms.
  • Fixed an issue where a UDP connection was not being made even though that connection type was specified.
  • Added a new custom 8-bit CRC: “Custom #17 (8-bit)”.



  • Fixed issues with calculating the CRC32 and CRC32 reflected algorithms.
  • Fixed an issue where a UDP connection was not being made even though that connection type was specified.



  • Added support for a new CRC “DCE3 (16-bit)”.



  • Fixed an issue where a second transaction could be immediately resent which could cause the driver to get out of synchronization with the device.



  • Set key length to zero when Unsolicited mode is set to No.



  • Fixed an issue where write checksum commands would change type on project load.



  • Fixed an issue where write check sum commands would change type on project load.



  • Channel and device configurations can now be added, read, updated, and deleted programmatically through the Configuration API Service.
  • Transaction Editor Profiles (as a whole) can now be added, read, updated, and deleted programmatically through the Configuration API Service.
  • Improved password and security features.
  • Fixed an issue with the Multi-bit Integer format that only allowed a maximum selection of 8 bits if the Raw data format 32-bit Motorola (word swap) was selected.
  • Enforced respect for the Retry Attempts.


  • Fixed an issue where editing a tag with a client connected could hang the driver.



  • Added a new custom checksum: sum all bytes, invert all bits, truncate result to one byte, and add 1. The checksum is applicable to Emerald devices, from Industrial Indexing Systems.



  • Fixed an issue where global function blocks with commands CCmdWriteDeviceID or CCmdTestDeviceID could cause an XML configuration to fail to load.



  • Fixed a project load/save issue that was introduced in the 5.16.722.0 release that could cause both the Configuration and Runtime to fail to load projects. The failure was intermittent and depended on the project layout.



  • Updated the Tag Editor in the Transaction Editor to enforce the rules for tag names; specifically, to not allow trailing whitespace. This solves issues where copying and pasting a name that contains whitespace at the end caused the tag to fail validation. The Tag Group and Tag Block Name dialogs were also updated to enforce this.


  • Fixed an issue where deadlock could occur if multiple pieces of outgoing data were queued while the driver was still processing incoming data. This change affects the Transmit and Transmit Byte Commands.
  • Fixed an issue where data loss could occur if there was still data on the wire from a previous transmission when either a Transmit or Transmit Byte command was called.
  • Added logic to handle writing packets larger than 1024.
  • Added support for the CRC-8 Checksum, which is listed as "Custom #15 (8-bit)." The checksum's CRC polynomial is: x^7 + x^3 + 1.



Added the new custom check sum "Custom #14 (8-bit)". The check sum is determined by subtracting the valid hex numbers and the ASCII values of non-valid hex numbers from 0x00, and then swapping the Hi and Low nibbles.



  • Fixed an issue where the configuration client would crash when the driver attempted to automatically generate tags while disconnected from the Runtime.
  • Prevented a deadlock issue that could occur if multiple pieces of outgoing data were queued while the driver was processing incoming data. This change affects the Transmit and Transmit Byte Commands.
  • Fixed an issue where the "Update Tag" command no longer fails when used in an unsolicited mode tag and the tag type is "Dynamic ASCII Format".
  • DWord tags that use "ASCII Integer" or "ASCII Integer (packed 6 bit)" now support the full DWord range.
  • The "Update Tag" command now updates a numeric data tag that uses the "Byte from 2 ASCII Hex Chars (hh)" or "Nibble from 1 ASCII Hex Char" format.
  • Fixed an issue where transaction commands were unavailable from the Edit menu if the Transaction window was selected.
  • Increased the character limit for Tag Group Names and Tag Names to 255.
  • Added the new Custom Checksum "Custom #13 (8-bit)". This checksum sums the bytes and then subtracts the sum from zero.


Fixed high CPU utilization in the Server Runtime caused by the U-CON driver when using cached Write Value commands in unsolicited Ethernet encapsulation mode and no socket connection exists.


  • Fixed the ASCII/Hex ASCII encoding for the existing Date/Time formats and added new Date/Time formats. The new Date/Time formats include the following:
  • Added the Seek String Command. Reworked the Test String and Write String commands to support all the string formats that are supported by the driver.
  • The Event Counter is now stored as DWord. The Update Tag can update the tag with the value of the Event Counter for 8, 16, and 32-bit Intel data formats.
  • The Write Event Counter command now supports various 32-bit formats for writing the DWord Event Counter.
  • Added "Use Current Buffer Position" checkbox controls to the following commands: Test Device ID, Test String, Test Character, Test Check Sum, Test Bit Within Byte, and Compare Buffer.
  • Resolved an issue where the driver was failing to send closely-timed Transmit commands while using Ethernet Encapsulation.
  • Fixed an obscure issue where a temporary buffer used by the state machine of one channel could be overwritten by the state machine of another channel which resulted in erroneous updates of certain tags. State machines now use independent and thread safe buffers to prevent this problem.

     • Short Date [YYYY/MM/DD]

     • Short Date [YY/MM/DD]

     • Standard [MM/DD/YY HH:MM:SS]

     • Standard [DD/MM/YYYY HH:MM:SS]

     • Standard [DD/MM/YY HH:MM:SS]

     • Standard [YYYY/MM/DD HH:MM:SS]

     • Standard [YY/MM/DD HH:MM:SS]


  • The driver will now check for License Activation upon receiving unsolicited communications.


  • Fixed issue where projects created in server/driver version 5.3 that used WriteDeviceID and WriteEventCounter commands would fail version comparison and not load the project in 5.4.
  • Fixed an issue wherein legacy .opf projects saved as xml would fail to pass schema validation.
  • Modified Transaction Editor Write commands, and also added Data destination radio buttons for Read, Write, Scratch, and Global buffers for commands CmdWriteDeviceId, CmdWriteEventCounter, and CmdWriteCheckSum.
  • Increased the Device ID value limit from 255 to 65535.
  • The Transaction Editor posted an incorrect validation message when creating a Cache Write Value command without a preceding Transmit command. A Write Data command is required before a Cache Write Value command. A Transmit command is not required. Both the validation and error message have been updated.
  • Fixed an issue wherein the driver sometimes failed to respect signed data types if the device data format had fewer bytes than the data type. Signed data types would not correctly display negative values. The driver now always respects whether the data type is signed when converting to and from the device format.


  • Fixed issue where the Invalidate Tag command would not invalidate tags inside of a Tag Block.
  • Added support for Custom #12 (8-bit) checksum. This is a variation on the Sum (8-bit) Check Sum. Input data is assumed to be in Ascii Hex. Data is converted to hex before sum. The sum is then subtracted from 0xFF.
  • Added model to support string based IDs. The model affects the formats available in the Write Device ID command and the Test Device ID command.
  • ASCII Real and ASCII Real (packed 6 bit) format property pages have been modified to be more user-friendly.
  • Fixed issue where Function Blocks and Global Buffer Preset were saved as part of an xml server project but were not available in the project when reloaded.


  • Added ability to select any character as the escape character for a selected group of control characters to the Handle Escape Character command.
  • Fixed issue where format properties for commands were not preserved in the transaction editor on loading a command's properties.


  • Fixed issue where Transmit Byte command and Clear Rolling Buffer command were allowed to be selected from the menu without selecting a transaction in the item view.



  • Fixed issue where the Event counter was not incrementing for unsolicited transactions when as command preceded the initial read response.
  • Fixed issue with ASCII Real and ASCII Real (packed 6-bit) formats where legacy projects failed to load a default value for the "Use decimal comma in place of decimal point" option in the format properties. This resulted in projects behaving as though it was set even though the check box was not marked. Viewing the dialog box would set the property to the default value (unchecked/false).
  • Fixed issue with ASCII Real and ASCII Real (packed 6-bit) formats where non-negative numbers with negative exponents only displayed the exponent.

Protocol Requirements

In order to create a profile, you must first obtain protocol documentation from the device manufacturer. Many hardware vendors will provide the protocol documentation with the device or will post it as a PDF on their website. Be sure to have the device model number and be ready to determine whether your device has either a serial or Ethernet option.

The U-CON driver's Transaction Editor uses a menu-driven interface that allows the configuration of read and write transactions (data packets) to establish runtime communications with the device. After you create these transactions, upload them as tags in KEPServerEX, Kepware's reliable and field-proven communications platform.

Sample U-CON Profiles


All example code is provided by Kepware and contributors “AS IS” and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall Kepware or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage. Kepware disclaims responsibility for any errors or omissions arising in connection with engineering in which its software, information, or assistance is used. Questions with regard to example code or application development fall under the category of application assistance and not product support. By downloading and using the example code, you are stating that you have read, understand, and agree with the terms and conditions outlined in this disclaimer.