Displaying LONG integers in Advanced HMI

rguimond

Lifetime Supporting Member
Join Date
Jul 2009
Location
Escuminac
Posts
665
I've been playing with Advanced HMI (great product!) to create a remote monitoring screen for a couple air compressors, using Modbus RTU through a Modbus RTU to Etherne converter.

I have most of the parameters I want to display working - line pressure, compressor temperature, % load, RPM, instantaneous delivery volume, etc. I can't, however, figure out how to display running hours and loaded hours, which are stored as a LongInt in address 2020h and 2024h, respectively. Using the digital panel meter only shows one memory address, but the LongInt combine two adjacent addresses.

Can anyone point me in the right direction?
 
This has got nothing to do with this post, but nice work on AdvancedHMI Archie! I've been using it here at GM (shhh, don't tell the Central Engineering folks!), and even though I had to retool myself to get up to speed with VB.Net, I found that AdvancedHMI is still orders of magnitude easier to use than anything else.
 
The ModbusTCP driver supports some long integers using L4???? addressing.

Thanks! It worked great.

Another quick question:

The conpressor communicates status by setting various bits in an integer. How would I creat a mask to isolate particular bits from an integer in order to determine status? I used "Message Display by Value", but it's difficult to anticipate every possible scenario and program messages to suit. For instance, let's say bit 0 means compressor on/off, bit 1 means compressor needs service and bit 2 means compressor is loaded or unloaded. If the integer = 0, the compressor is obviously off.

However, the compressor may be on if integer = 1, 5 (on and loaded), 3 (on, not loaded and needs service), etc. Indicator lights for the status bits would be a lot nicer, but I don't know how to resolve them. The compressor controller allows only read holding registers.
 
Last edited:
Thanks! It worked great.

Another quick question:

The conpressor communicates status by setting various bits in an integer. How would I creat a mask to isolate particular bits from an integer in order to determine status? I used "Message Display by Value", but it's difficult to anticipate every possible scenario and program messages to suit. For instance, let's say bit 0 means compressor on/off, bit 1 means compressor needs service and bit 2 means compressor is loaded or unloaded. If the integer = 0, the compressor is obviously off.

However, the compressor may be on if integer = 1, 5 (on and loaded), 3 (on, not loaded and needs service), etc. Indicator lights for the status bits would be a lot nicer, but I don't know how to resolve them. The compressor controller allows only read holding registers.

For example, mask out your "0"'s bit by ANDing your Modbus word with a "1". Store the result of this in a variable called "Compressor_On".

Next mask out your your "1"'s bit by ANDing your Modbus word with a "2" (or 10 binary). As before, store this result in a variable called "Service_Needed".

And so forth...

Then just use the state of these variables to drive your indicators.
 

Similar Topics

Hey everyone and anyone that can lend a helping hand. I have a project that I am being asked to add some animations of Solidworks or "3D" models...
Replies
7
Views
114
Using FTview ME to create an HMI screen. Simplest task is giving me trouble. How do I create an HMI tag that will allow the name of the current...
Replies
3
Views
86
Hello Folks, plc : micrologix 1500 The analog output from the loadcell is given to the plc. Using the SCP function I have scaled it into an...
Replies
3
Views
719
Hi Everyone, I am hoping a Red Lion Expert can point me in the right direction. I am experimenting with data logging on a CR3000 10" screen...
Replies
4
Views
572
I’m a bit stuck on HMI (KTP-1200) programming… See the picture attached. The PASS or FAIL box should only appear when the toggle switch is...
Replies
7
Views
1,005
Back
Top Bottom