Archive:CALMU3

From London Hackspace Wiki
Revision as of 15:44, 3 June 2013 by Russ (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Note: This was the electricity meter in our old space at Unit 24, 37 Cremer Street. It is preserved here for historical reasons as this page is probably the most comprehensive documentation of this meter on the internet.

MULTIPLY ALL READINGS BY ONE

Calmu3+ from Polymeters Response International. "The first microprocessor-based meter", which uses "FFT, rather than 'brute-force' DSP" [1]

It may need calibration periodically, but that's probably up to the supplier.

Details

  • Part no: C3DBD0BC0SJ (3 phase direct, class 1 accuracy, lithium backup, C?)

Interfaces

  • Infrared PACT port (this is a standard - possible adapter)
  • Serial port ("for PC, modem or PACTLAN"). This is apparently not PACT.

Software with support

  • Principal (DOS) or Ease II (can't get this to run on XP due to .vbx; probably needs 2000; uses stopcopy protection) from PRI
  • mv-rs, and possibly other Itron stuff
  • Ziphany

Source code

https://github.com/londonhackspace/Powered

Resources

A later model, with a nice overview of available metrics.

Presumably ex-PRI consultant on Calmu meters

Serial protocol

1200bps ASCII, \r terminated

Equals symbols are shown on some variables, but presumably wouldn't fit for many. This seems to be consistent within each value, however.

'N', 's', 'u' or 'x' are slightly special/buggy. If a valid index isn't provided for 'N' or 'x', the meter returns '\xff' with no '\r', so take steps to prevent this. If a valid index isn't provided for 'u', 'U\r' is returned. 's' always seems to return the same value.

Lowercase commands are always inverted and smaller than uppercase, suggesting they're from another perspective. Obviously, units still increase, so 'u' probably just calls 'U', explaining its strange behaviour.

Sampling seems to be live, so sampling more frequently will be more accurate. Due to the baud rate, a sample takes 120-240ms.

Commands

F Frequency "F=50.138\r"
R (Real?) time. "R=15:00:40\r"
S Serial number "SP99A01869\r"
s Meter information "s=", dword 0xa605019e, dword 0, "\r"
B[AVWvw] ?

  • "BAA3123B"
  • "BV182B85"
  • "BW918D2F"
  • "Bv05B6CE"
  • "Bw01B525"

I[123] Active Current (A)

  • "I1+15.230"
  • "I2+0.0000"
  • "I3-0.0300"

i[123] Reactive Current (A)

  • "i1-5.6300"
  • "i2-0.0000"
  • "i3-0.0100"

L[123] "Apparent" current (A)

  • "L1+9.0200"
  • "L2+0.0100"
  • "L3+0.0200"

K[123A] Apparent power (kVA)

  • "K1+2.0700"
  • "K2+0.0000"
  • "K3+0.0100"
  • "KA+2.0600"

KW Total Active power fundamental frequency

  • "KW+1.6300"

KV Total Reactive power

  • "KV-1.3300"

P[123] Real power (kW)

  • "P1+1.6400"
  • "P2-0.0000"
  • "P3+0.0000"

p[123] Reactive Power (kVAR)

  • "p1-1.3400"
  • "p2+0.0000"
  • "p3-0.0100"

Q[123A] Power factor

Not sure what the +/- means

  • "Q1=0.769-"
  • "Q2=1.000+"
  • "Q3=1.000+"
  • "QA=0.787-"

U[AVWvw] Units

  • "UA=2631984"
  • "UV=0349470"
  • "UW=2549220"
  • "Uv=0177551"
  • "Uw=0000001"

u[AVWvw] Units (duplicate?)

  • "UA=2631986"
  • "UV=0349470"
  • "UW=2549221"
  • "Uv=0177552"
  • "Uw=0000001"

V[123] Voltage (V)

  • "V1+236.75"
  • "V2+240.72"
  • "V3+242.45"

X[0-9A-F][0-9A-F] Return memory (see below)

\x83 ? Please don't call these, as they're probably for programming

\x84 ?

\xfa ?

\xfb ?

\xfc ?

\xfd ?

\xfe ?

Notes

  • V is clearly voltage.
  • I is clearly current.
  • Q is {0, 1}, so clearly power factor.
  • P is I * V, so must be true power.
  • K is P / Q, so must be apparent power.
  • L is I*Q, so "apparent" current.

Memory

This is probably RAM. This MCU is 768 bytes of RAM.

X00=A98991 # increments by ~ 0xb800-0xc800 every second (~50kHz MCU clock?)
X01=00008E # floats around here - drift/correction of X02?
X02=00C3E9 # floats around here - last increase of X00?
X03=03A590 # 
X04=00000A # static
X05=000000 # static
X06=FFFD1E
X07=0000FE # static
X08=0007C8 # floats around here
X09=0005CD # floats around here
X0A=FFFAD5 # floats around here
X0B=00000D # sometimes jumpy (0x03-0x2e) - adjustment?
X0C=000000 # static
X0D=FFFFFF # static
X0E=00007F # static
X0F=000000 # sometimes 0xffffff
X10=000000 # static
X11=00000A # static
X12=00008F # floats by +- 0x20/0x40 around here
X13=0000FF # static
X14=FFFFFF # static
X15=FFFFFF # static
X16=02EA22 # very slow increase
X17=FFFFFF # static
X18=000000 # static
X19=000000 # static
X1A=FBA66C # slow increase ~1/sec - timer
X1B=0000FF # static
X1C=000003 # static
X1D=000000 # static
X1E=000000 # static
X1F=73FAEE # static
X20=FFFFFF # static
X21=FFFFFF # static
X22=FFFFFF # static
X23=FFFFFF # static
X24=007F58 # also 0x53
X25=000000 # also +-0x20 occasionally
X26=FF9900 # also 0x0040FF, 0x000AE0, 0x001320
X27=00400B # also 0x001400, 0x001320
X28=687687 # also 0x001400, 0xC6C5FA, 0x001320
X29=FFFD13 # floats around here
X2A=0003E8 # static (1000)
X2B=0003E8 # static (1000)
X2C=03A4A8 # slow increase
X2D=03B0DC # slow increase
X2E=03BB34 # slow increase
X2F=0007C3
X30=FFFAC7
X31=0005AB # very slow increase
X32=00033A # very slow increase
X33=000003 # also 2
X34=000005 # also 2
X35=FFFDDA
X36=FFFFFF
X37=FFFFFC
X38=00027D
X39=FFFFFD
X3A=000001
X3B=26E6F4 # This is the value returned by command UW
X3C=000001 # This is (probably) the value returned by command Uw
X3D=05551E # This is the value returned by command UV
X3E=02B641 # This is the value returned by command Uv
X3F=282A7A # This is the value returned by command UA
X40=00000D # static
X41=00100D # static
X42=53100D # static
X43=58100D # static
X44=FFFFFF
X45=FF00FF # static
X46=0400FF # static
X47=0400FF # static
X48=03A4FC
X49=000000 # static
X4A=FFFFFF # static
X4B=050013 # static
X4C=000000 # static
X4D=050013 # static
X4E=000000 # static
X4F=000000 # static
X50=FFFFFF # static
X51=FFFFFF # static
X52=FFFFFF # static
X53=FFFFFF # static
X54=000000 # static
X55=000000 # also 0xffffff
X56=FFFFFF # static
X57=FFFFFF # static
X58=000000 # static
X59=FFFFFF # static
X5A=000000 # static
X5B=000000 # static
X5C=000000 # static
X5D=000000 # static
X5E=000000 # static
X5F=000000 # static
X60=000000 # static
X61=000000 # static
X62=000000 # static
X63=000000 # static
X64=000000 # static
X65=FFFFFF # static
X66=000000 # static
X67=000000 # static
X68=FFFFFF # static
X69=000000 # static
X6A=FFFFFF # static
X6B=FFFFFF # static
X6C=FFFFFF # static
X6D=FFFFFF # static
X6E=000000 # static
X6F=FFFFFF # static
X70=000000 # static
X71=000000 # static
X72=000000 # static
X73=000000 # static
X74=000000 # static
X75=000000 # static
X76=000000 # static
X77=FFFFFF # static
X78=000003 # static
X79=000076 # static
X7A=000015 # static
X7B=000000 # static
X7C=000019 # static
X7D=00216B # static
X7E=00000C # static
X7F=00001D # static
X80=000058 # static
X81=007F44 # static
X82=000001 # static
X83=000000 # static
X84=000000 # static
X85=000000 # static
X86=000000 # static
X87=000000 # static
X88=000000 # static
X89=000000 # static
X8A=000000 # static
X8B=000000 # static
X8C=000000 # static
X8D=000000 # static
X8E=000010
X8F=001A6F
X90=000000 # static
X91=000011 # static
X92=0006F0 # static
X93=0006F0 # static
X94=00000C # static
X95=000006 # static
X96=000002 # static
X97=FFFFFF # static
X98=000000 # also 0xffffff
X99=FFFFFF # static
X9A=FFFFFF # static
X9B=000000 # static
X9C=000000 # static
X9D=000000 # static
X9E=000000 # static
X9F=000000 # static
XA0=000003 # static
XA1=000000 # static
XA2=FFFFC0 # static
XA3=FFFF84 # static
XA4=000001 # static
XA5=000001 # static
XA6=000000 # static
XA7=000001 # static
XA8=000002 # static
XA9=000000 # static
XAA=000001 # static
XAB=000001 # static
XAC=007F3C # static
XAD=007F4E # static
XAE=007F58 # static
XAF=0000FF # static
XB0=0003E8 # static (1000)
XB1=0000FF # static
XB2=000000 # static
XB3=00016E # static
XB4=0005B5 # static
XB5=000708 # static
XB6=0003DF # static
XB7=0003E5 # static
XB8=0003F8 # static
XB9=001F40 # static (8000)
XBA=00015E # static
XBB=000000 # static
XBC=000A87 # static
XBD=000B9B # static
XBE=001D4C # static (7500)
XBF=000000 # static
XC0=004100 # static
XC1=0078E0
XC2=000095
XC3=000000 # static
XC4=000056 # floats around here
XC5=000054 # floats around here
XC6=00012F
XC7=00012A # static
XC8=00016D # static
XC9=001080 # static
XCA=007F00 # static
XCB=FFFD00 # static
XCC=007E00 # static
XCD=00110C # static
XCE=003348 # static
XCF=002730 # static
XD0=000384 # static
XD1=00293B # static
XD2=0029EB # static
XD3=0001FF # static
XD4=003262 # static
XD5=00FFFF # static
XD6=0332D4 # static
XD7=015180 # static
XD8=001F36 # static
XD9=014244 # static
XDA=000001 # static
XDB=000001 # static
XDC=000000 # static
XDD=000000 # static
XDE=000000 # static
XDF=989680 # static
XE0=FFFFFF # static
XE1=F3A27C # static
XE2=F3A27C # static
XE3=000AFA # static
XE4=000000 # static
XE5=000AF8 # static
XE6=000000 # static
XE7=73FAEE # static
XE8=CCBBAA # static
XE9=050002 # static
XEA=050013 # static
XEB=050013 # static
XEC=050013 # static
XED=050013 # static
XEE=050013 # static
XEF=050013 # static
XF0=050013 # static
XF1=050013 # static
XF2=050013 # static
XF3=050013 # static
XF4=050013 # static
XF5=050013 # static
XF6=050013 # static
XF7=050013 # static
XF8=050013 # static
XF9=050013 # static
XFA=050013 # static
XFB=050013 # static
XFC=050013 # static
XFD=050013 # static
XFE=050013 # static
XFF=050013 # static

Showing 1 related entity.