Internet PLC Forum

General => Technical support => Topic started by: Bill on September 16, 2006, 05:29:11 AM

Title: Largest number in DM
Post by: Bill on September 16, 2006, 05:29:11 AM
I am using a DM register as a total products produced counter using each on/off transition of a photocell to increment DM[n] +1.

This works fine until count 32768 when the numbers display negative and decrements.  I am certain it relates to the max value a DM register can hold, but I am uncertain how to overcome this issue.

My HMI reads this register and displays it's value to the machine operator.  Any suggestions?
Title: Re:Largest number in DM
Post by: Bill on September 16, 2006, 06:41:37 AM
I just noticed in the manual that these are 16 bit registers. Any tecniques to work around this obstacle would be welcome.
Title: Re:Largest number in DM
Post by: plc_user on September 16, 2006, 07:36:26 AM
Use a 32bit variable like A-Z then store the upper and lower part of the variable in two DM locations.   Look at the SETHIGH16 and GETHIGH16 statements.
Title: Re:Largest number in DM
Post by: support on September 16, 2006, 08:44:06 AM
How many 32-bit variables do you need? There are another sixteen 32-bit variables EMLINT[1] to EMLINT[16] that you can use for this purpose.

If it is not sufficient, then you need to combine two DM into one by adding a bit more codes:

Say DM[1] and DM[2] are used together:

DM[1] = DM[1]+1
IF DM[1] > 10000
    DM[1] = 0
    DM[2] = DM[2]+1
ENDIF

This way, the total value = DM[2] x 10000 + DM[1]

The maximum count value is 327,670,000  (327 million).
Letting DM[1] rolls over at 10000 make it easier to read but you can increase maximum count by letting it roll over at 32767 which allows up to >1 billion count.
Title: Re:Largest number in DM
Post by: Bill on September 16, 2006, 09:03:25 AM
How do I reference these additional 32 bit variables in my touch screen?

I am using modbus.  I only need on 32 bit register.
Title: Re:Largest number in DM
Post by: support on September 16, 2006, 09:21:24 AM
Unfortunately 32-bit variables in the PLC are not mapped into MODBUS holding register space.

MODBUS only takes in 16-bit number. Your system may refer to a 32-bit number using two consecutive 16-bit modbus register. In that case, then yes, you need to use a 32-bit variable as counter and then use the GETHIGH16 to get the upper 16 bit of the 32-bit variable and store into the adjacent DM so that it become visisble to MODBUS.
Title: Re:Largest number in DM
Post by: Bill on September 16, 2006, 09:53:39 AM
Thanks to PLC_USER and Tech support for your help.

Title: Re:Largest number in DM
Post by: plc_user on September 16, 2006, 10:07:47 AM
No problem