Modbus Master

From ESS-WIKI
Revision as of 09:21, 10 January 2020 by Hank.peng (talk | contribs)
Jump to: navigation, search

Introduction

Modbus enables communication among many devices connected to the same network, for example, a system that measures temperature and humidity and communicates the results to a computer. Modbus is often used to connect a supervisory computer with a remote terminal unit (RTU) in supervisory control and data acquisition (SCADA) systems.

Many of the data types are named from its use in driving relays: a single-bit physical output is called a coil, and a single-bit physical input is called a discrete input or a contact.

Modbus Service is a Windows/Linux system service for WISE Agent to read sensor data from Modbus device or write data into Modbus device. After sensor data are acquired, WISE Agent will upload the data to the WISE-PaaS Cloud.



Features

EdgeSense Modbus-Master aims to collect data from Modbus Slave.

Feature:

  • Support connection with multiple Modbus slave.
  • Support Modbus TCP and Modbus RTU.
  • Support individual sensor upload interval.
  • Configurable sensor alias.
  • Support byte swap.
  • Currently support up-link Modbus data to WISE-PaaS , not support down-link from WISE-PaaS.



How to

Software Requirements

  • MQTT broker
  • Node.js


Installation

Windows:

1. Download Modbus-Master for Windows from Release Table.

2. Double click the installer to launch the installer to install it to the machine.


Linux:

N.A.



Configuration

EdgeSense Modbus Master can manage multiple Modbus Slave setting and individual sensor's parameters, below settings are default after Modbus Master installation.


1. Device Configuration: <Install_folder>\config\industry\device-industry.yaml

metadata: 
  name: "Modbus devices"
  labels: ["Modbus"] 
  Description: "Modbus TCP/RTU devices with 3 sensors in holding register area 40001~40003"
  UpdateData: 2020-01-08-14:25:30

# DeviceInfo: You can add a new device with unique name
 # <DeviceName>: Unique Device Name
   # Params:

LinkInfo: 
  COM1:
    Params:
      Driver: Modbus-RTU
      ConnectType: Serial
      PortName: COM1
      BaudRate: 9600
      DataBits: 8
      StopBits: 1
      Parity: None
    
    Info: 
      PollingInterval: 1000  # Polling interval ( milliseconds )
      Timeout: 100           # A request timeout ( milliseconds )
      Retry: 3               # Retries min:0 max:3 ( count )
      AliveTime: 60          # Link Timeout in second: SDK will release this link if there are any request over this AliveTime ( second )
      CheckLinkInterval: 5   # Check link status interval (second)

    DevList: 
      - Device-1

  TCP-IP-1:
     Params: 
       Driver: Modbus-TCP
       ConnectType: Net
       IP: 127.0.0.1
       Port: 502
   
     Info: 
      PollingInterval: 1000  # Polling interval in milliseconds
      Timeout: 100           # A request timeout in milliseconds
      Retry: 3               # Count of retry min:0 max:3   
      AliveTime: 60          # Link Timeout in second: SDK will release this link if there are any request over this AliveTime ( second )
      CheckLinkInterval: 5   # Check link status interval (second)

     DevList:
      - Device-2


DeviceInfo:
 Device-1: 
  Params: 
    Station: 1

  Profile: MODBUS_DEVICE_01.yaml

 Device-2:
  Params:
    Station: 2

  Profile: MODBUS_DEVICE_02.yaml



2. Sensor Configuration for Device-1: <Install_folder>\config\industry\Profile\MODBUS_DEVICE_01.yaml

metadata: 
  name: MODBUS_DEVICE_01.yaml
  labels: ["MODBUS"] 
  Description: This profile is for Modbus device 01
  version: 1.0.1
  UpdateData: 2020-01-08-14:25:30

Sensor:
  Temperature:
    Params:
      Address: 0   # Address
      Length: 1  
      DataType: int16
      DataFormat: ABCD

    Info:
      v: -1
      asm: r # Access Right: r, w, rw
      min: -10 # Minimum Value 
      max: 100 # Maximum Value
      u: "celsius"  # Unit

  Humidity:
    Params:
      Address: 1
      Length: 1  
      DataType: int16 
      DataFormat: ABCD

    Info:
      v: -1
      asm: r # Access Right: r, w, rw
      min: -100 # Minimum Value 
      max: 100 # Maximum Value
      u: "percent"  # Unit 


2. Sensor Configuration for Device-2: <Install_folder>\config\industry\Profile\MODBUS_DEVICE_02.yaml

metadata: 
  name: MODBUS_DEVICE_02.yaml
  labels: ["MODBUS"] 
  Description: This profile is for Modbus device 02
  version: 1.0.1
  UpdateData: 2020-01-08-14:25:30

Sensor:
  X-Axis:
    Params:
      Address: 0   # Address
      Length: 1  
      DataType: int16
      DataFormat: ABCD

    Info:
      v: -1
      asm: r # Access Right: r, w, rw
      min: -10 # Minimum Value 
      max: 100 # Maximum Value
      u: "mm"  # Unit

  Y-Axis:
    Params:
      Address: 1
      Length: 1  
      DataType: int16 
      DataFormat: ABCD

    Info:
      v: -1
      asm: r # Access Right: r, w, rw
      min: -100 # Minimum Value 
      max: 100 # Maximum Value
      u: "mm"  # Unit 

Demonstration

1. Open Modbus Simulator: ModSim32 and click "New" in program menu to create a new simulator page.
Modbus-Slave Modsim32 04.png

2. Set parameter as below:

  • Device Id: 1
  • Address: 0001
  • Length: 2
  • Modbus Point Type: HOLDING REGISTER

Modbus-Slave Modsim32 01.png