cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

ThingWorx Navigate is now Windchill Navigate Learn More

Translate the entire conversation x

No way to read a undefined floating point value through KEPServerEX?

Tanquen
12-Amethyst

No way to read a undefined floating point value through KEPServerEX?

When using drivers with HMI applications like InTouch or Ignition, the tag in its database could have address modifiers or simply the tag type to let the Modbus driver know that you're looking for a floating point that is using more than one register.

 

It appears that there's no way to accomplish the same thing when using KEPServerEX. Instead of a Modbus driver specifically written for Intouch or Ignition HMI applications.

The only option is to manually create tags inside of KEPServerEX and then read those from the HMI? 

ACCEPTED SOLUTION

Accepted Solutions
Tanquen
12-Amethyst
(To:rajskumar)

I was using slave and poll tools from: https://www.modbustools.com/
This added to the confusion and complexity because I could only run it for 10 minutes. I'm sure there's a setting in the tool but I figured the default would work, but to read the value correctly I did need to change the data encoding `First Word Low` option to be disabled.

There was also an issue with getting the simulator and KEPServerEX and Ignition all talking within the 10 minute window. The other day I wasn't seeing any value using `@float` but this morning I believed I was doing the same exact thing and then all the sudden I could see a value but it was still a little off.
124 vs 125.25
`First Word Low` Option fixed that but I don't know way it was `0` all day yesterday. 

 

View solution in original post

8 REPLIES 8

Hello,

 

Are you looking to define tags directly in the client instead of creating them in KEPServerEX?

 

If yes, you can use dynamic tag addressing to retrieve data in the client without defining tags in the Kepware server. Here is an article that clarifies the difference between static and dynamic tags.

CS278481 - Differences between static and dynamic Tags in KEPServerEX / ThingWorx Kepware Server

 

Thanks

 

 

Tanquen
12-Amethyst
(To:rajskumar)

Yes, we were hoping to reference Modbus TCP/IP values without having to define tags inside KEPServerEX, but it looks like if we want a floating point that uses two registers there's no way to do this without creating a point inside KEPServerEX. Drivers provided by the HMI manufacturers normally have a way to do this.

That article kind of makes it look like you can with the data type modifier ?

Article - CS278481
  • Most OPC clients allow users to specify the data type as part of the request when registering a link for a specific data item. The data type specified by the OPC client is used if it is supported by the communications driver. The @[Data Type] modifier can be useful when ensuring that a communications driver interprets a piece of data exactly as needed

 

Tanquen
12-Amethyst
(To:rajskumar)

Seems not to work for Ignition and the KEPServerEX Modbus TCP/IP driver.

When the address includes '[]' there is an error.

 

`PLC.40007@[Float] ` 

The example they give in the manual `Channel1.Device1.R0001@Short` doesn't have the square brackets so it may just be the Modbus TCPIP driver doesn't support it.

It seems you only added the device or channel name and then the tag address. To pass a dynamic request, you need to include both the channel name and the device name, and then append the data type.

Tanquen
12-Amethyst
(To:rajskumar)

Sorry, that was just an example.


I was mainly concerned with the correct formatting of the data type suffix. I did see in the manual that the square brackets are not included. When we do not include the Square brackets there's no error and we do get a value but it's the same value with or without adding the data type.

 

So now we're wondering if maybe this data typing is not supported by Ignition or the KEPServerEX Modbus TCP IP driver?

Tanquen
12-Amethyst
(To:rajskumar)

Doesn't seem to work.

I set up Modbus Simulator with a Float at 40005 that has the value of `125.25`.

 

In Ignition, if I read the value 40005 as Short I get `17146`.

    nsu=KEPServerEX;s=E1_110_01.MODBUS.40005

In Ignition, if I read the value 40006 as Short I get `-32768``.
    nsu=KEPServerEX;s=E1_110_01.MODBUS.40006

 

In Ignition, if I read the value 40005 as Float get `0``.

    nsu=KEPServerEX;s=E1_110_01.MODBUS.40005@Float

 

If I use the poll simulation software to read it as a Float, I get the correct value of `125.25` at 40005.

Hello,

 

You would need to Check the Device Properties > Settings > Data Encoding settings of Modbus Driver.

 

Please take a look at the following article as it may help resolve your issue:

CS299224 - Modbus device readings show wrong values in PTC Kepware Products

If you are prompted to log in to view the complete article, you can use your MyKepware login credentials. Thanks 

Tanquen
12-Amethyst
(To:rajskumar)

I was using slave and poll tools from: https://www.modbustools.com/
This added to the confusion and complexity because I could only run it for 10 minutes. I'm sure there's a setting in the tool but I figured the default would work, but to read the value correctly I did need to change the data encoding `First Word Low` option to be disabled.

There was also an issue with getting the simulator and KEPServerEX and Ignition all talking within the 10 minute window. The other day I wasn't seeing any value using `@float` but this morning I believed I was doing the same exact thing and then all the sudden I could see a value but it was still a little off.
124 vs 125.25
`First Word Low` Option fixed that but I don't know way it was `0` all day yesterday. 

 

Announcements


Top Tags