HAL  v0.6.1
Hardware Abstraction Layer
Loading...
Searching...
No Matches
MODBUS

MODBUS. More...

Collaboration diagram for MODBUS:

Data Structures

struct  modbus_channel_attr_t
 
struct  modbus_comm_attr_t
 
struct  modbus_handle_t
 

Enumerations

enum  modbus_result_t {
  MODBUS_RESULT_OK ,
  MODBUS_RESULT_INVALID ,
  MODBUS_RESULT_UNSUPPORTED ,
  MODBUS_RESULT_BUSY ,
  MODBUS_RESULT_PARITY_ERROR ,
  MODBUS_RESULT_ERR ,
  TOTAL_MODBUS_RESULT
}
 
enum  modbus_status_t {
  MODBUS_STATUS_UNKNOWN ,
  MODBUS_STATUS_OK ,
  MODBUS_STATUS_BUSY ,
  MODBUS_STATUS_STOP ,
  MODBUS_STATUS_SENDING ,
  MODBUS_STATUS_RECEIVING ,
  MODBUS_STATUS_ERR ,
  TOTAL_MODBUS_STATUS
}
 
enum  modbus_func_t {
  MODBUS_FUNC_READ_COIL = 1U ,
  MODBUS_FUNC_READ_DISCRETE_INPUT = 2U ,
  MODBUS_FUNC_READ_HOLDING_REG = 3U ,
  MODBUS_FUNC_READ_INPUT_REG = 4U ,
  MODBUS_FUNC_WRITE_SINGLE_COIL = 5U ,
  MODBUS_FUNC_WRITE_SINGLE_REG = 6U ,
  MODBUS_FUNC_WRITE_MULTIPLE_COIL = 15U ,
  MODBUS_FUNC_WRITE_MULTIPLE_REG = 16U ,
  TOTAL_MODBUS_FUNC
}
 
enum  modbus_baudrate_t {
  MODBUS_BAUDRATE_9600 = 9600U ,
  MODBUS_BAUDRATE_19200 = 19200U ,
  TOTAL_MODBUS_BAUDRATE
}
 

Functions

modbus_result_t hal_modbus_init (modbus_handle_t *handle, const modbus_channel_attr_t attr)
 Configure Modbus channel with specific attributes.
 
modbus_result_t hal_modbus_read (modbus_handle_t *handle, const modbus_comm_attr_t comm_attr, uint8_t *rx_buffer, const size_t len)
 Write data to Modbus.
 
modbus_result_t hal_modbus_stop (modbus_handle_t *handle)
 Stop Modbus operation.
 
modbus_status_t hal_modbus_get_status (modbus_handle_t *handle)
 Get Modbus channel status.
 
modbus_result_t hal_modbus_mutex_take (const uint8_t channel, const uint32_t timeout_ms)
 Try acquire RTOS mutex for specified channel.
 
modbus_result_t hal_modbus_mutex_give (const uint8_t channel)
 Release RTOS mutex for specified channel.
 

Detailed Description

MODBUS.

Enumeration Type Documentation

◆ modbus_baudrate_t

#include <modbus/public_inc/hal_modbus.h>

Enumerator
MODBUS_BAUDRATE_9600 
MODBUS_BAUDRATE_19200 
TOTAL_MODBUS_BAUDRATE 

◆ modbus_func_t

#include <modbus/public_inc/hal_modbus.h>

Enumerator
MODBUS_FUNC_READ_COIL 
MODBUS_FUNC_READ_DISCRETE_INPUT 
MODBUS_FUNC_READ_HOLDING_REG 
MODBUS_FUNC_READ_INPUT_REG 
MODBUS_FUNC_WRITE_SINGLE_COIL 
MODBUS_FUNC_WRITE_SINGLE_REG 
MODBUS_FUNC_WRITE_MULTIPLE_COIL 
MODBUS_FUNC_WRITE_MULTIPLE_REG 
TOTAL_MODBUS_FUNC 

◆ modbus_result_t

#include <modbus/public_inc/hal_modbus.h>

Enumerator
MODBUS_RESULT_OK 

No error.

MODBUS_RESULT_INVALID 

Operation invalid.

MODBUS_RESULT_UNSUPPORTED 

Operation not supported.

MODBUS_RESULT_BUSY 

Bus busy.

MODBUS_RESULT_PARITY_ERROR 

Data parity error occurred.

MODBUS_RESULT_ERR 

Error occurred.

TOTAL_MODBUS_RESULT 

◆ modbus_status_t

#include <modbus/public_inc/hal_modbus.h>

Enumerator
MODBUS_STATUS_UNKNOWN 

Unknown bus status.

MODBUS_STATUS_OK 

No error.

MODBUS_STATUS_BUSY 

bus busy

MODBUS_STATUS_STOP 

Channel stopped.

MODBUS_STATUS_SENDING 

Channel sending.

MODBUS_STATUS_RECEIVING 

Channel receiving.

MODBUS_STATUS_ERR 

Error occured.

TOTAL_MODBUS_STATUS 

Function Documentation

◆ hal_modbus_get_status()

modbus_status_t hal_modbus_get_status ( modbus_handle_t * handle)

#include <modbus/public_inc/hal_modbus.h>

Get Modbus channel status.

modbus_status_t hal_modbus_get_status(modbus_handle_t *handle)
Get Modbus channel status.
modbus_status_t
Definition hal_modbus.h:51
Parameters
[in,out]handleModbus handler
Returns
Modbus channel status

◆ hal_modbus_init()

modbus_result_t hal_modbus_init ( modbus_handle_t * handle,
const modbus_channel_attr_t attr )

#include <modbus/public_inc/hal_modbus.h>

Configure Modbus channel with specific attributes.

modbus_handle_t handle = {
.channel = BSP_MODBUS_CHANNEL_1
};
.recv_pin = 10U,
.drive_pin = 11U,
.recv_en_pin = 12U,
.drive_en_pin = 13U,
.baudrate = 9600U,
.low_power_enable = false
};
modbus_result_t result = hal_modbus_init( &handle, attr );
modbus_result_t
Definition hal_modbus.h:39
modbus_result_t hal_modbus_init(modbus_handle_t *handle, const modbus_channel_attr_t attr)
Configure Modbus channel with specific attributes.
Definition hal_modbus.h:104
uint8_t channel
MODBUS channel.
Definition hal_modbus.h:105
Definition hal_spi.h:80
uint32_t baudrate
Definition hal_spi.h:85
Parameters
[in,out]handleModbus handler
[in]attrModbus channel attribute
Return values
MODBUS_RESULT_OKSuccess configure Modbus channel
MODBUS_RESULT_INVALIDConfiguration attributes invalid
MODBUS_RESULT_UNSUPPORTEDOperation not supported
MODBUS_RESULT_ERRFailed configure Modbus channel

◆ hal_modbus_mutex_give()

modbus_result_t hal_modbus_mutex_give ( const uint8_t channel)

#include <modbus/public_inc/hal_modbus.h>

Release RTOS mutex for specified channel.

modbus_result_t result = hal_modbus_mutex_give( BSP_MODBUS_CHANNEL_1 );
modbus_result_t hal_modbus_mutex_give(const uint8_t channel)
Release RTOS mutex for specified channel.
Parameters
[in]channelModbus channel's mutex to be released
Return values
MODBUS_RESULT_OKSuccess release mutex
MODBUS_RESULT_INVALIDInvalid channel
MODBUS_RESULT_UNSUPPORTEDOperation not supported
MODBUS_RESULT_ERRFailed release mutex

◆ hal_modbus_mutex_take()

modbus_result_t hal_modbus_mutex_take ( const uint8_t channel,
const uint32_t timeout_ms )

#include <modbus/public_inc/hal_modbus.h>

Try acquire RTOS mutex for specified channel.

modbus_result_t res = hal_modbus_mutex_take( BSP_MODBUS_CHANNEL_1, 10U );
modbus_result_t hal_modbus_mutex_take(const uint8_t channel, const uint32_t timeout_ms)
Try acquire RTOS mutex for specified channel.
Parameters
[in]channelModbus channel's mutex to be locked
[in]timeout_msMutex acquiring timeout in milliseconds
Return values
MODBUS_RESULT_OKSuccess acquire mutex
MODBUS_RESULT_INVALIDInvalid channel
MODBUS_RESULT_UNSUPPORTEDOperation not supported
MODBUS_RESULT_ERRFailed acquire mutex

◆ hal_modbus_read()

modbus_result_t hal_modbus_read ( modbus_handle_t * handle,
const modbus_comm_attr_t comm_attr,
uint8_t * rx_buffer,
const size_t len )

#include <modbus/public_inc/hal_modbus.h>

Write data to Modbus.

modbus_comm_attr_t comm_attr = {
.slave_addr = 1U,
.data_addr = 1U
};
uint8_t tx_buffer[] = { 10U, 20U, 30U };
modbus_result_t result = hal_modbus_write( &handle,
&comm_attr,
tx_buffer,
sizeof( tx_buffer ) );
@param[in,out] handle Modbus handler
@param[in] comm_attr Communication attribute
@param[in] tx_buffer Buffer to be transmitted
@param[in] len Buffer size
@retval MODBUS_RESULT_OK Success write Modbus data
@retval MODBUS_RESULT_BUSY Modbus busy
@retval MODBUS_RESULT_PARITY_ERROR Modbus parity error
@retval MODBUS_RESULT_ERR Failed write Modbus data
/
modbus_result_t hal_modbus_write(modbus_handle_t* handle,
const modbus_comm_attr_t comm_attr,
const uint8_t* tx_buffer,
const size_t len);
@ MODBUS_RESULT_ERR
Error occurred.
Definition hal_modbus.h:45
@ MODBUS_RESULT_OK
No error.
Definition hal_modbus.h:40
@ MODBUS_RESULT_PARITY_ERROR
Data parity error occurred.
Definition hal_modbus.h:44
@ MODBUS_RESULT_BUSY
Bus busy.
Definition hal_modbus.h:43
@ MODBUS_FUNC_WRITE_MULTIPLE_REG
Definition hal_modbus.h:72
Definition hal_modbus.h:96
uint32_t slave_addr
Definition hal_modbus.h:97
Parameters
[in,out]handleModbus handler
[in]comm_attrCommunication attribute
[out]rx_bufferReceiving buffer
[in]lenBuffer size
Return values
MODBUS_RESULT_OKSuccess write Modbus data
MODBUS_RESULT_BUSYModbus busy
MODBUS_RESULT_PARITY_ERRORModbus parity error
MODBUS_RESULT_ERRFailed read Modbus data

◆ hal_modbus_stop()

modbus_result_t hal_modbus_stop ( modbus_handle_t * handle)

#include <modbus/public_inc/hal_modbus.h>

Stop Modbus operation.

modbus_result_t result = hal_modbus_stop( &handle );
modbus_result_t hal_modbus_stop(modbus_handle_t *handle)
Stop Modbus operation.
Parameters
[in,out]handleModbus handler
Return values
MODBUS_RESULT_OKSuccess stop Modbus operation
MODBUS_RESULT_UNSUPPORTEDOperation not supported
MODBUS_RESULT_ERRFailed stop Modbus operation