User Tools

Site Tools


public:products:cv-100w

ACR-CV - Universal Wireless M-Bus converter


ACR-CV-101N-W-D
ACR-CV-101N-W-D2

* The universal converter is used for application where you need to send data from Wireless M-Bus over the LoRa network or NB-IoT
* We offer battery operated units, as well as external power operated units
* Each universal converter has implemented LUA scripts and can be configured via configuration software


Product specification

Power supply options
External power supply Battery operated unit
AC power supply D-cell battery (LoRa)
Voltage: 85- 305 VAC Battery type: Lithium 3.6 VDC
Frequency: 47-63 Hz Battery capacity: 17 000 mAh
Maximum power consumption: 4 W D-cell battery (NB-IoT)
DC power supply Battery type: Lithium 3.6 VDC
Voltage: 9 - 36VDC Battery capacity: 14 000 mAh
Wireless M-Bus Interface
Device type: Master
Supported modes: T1, C1, S1 - rest upon testing and confirmation
Maximum connected devices: 128
Wireless M-Bus protocol: EN 137 57-3
LPWAN communication
LoRaWAN NB- IoT
LoRaWAN specification: 1.0.1 Bands: B1; B3; B5; B8; B20; B28
Registration method: ABP NB module: SIM 7020E
Class: A Supported protocols TCP/UDP and other protocols provided by SIM7020 module <br />thanks to direct and transparent access to AT commands in LUA scripting interface
Frequency: 868 MHz (ISM) Antenna: External; connected via SMA connector
TX Power: 12,7dBm TX Power: 23dBm
Antenna: External; connected via SMA connector Configuration: Over the cable via GUI
General information
IP coverage: IP65
Dimensions: 145 x 90 x 55 mm
Operational temperature: -30 °C to +60 °C
Weight: 250 g
Mounting: Wall / Pole
Firware update Over the air
HS code: 85269200
Ordering code
Code Description
ACR-CV-101N-W-D2 Wireless M-Bus to NB-IoT converter with 2 x D battery
ACR-CV-101L-W-D2 Wireless M-Bus to LoRa converter with 2 x D battery
ACR-CV-101N-W-D Wireless M-Bus to NB-IoT converter with D battery
ACR-CV-101L-W-D Wireless M-Bus to LoRa converter with D battery
ACR-CV-101L-W-EAC Wireless M-Bus to LoRa converter with AC external power supply
ACR-CV-101N-W-EAC Wireless M-Bus to NB-IoT converter with AC external power supply
ACR-CV-101L-W-EDC Wireless M-Bus to LoRa converter with DC external power supply
ACR-CV-101N-W-EDC Wireless M-Bus to NB-IoT converter with DC external power supply

Power consumption

Energy consumption calculation
Variable Description Note
D Number of WMbus slave devices (-) Number of units = number of WMbus ID's
Tmaxwin Maximum time of TX window (in hours) Can be set by user. Minimum TW window is 2 min
T Readng period (in hours) How often should the WMbus master read the slave devices
Isleep Sleep current (in mA) Given by design. Isleep = 0.0084mA
Irx Current when receiving WMbus slaves (in mA) Given by design. Irx = 10.05mA
Etx Energy consumed when sending NB message (in mAh) Given by design. Itx = 0.067mAh
Energy consumption formula
E = (D+1)*Etx + Tmaxwin*Irx + T*Isleep (in mAh)
Example
D Number of WMbus slave devices (-) D = 50
Tmaxwin Maximum time of TX window (in hours) Tmaxwin = 5 minutes = 0.083 hrs
T Readng period (in hours) T = 24 hrs (once a day)
Isleep Sleep current (in mA) Isleep = 0.0084mA
Irx Current when receiving WMbus slaves (in mA) Irx = 10.05mA
Etx Energy consumed when sending NB message (in mAh) Itx = 0.067mAh
E = (D+1)*Etx + Tmaxwin*Irx + T*Isleep (in mAh)
E = (50+1)*0.067 + 0.083*10.05 + 24*0.0084
E = 4.45mAh
Battery capacity is 14 000mAh. The converter uses 4.45mAh per day. This means, that on one battery when reading 50 units once a day, the converter can last up to 3146 days = 8.6 years.


Content of packaging

1x ACR-CV with battery*
* Only for battery operated units


Before installation

1. Loosen the screws and open the lid
2. Connect the battery via connector
3. The device initializes, flashes blue 3 times
4. Put the lid back in the box and pull it off screws

LED signalization

  • 3x blue- start up
  • 1x short blue - periody wake-up
  • 1x long blue- enter configuration mode after long press of user button

Accessories

  • ACR-CONFIG - configuration cable necessary to configure the converter.
  • ACR-CONFIG-5KV - optically isolated configuration cable necessary to configure the converter.
  • 2J-2JW031-868-C675 - LoRa antenna 3dBi
  • 2J-2JW1024 - NB-IoT antenna, max gain 4.6dBi

Payload

Default LUA script

---- CONFIGURATION ----
  APN = "nb.m2mc"
  PLMNID = "23003"
  periodDays = 1
  periodHours = 0
  periodMinutes = 0
  proto = "UDP"
  ip = "192.168.0.20"
  port = 4242
---------------------
 
 
function processConfig(ret, cmd, cfg)
  -- cmd 1 is selected for new filter configuration
  if cmd == 1 then
    print("New filter config:")
    if  cfg == nil or #cfg < 3 then
      print("Purge filter, receive all")
      api.wmbusFilter("purge", cfg)
      filterLength = 0
      api.setVar(1, filterLength)
    else
      api.dumpArray(cfg)
      api.wmbusFilter("populate", cfg)
      filterLength = #cfg/4
      filterIdHasReceived = {}
      for i=1, filterLength do
        filterIdHasReceived[i] = 0
      end
      maxTimeout = filterLength*60000
      api.setVar(1, filterLength)
    end
  end
  -- cmd 2 is used to switch between WMBUS modes
  if cmd == 2 then
    if  cfg == nil or cfg == '' then
      print("Bad WMBUS mode, Specify C1 or T1 or S1")
    else
      print("New WMBUS mode: "..cfg)
      api.wmbusSetup(10, "master", cfg, 1)
    end
  end
end
 
function onWake () 
  filterLength = api.getVar(1)
  print("Filter length: " .. tostring(filterLength))
 
  if filterLength > 0 then
    filterIdHasReceived = {}
    for i=1, filterLength do
      filterIdHasReceived[i] = 0
    end
  else
    print("Error - no filter setup!")
    ret, recved = api.nbSend(ip, port, string.char(255) .. 'NO FILTER, send ID filter to 1, mode to 2', 5000, proto)
    if recved ~= nil then
      if #recved > 1 then
        processConfig(ret, string.byte(string.sub(recved,1,1)), string.sub(recved, 2))
      end
    end
  end
 
  start = api.getTick()
  maxTimeout = filterLength*60000
 
    -- receive WMBUS frames and upload to NBIOT in format [[meter filter ID] [raw wmbus frame]]
  while filterLength > 0 do
    while true do
 
      -- if timeout, report not responding units
      now = api.getTick()
      if now - start > maxTimeout then
        failing = ""
        for i=1, filterLength do
          failing = failing .. string.char(filterIdHasReceived[i])
        end
        print("List of failing Filter IDs:")
        api.dumpArray(failing)
        ret, recved = api.nbSend(ip, port, failing, 5000, proto)
        if recved ~= nil then
          if #recved > 1 then
            processConfig(ret, string.byte(string.sub(recved,1,1)), string.sub(recved, 2))
          end
        end
 
        print("Timeout receiving data from all meters...")
        -- wake up later
        api.wakeUpIn(periodDays, periodHours, periodMinutes, 0)
        return
      end
 
      status, CI, manID, id, ver, devType, ctrlInfo, data, raw, filterId =  api.wmbusReceiveFrame(60000, 1)
      if raw ~= nil then
        print("Received valid wMBUS frame...")
        break
      end
    end
 
    if filterId ~= nil then
      if filterId > 0 then
 
        if filterIdHasReceived[filterId] == 0 then
          print("Upload data from node "..tostring(filterId).." to NBIOT.")
          filterIdHasReceived[filterId] = 1
          api.dumpArray(string.char(filterId) .. raw)
          ret, recved = api.nbSend(ip, port, string.char(filterId) .. raw, 5000, proto)
          if recved ~= nil then
            if #recved > 1 then
              processConfig(ret, string.byte(string.sub(recved,1,1)), string.sub(recved, 2))
            end
          end
 
        else
          print("Data from meter "..tostring(filterId).." already received.")
        end
 
        test = 1
        for i=1, filterLength do
          if filterIdHasReceived[i] == 0 then
            test = 0
            break
          end
        end
 
        if test == 1 then
          print("Received data from all meters, sleeping.......")
          -- wake up later
          api.wakeUpIn(periodDays, periodHours, periodMinutes, 0)
          return
        end
      end
    end
  end
end
 
function onStartup()
 
  print("Starting up WMBUS to NBIOT script, V1.2")
 
  api.nbAT("AT*MCGDEFCONT=\"IP\",\"" .. APN .."\"", 5000, 1)
  api.nbAT("AT+COPS=1,2,\"".. PLMNID .."\"", 5000, 1)
  api.nbAT("AT+CBAND=20", 5000, 1)
 
  -- Initial filter ids:  0x01673213, 0x19854733 ... (in little endian)
  -- COMMENT OUT START
  --filter = ""
  --filter = filter .. string.char(0x13, 0x32, 0x67, 0x01) -- 0x01673213
  --filter = filter .. string.char(0x33, 0x47, 0x85, 0x19) -- 0x19854733
  --filterLength = #filter/4
  --api.wmbusFilter("populate", filter)
  -- COMMENT OUT END
 
  ret, filterLength = api.wmbusFilter("fetch")
  api.setVar(1, filterLength)
 
  -- Start receiving at C1/T1 mode/frequency
  api.wmbusSetup(10, "master","T1", 1)
end

Default LUA script answer


Wireless M-Bus LUA configuration

Converter configuration

The IoT Converter can be configured via a PC application or remotely via a LoRaWAN or NB-IoT network.
Inside the IoT converter is a button that allows you to wake up the IoT converter immediately (asynchronous to the internal clock).

Connecting to the device's configuration

1. Unscrew the 4 screws holding the lid on the device and remove the lid.
2. Unplug the battery or power adapter.
3. Connect the ACR-CONFIG cable into the PC and also into the converter.
4. Launch configuration GUI.
5. Select the port on which the device is connected (for example COM6).
6. Click on “Connect”.
7. Power on the device - either by plugging in the battery or power adapter.
8. Start configuration.

Connecting to the device's communication display

1. Unscrew the 4 screws holding the lid on the device and remove the lid.
2. Plug in the battery or power adapter.
3. Connect the ACR-CONFIG cable into the PC.
4. Launch configuration GUI.
5. Select the port on which the device is connected (for example COM6).
6. Click on “Connect”.

NOTE: To get out of the device's communication display, push the button within the converter and hold for about 6 seconds, until the device switches to configuration mode.


Configuration SW

2019.12

2020.06

Configuration video

Configuration cable

Optically isolated converter
  • Good for externally power supplied units. It can save you from overvoltaging your PC in case of faulty cable connection.
  • Can be supplied by ACRIOS Systems
  • 3.5mm jack connector

LUA script interface

In addition to configuration via a PC application, a LUA scripting interface is implemented in the IoT converter.
The LUA scripting interface allows you to implement your own logic (data preprocessing, etc.) within the converter.
Payload can be also modified by using LUA script.
Details regarding LUA scripts with examples can be found here: https://wiki.acrios.com/doku.php?id=public:general:lua_api


Wireless M-Bus LUA commands

The LUA scripting interface enables users to implement its own logic inside the IoT converter. Detailed information about LUA scripting interface can be found in separate document here.


Wireless M-Bus configuration

status = api.wmbusSetup(power, role, mode)

This function changes the configuration of W-MBUS.

Arguments

  • power (integer) - W-MBUS power: -20 dBm, -10 dBm, 0 dBm, 5 dBm, 9 dBm
  • role (string) - W-MBUS role: master, slave, meter, concentrator, repeater
  • mode (string) - W-MBUS mode: S1, S2, T1, T2, T1_C, T2_C, R

Returns

  • status (integer) - Positive or zero for success, negative for failure

Example

--setup W-MBus interface to power of 9 dBm, role master/concentrator and T2 mode 
api.wmbusSetup(9, "master", "T2")

Set timeout for data reception

status, c_fielf, manid, id, version, devtype, ci, payload = api.wmbusReceiveFrame(timeout)

This function waits timeout milliseconds for data reception from W-mbus.

Arguments

  • timeout (integer) - The maximum time in milliseconds to wait for device answer

Returns

  • status (integer) - Positive or zero for success, negative for failure
  • c_field (integer) - W-MBUS C field (max value 255)
  • manid (integer) - Manufacturer ID, max value 0xffff
  • id (integer) - ID of W-MBUS device (32 bit)
  • version (integer) - Version fiels, max value 0xff
  • devtype (integer) - Device version field, max value 0xff
  • ci (integer) - CI field
  • payload (string) - Received frame payload

Example

-- Receive W-MBUS data with 2000 ms timeout 
status, cfield, manid, id, ver, devtype, ci, payload = api.wmbusReceiveFrame(2000)

Technical drawings

LoRa converter with D battery


ACR-CV-101L-W-D
ACR-CV-101L-W-D2


Externally powered LoRa converter



ACR-CV-101L-W-EAC
ACR-CV-101L-W-EDC


NB-IoT converter with D battery



ACR-CV-101N-W-D
ACR-CV-101N-W-D2


Externally powered NB-IoT converter



ACR-CV-101N-W-EAC
ACR-CV-101N-W-EDC


public/products/cv-100w.txt · Last modified: 2020/10/29 14:35 by Acrios Admin