User Tools

Site Tools


AirCV - Universal Modbus converter (RS485)

  • The universal converter is used for application where you need to send data from Modbus 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

Configuration SW



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 iNELS Air
  • 3.5mm jack connector

Before installation

1. Loosen the screws and open the lid
2. Connect the cables from Modbus to the terminal board
3. Remove the paper from the battery bay
4. The device initializes, flashes green 3 times
5. Put the lid back in the box and pull it off screws

LED signalization

  • 3x green - successful device initialization and network connection (with OTTA)
  • 1x green - successful sending of the first data
  • 1x red - unsuccessful sending of the first data
Energy consumption - battery operated
Battery type: Lithium 3.6VDC D-cell OR 2x Lithium 3.6VDC D-cell
Battery capacity:17 000 mAh OR 34 000 mAh
Energy consumption:8mA when receiving, 8uA in sleep mode
Energy consumption - external power supply
Voltage: 85- 305 VAC
Frequency: 47-63 Hz
Maximum power consumption: 4 W
Energy consumption - external power supply 2
Voltage: 9- 36 VDC
Maximum power consumption: 4 W
Modbus interface (EIA-485)
Device type: Master
Communication speed 1200 - 115 200 Bd (higher baudrates on demand)
Maximum connected devices 128UL (Unit Loads. 1UL = 1.5mA) supported
Supported protocols Modbus RTU, Modbus ASCII, Profibus DP
Communication via LoRa
LoRaWAN specification: 1.0.1
Class: A
Frequency: 868 MHz (ISM)
Antenna: External connected via SMA connector
Communication via NB-IoT
Bands: B1/B3/B5/B8/B20/B28
Antenna: External, connected via SMA connector
General information
IP coverage:IP65
Dimensions:123 x 82 x 56 mm
Operational temperature:-30 °C to +60 °C

Modbus LUA settings

api.rs485Send( msg)

This function sends msg to RS485 bus. Turn on RS485 using rs485State first.


  • msg (string) - Data to be sent to RS485 bus


--sends 'test' string to RS485

api.rs485Setup( baudrate, parity, stopBits, dataBits)

This function changes the configuration of RS485 interface


  • baudrate (integer, optional) - Baudrate to use for communication (up to 921600 baud)
  • parity (integer, optional) - Parity, 0 for none, 1 for odd and 2 for even parity
  • stopBits (integer, optional) - Number of stop bits, 1 or 2 allowed
  • dataBits (integer, optional) - Number of data bits, 7 or 8 allowed


--setup RS485 interface to 9600 Baud, 8E1 
api.rs485Setup(9600, 2, 1, 8)

api.rs485State( state)

This function turns on the RS485 circuitry, must be used before rs485Send or rs485Receive.


  • state (integer) - New state of RS485 circuitry: 0 for off, 1 for on (fast power-up)


api.rs485State(0) --turn off RS485

answer,len = api.rs485Receive( timeout)

This function waits timeout milliseconds for data reception from RS485 bus. Turn on RS485 using rs485State first.


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


  • answer (string) - Data received from RS485 bus in given time
  • len (integer) - Number of bytes received


--waits 1s for answer from RS485 bus 
ans,len = api.rs485Receive(1000)

crc = api.modbusCrc( msg)

This function calculates Modbus request checksum.


  • msg (string) - Modbus request


  • crc (string) - Modbus crc for request


--calculate checksum for Modbus request 110100010002 
req = pack.pack('<b6', 0x11,0x01,0x00,0x01,0x00,0x02) 
crc = api.modbusCrc(req) --crc = "EE9B"


msg, answer = api.nvtProcess(buf)

This function processes NVT message and either sets baudrate, datasize, parity or stop size for MBUS or MODBUS.


  • buf (string) - Message to be processed


  • msg (string) - Message without NVT sequence
  • answer (string) - NVT answer


ret,port,buf = api.loraSend(0,1000,data) 
if buf ~= nil then 
	buf, nvtans = api.nvtProcess(buf) 

answer = api.nvtEncode(msg)

This function encodes message to NVT format.


  • msg (string) - Message to be encoded to NVT


  • answer (string) - NVT message


ans,len = api.rs485Receive(50) 
ans = api.nvtEncode(ans) 
public/products/cv-100r.txt · Last modified: 2020/07/03 15:00 by Acrios Admin