Modbus programming

The RS-485 output can be directly read by a MeteoPV, CR6-series, CR1000X-series, CR350-series, or Modbus RTU RS-485 network. Other Campbell Scientific data loggers can use an MD485 multidrop interface to read the RS-485 output. Refer to the MD485 manual for information about using the MD485. Refer to www.campbellsci.com/videos/meteopv for information about using the MeteoPV.

A CR6, CR1000X, or CR350-series data logger programmed as a Modbus client can retrieve the values stored in the input registers (Modbus measurements). To do this, the CRBasic program requires the SerialOpen() instruction followed by ModbusClient() instruction.

NOTE:

ModbusClient() was formerly ModbusMaster(). Campbell Scientific, in conjunction with the Modbus Organization, is now using "client-server" to describe Modbus communications. The Modbus client(s) initiates communications and makes requests of server device(s). Server devices process requests and return an appropriate response (or error message). See https://modbus.org for more information. Existing programs that use the old Modbus terminology will still compile in the data logger.

The SerialOpen instruction has the following syntax:


SerialOpen (ComPort, Baud, Format, TXDelay, BufferSize, Mode)

The Format parameter is typically set to logic 1 low; even parity, one stop bit, 8 data bits. The Mode parameter should configure the ComPort as RS-485 half-duplex, transparent.

The ModbusClient() instruction has the following syntax:


ModbusClient (Result, ComPort, Baud, Addr, Function, Variable, Start, Length, Tries, TimeOut, [ModbusOption])

The Addr parameter must match the sensor Modbus address. To collect all of the values, the Start parameter needs to be 1 and the Length parameter needs to correspond with the register count (see Modbus measurements).

ModbusOption is an optional parameter described in the CRBasic Editor Help.