Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AVEVA™ Adapter for Modbus TCP

Optional: Configure Buffering

  • Last UpdatedFeb 07, 2025
  • 3 minute read

You can configure adapters to buffer data egressed from the adapter to endpoints. Buffering is configured through the buffering configuration parameters in the system configuration.

Note: AVEVA recommends that you do not modify the default buffering location unless it is necessary. Changes to the buffering configuration parameters only take effect during adapter service startup.

Configure buffering

Complete the following steps to configure buffering. Use the PUT method in conjunction with the http://localhost:5590/api/v1/configuration/system/buffering REST endpoint to initialize the configuration.

  1. Using a text editor, create an empty text file.

  2. Copy and paste an example configuration for buffering into the file.

    For sample JSON, see the Retrieve the buffering configuration example below.

  3. Update the example JSON parameters for your environment.

    For a table of all available parameters, see the Buffering parameters section.

  4. Save the file. For example, ConfigureBuffering.json.

  5. Open a command line session. Change directory to the location of ConfigureBuffering.json.

  6. To initialize the buffering configuration, send the ConfigureBuffering.json content as request body by Postman (which uses the PUT method) to "http://localhost:5590/api/v1/configuration/OpcUa1/ClientSettings"

    Note: If you installed the adapter to listen on a non-default port, update 5590 to the port number in use.

    For a list of other REST operations you can perform, like updating or replacing a buffering configuration, see the REST URLs section below.

    Alternatively, use the following edgecmd command:

    edgecmd set buffering -file ./ConfigureBuffering.json

Buffering parameters

The following parameters are available for configuring buffering:

Parameter

Required

Type

Description

enablePersistentBuffering

Optional

boolean

Enables or disables on-disk buffering

Allowed value: true or false
Default value: true

Note: If you disable persistent buffering, in-memory buffering is used. On-disk and in-memory buffering are limited by value in the MaxBufferSizeMB property.

maxBufferSizeMB

Optional

integer

Defines the maximum size of the buffer that is persisted on disk 1 or used in memory 2. The unit is specified in MB (1 Megabyte = 1048576 bytes). Consider the capacity and the type of storage medium to determine a suitable value for this parameter.

Minimum value: 1
Maximum value: 2147483647
Default value: 1024

Note: The MaxBufferSizeMB property is applied to each configured endpoint. For example, if you set the MaxBufferSizeMB to 1024 and you configured the adapter to send data to two endpoints (for example, AVEVA PI Server and CONNECT data services), the total maximum resources used for buffering will be 2048. The health endpoint is an exception fixed at 20 MB.

bufferLocation

Required

string

Defines the location of the buffer files. Absolute paths are required. Consider the access-control list (ACL) when you set this parameter. BufferLocation is used to buffer files when EnablePersistentBuffering is true.

Allowed value: Valid path to a folder location in the file system
Default value:

Windows:%ProgramData%\osisoft\Adapters\{AdapterInstance}\Buffers
Linux:/usr/share/osisoft/Adapters/{AdapterInstance}/Buffers

1 Buffering to disk - disk is only used if required;

  • Data is only written to the disk buffer if queued in the memory buffer for more than 5 seconds.

  • The MaxBufferSizeMB is applied per configured endpoint except the health endpoint.

  • An adapter creates 20 MB buffer files that are stored in BufferLocation.

  • When MaxBufferSizeMB is reached, the oldest buffer file is deleted and a new buffer file is created.

  • The health endpoint is fixed at 20 MB. When the health endpoint buffer file becomes full, a new buffer file is created and the previous buffer file is deleted.

    The following rules apply in case of an error when creating a new buffer file:

    • Attempt to delete oldest buffer file and retry.

    • If unable to buffer, errors are logged to indicate data loss.

    • If a buffer file is corrupted, an attempt is made to recover individual records and any failure to recover records is logged.

2 Buffering only to memory:

  • The MaxBufferSizeMB is applied per configured endpoint except the health endpoint.

  • When MaxBufferSizeMB is reached, the oldest messages in the memory buffer are removed. Depending on the size of a new message, several old messages may be removed.

  • The health endpoint is fixed at 20 MB. When the health endpoint buffer file becomes full, the oldest messages in the memory buffer are removed and new messages are added.

Examples

The following examples are buffering configurations made through Postman.

Retrieve the buffering configuration

GET "http://localhost:5590/api/v1/configuration/system/buffering"

Sample output:

{

"bufferLocation": "C:/ProgramData/OSIsoft/Adapters/Modbus TCP/Buffers",

"maxBufferSizeMB": 1024,

"enablePersistentBuffering": true

}

200 OK response indicates success.

Alternatively, use the following edgecmd command:

edgecmd get buffering

Update MaxBufferSizeMb parameter

"PATCH http://localhost:5590/api/v1/configuration/system/buffering"

{

"MaxBufferSizeMB": 100

}

204 No Content response indicates success.

Alternatively, use the following edgecmd command:

edgecmd edit buffering -MaxBufferSizeMB 100

REST URLs

Relative URL

HTTP verb

Action

api/v1/configuration/system/buffering

GET

Gets the buffering configuration

api/v1/configuration/system/buffering

PUT

Replaces the existing buffering configuration

api/v1/configuration/system/buffering

PATCH

Update parameter, partial configuration

In This Topic
TitleResults for “How to create a CRG?”Also Available in