Project Generator Help

On the https://generator.mervis.info website, you can generate a Mervis SCADA project according to the specified parameters, optionally using a mapping file in XLSX format.

Parameters can be defined either as individual values in the text field or stored in a text file (e.g., params.txt) and selected from your computer.

Additionally, you can use a mapping file in the XLSX format, in which individual data points can be defined. This file allows transforming input values (keys and values) into new ones, enabling the creation of your own data structure for the resulting project.

Individual available options are described below. Specific practical examples are listed on the Examples page.

Settings

Parameters

  • --projId 5eee5946-293c-4753-9495-d6b11f73d670 Unique GUID as project identifier
  • --projName ExampleProject Human-readable project name
  • --projTimeZone Europe/Prague Project timezone

Parameters

  • --outputDirectory 5eee5946-293c-4753-9495-d6b11f73d670 Output directory for generated files

Parameters

  • --mdbKeyMappingTable [filepath] Excel file with data processing directives. Supports multiple comma-separated filepaths.

Parameters

  • --forceTimestamp [value] Force specific timestamp for all generated values (default: min)
    • Options: 'min' (0001-01-01T00:00:00), 'current' (current UTC), or explicit ISO format like '2025-03-25T14:30:00.000'

Parameters

  • --sourceType [MervisDb|DataHub|SharkPlc] Specifies the data source type

Parameters

  • --mdbConnStr [connection_string] MervisDb connection string - Format: rcwaredb://user_name:password@host:port/?protocol=http,endpoint=MervisDbAcces,uriaccess=MervisDbAcces
  • --mdbSourceKeys [keys] Key-value pairs to include in generation
  • --mdbSourceKeysSkip [keys] Key-value pairs to exclude from generation

Parameters

  • --pmUrl [url] Project manager URL - Format: http://localhost:5123/
  • --dataHubUrl [url] Data hub URL - Format: http://localhost:5005/hub/data/
  • --dataHubLogin [username] Data hub login credentials
  • --dataHubPass [password] Data hub password
  • --dataNodeIds [ids] Specific data node IDs to process
  • --dataHubUpdatePeriod [seconds] Update period for data hub read group in seconds (default: 2)
  • --pmPropFilter [filter] PM properties filter

Parameters

  • --connectionType [Tcp|Proxy|CloudAccess] Connection method to SharkPLC
  • --host [hostname] SharkPLC host address
  • --port [number] SharkPLC port number
  • --ssl [true|false] Use TLS/SSL connection
  • --validateCertificate [true|false] Validate SSL certificates
  • --plcAddr [number] Device address (default: 1)
  • --plcUser [username] PLC authentication username
  • --plcPassword [password] PLC authentication password
  • --readTimeout [timespan] Read operation timeout
  • Used with Proxy connectionType:
    • --proxyId [id] Proxy identifier for proxy connections
  • Used with CloudAccess connectionType:
    • --caChannelId [id] CloudAccess channel identifier
    • --caUser [username] CloudAccess username
    • --caPassword [password] CloudAccess password

Parameters

  • --mdbFrom [ISO_datetime] Only include variables newer than specified time
  • --mdbTo [ISO_datetime] Only include variables older than specified time

Parameters

  • --mdbDpNameKey [key_name] Key used for data point names
    • Supports direct key names: Name
    • Supports comma-separated list: Name,Description
    • Supports templates: {Name}
    • Supports regex: "{Name, '([^\:]):(.)', $2} ({Guid})"

Parameters

  • --mdbTreeLevelKeys [path] Keys for hierarchical ordering
    • Example: Level1/Level2/Level3
    • Supports regex syntax at each level
    • See --mdbDpNameKey for template syntax

Parameters

  • --sortBy [keys] Sort data points by specified key values (example: "Level1,Level2,myLevel3,Name")
  • --notSortDataPoints [true|false] Disable alphabetical sorting of data points (default: false)
  • --keepEmptyFolders [true|false] Preserve empty groups in output (default: false)

Parameters

  • --mdbExportOnlyIdKeys [true|false] Export only ID keys as driver parameters (default: false)

Parameters

  • --driverDataUpdatePeriod [milliseconds] Driver variable read update period (default: 100)
  • --dataHubTimestampValidityLimit [timespan] Timestamp validity limit. Communication error is set when timestamp exceeds this limit. (default: none), (example: P1DT4H30M)
  • --mdbUrl [url] Optional. Force DB URL in the data file to this value

Parameters

  • --dpVisualDecimals 3 setting for all numerical data points

Mapping File

  • SetTransformation
    {"type":"linear","unit":"°C","decimalPlaces":1,"params":{"k":0.1, "q":0}}

    defines the number of decimal places for a specific data point

Parameters

  • --mdbUnitKey FixedUnit defines which key should be used to set the unit

Mapping File

  • SetTransformation
    {"type":"linear","unit":"°C","decimalPlaces":1,"params":{"k":0.1, "q":0}}

    defines units for a specific data point

Parameters

  • --dbWriteModeOn [true|false] Enable write mode for database access (default: false)
  • --dbWriteModeDecimals [number] Decimal places for database writes (default: 2)
  • --dbWriteModeNoTriggers [true|false] Disable database write triggers (default: false)
  • --dbWriteModeSamplingInterval [seconds] Sampling interval for database writes
  • --useDbV2 [true|false] Use version 2 database properties (default: false)
  • --dbEnableWriteFromDriver [true|false] Enable write from MervisDb driver (default: false)
  • --dbUseSourcePropertyTimestampForSave [true|false] Use source property's timestamp when saving to DB (default: false)
  • --mdbDataSpecification [specification] Data retrieval specification (default: MaxTimestamp)
    • Options: MinTimestamp, MaxTimestamp, FirstLessThanReferenceDateTime, FirstLessThanOrEqualThanReferenceTime, FirstGreaterThanReferenceDateTime, FirstGreaterThanOrEqualThanReferenceTime, MaxGoodThroughTime
  • --mdbDateTimeShift [timespan] Time shift for data retrieval (example: -PT1H30M)
  • --mdbWriteValueDbSaveInterval [timespan] Save interval for write operations (default: 1H, example: P1DT1H30M)
  • --mdbCommErrorIntervalMultiple [number] Communication error when last value is older than given multiple of interval (0 = disabled)

Mapping File Specification

Data Point Handling Headers

  • dataPointId - Explicit data point GUID
    • Specifies a fixed GUID for the data point
    • Used for explicit data point definitions
    • Must be valid GUID format
  • dataPointType - Data point core type
    • Specifies the core type of the data point
    • Options: DiscreteInput, DiscreteOutput, AnalogInput, AnalogOutput, StringInput, StringOutput, DateTimeInputOutput, PlanningCalendarForBasicTpg, BasicTpg, AlarmPoint
  • dataPointSourceType - Forced source data type
    • Overrides automatic type detection
    • Options: Bool, Int64, Double, String, DateTime
  • getKey[index] - Define condition key for row matching
    • Used to specify which key must match for the row to be applied
    • Index allows multiple condition keys (e.g., getKey1, getKey2)
  • getValue[index] - Define condition value for row matching
    • Specifies the value that must match the corresponding getKey
    • Supports regex patterns when value starts with '^' or ends with '$'
    • Index corresponds to matching getKey index
  • setKey[index] - Set or modify key name
    • Defines which key to set or modify when conditions are met
    • Index allows multiple key modifications per row
  • setValue[index] - Set or modify key value
    • Specifies the value to assign to the corresponding setKey
    • Supports template replacement using {keyname} syntax
    • Index corresponds to matching setKey index
  • setIsId[index] - Mark key as identifier
    • Boolean value (true/false or 1/0) indicating if key is part of unique identifier
    • Index corresponds to matching setKey index
  • setTagKey[index] - Define tag key name
    • Specifies the name of a tag to be added to the data point
    • Index allows multiple tags per row
  • setTagValue[index] - Define tag value
    • Specifies the value for the corresponding settagkey
    • Supports template replacement using {keyname} syntax
    • Index corresponds to matching setTagKey index
  • setTagType[index] - Define tag value type
    • Specifies the data type for the tag value
    • Options: string (default), bool, number
    • Index corresponds to matching setTagKey index
  • setTransformation - Apply data transformation
    • JSON specification for data point transformations
    • Used for value mapping, scaling, or other data processing rules
  • setMetadata - Alternative name for setTransformation
    • Alias for setTransformation column type. Same functionality and syntax as setTransformation
  • setAlarm - Alarm configuration
    • JSON specification for alarm settings
    • Defines alarm conditions, limits, and behaviors
  • [custom][index] - Document generator columns
    • Any column header not matching above patterns becomes a document generator
    • Used for custom property settings and configurations
    • Examples: setProperties1, Driver, setCALayer

Template Replacement Syntax

  • {keyname} - Replace with value of specified key
    • Supports nested replacements and complex expressions
    • Available in setValue, setTagValue, and document generator columns
    • Keys are resolved from the current row's key-value pairs

Special Tag Features

  • *tagname - Prefix tag key with asterisk to allow duplicates
    • Without asterisk: only last value is kept for each tag name
    • With asterisk: multiple values allowed for same tag name

Document Generator Columns (Custom Set Documents)

  • setBlock - Block configuration for data points
    • JSON format for function and alarm blocking
    • Parameters: kind (block type), propRef (property reference), propBlockValue (trigger value)
    • Block types: PermanentFunctionBlock, PermanentAlarmBlock, ConditionalFunctionBlock, ConditionalAlarmBlock
  • setProperties - Data point property definitions
    • JSON format for setting custom properties on data points
    • Supports property types: ReferenceValueProperty, DoubleValueProperty, Int64ValueProperty, BoolValueProperty, StringValueProperty, DateTimeValueProperty
    • Example format:
      {properties: [{name:"PropName", type: "doubleValueProperty", value: "123.45", unit: "°C"}]}
  • setGroupRights - Access rights configuration
    • JSON format for defining user/group permissions. If filled, creates a group for the given data point and sets the specified rights to it. If the group exists, adds rights to it. If there is a right for the entity in the group, it extends it (nothing is removed).
    • Options:
       - type: User/Group
       - access: R/RA/RW
        - R – read-only
        - RA – read and alarm actions
        - RW – read/write
    • Structure:
      {group_name: "GroupName", rights: [{type: "Group", name: "GroupName", access: "rw"}]}
  • Driver - Communication driver type
    • Specifies the driver type for data point communication
    • Options: SSCP, MERVISDB, MODBUS, AMITWEBSOCKET, INSPECTOR, SOFTPLCLINK
    • Triggers driver-specific communication setup
  • DriverChannelParameters - Driver configuration parameters
    • JSON configuration for driver communication settings
    • Contains driver-specific connection parameters (host, port, credentials, etc.)
    • Used in conjunction with Driver column
  • Examples per driver type:

SSCP:

{"pauseBetweenTelegrams": 2000,
 "host": "localhost",
 "port": 12346,
 "user": "admin",
 "password": "rw",
 "proxyId": "PRX232232",
 "ssl": false,
 "slaveId": 0
}

MervisDb:

{"pauseBetweenRequestCycles": "PT10S",
 "writeValueDbSaveInterval": "PT1H",
 "readRequestVariableCount": 1000,
 "url": "http://localhost:9876/RcWareDbAccess",
 "user": "rc_user",
 "password": "rc_user",
 "dataSpecification": 0,
 "dateTimeShift": "PT15M"
}

Modbus:

{ "host": "localhost",
 "port": 502,
 "useCloudAccess": "true",
 "cloudAccess":
 {
   "host": "cloudaccess.mervis.info",
   "port": 23000,
   "ssl": "true",
   "channelId": "chxxxxxxx",
   "user": "uxxxxxxxx",
   "password": "pxxxxxxxx"
  }
}

If the cloudAccess part is specified, it will be used for communication.

AmitWebSocket:

{
 "host": "amitws.mervis.info",
 "port": 80,
 "useCloudAccess": "false",
 "cloudAccess":
 {
   "host": "cloudaccess.mervis.info",
   "port": 23000,
   "ssl": "true",
   "channelId": "chxxxxxxx",
   "user": "uxxxxxxxx",
   "password": "pxxxxxxxx"
  }
}

SoftPlcLink:

Without CloudAccess:

{"host": "hostname",
 "port": portnumber,
 "user": "user",
 "password": "password"}

With CloudAccess:

{"host": "localhost", 
"port": portnumber, 
"user": "user", 
"password": "password", 
"useCloudAccess": "true", 
"cloudAccess": {"host": "host", "port": portnumber, "ssl": "true/false", "channelId": "channel", "user": "user", "password": "password"}}

Planning Calendar Set Documents

  • setCALayer - Planning calendar layer definition
    • JSON format for defining calendar event layers
    • Creates PlanningCalendarValueProperty with event layer data
  • setCADefaultValue - Default calendar value
    • Integer value for planning calendar default state
    • Sets default value for planning calendar data points
  • setCAEmailForNotifications - Email notification settings
    • Email addresses for calendar notifications
    • Configures notification recipients for calendar events
  • setCANotificationBlacklist - Notification blacklist
    • List of excluded email addresses or conditions
    • Prevents notifications to specified recipients
  • setCASumLayer - Calendar summary layer
    • Similar to setCALayer but for summary/aggregated data
    • Creates summary layer for planning calendar
  • setCATPGDefinition - TPG definition for calendar
    • Defines TPG (Time Profile Generator) settings
    • Links planning calendar to PLC communication
  • setCATPGSetup - TPG setup configuration
    • JSON format for TPG setup parameters
    • Includes items, metadata, min/max values, and type settings
    • Example structure:
      {items: [...], max: 100, min: 0, type: "Planning", noExceptions: false}
  • setCAType - Calendar type specification
    • Integer value defining calendar behavior type
    • Determines planning vs. blocking calendar functionality

Modbus Driver Columns (used with Driver: MODBUS)

  • ModbusDeviceAddress - Modbus device address (byte value)
  • ModbusReadFunctionCode - Modbus read function code
  • ModbusWriteFunctionCode - Modbus write function code
  • ModbusStartingAddress - Starting register address
  • ModbusQuantity - Number of registers to read
  • ModbusVariableType - Variable type (Bit, UInt16, SInt16, Float32, etc.)
  • ModbusByteOrder - Byte order configuration

See the Examples page for an example with Modbus specification.

SSCP Driver Columns (used with Driver: SSCP)

  • SSCPCOMMUID - Communication UID (required)
    • Unsigned integer (uint) identifying the communication element
    • Used for addressing specific PLC memory areas
    • Must be valid uint value
  • SSCPOFFSET - Memory offset (required)
    • Unsigned integer (uint) specifying the byte offset in PLC memory
    • Starting position for data read/write operations
    • Must be valid uint value
  • SSCPLEN - Data length (required)
    • Unsigned integer (uint) specifying number of bytes to read/write
    • Defines the size of the data element
    • Must be valid uint value
  • SSCPELEMENTTYPE - Element data type (required)
    • Enum value specifying the data type interpretation
    • Options: BYTE, WORD, DWORD, FLOAT, DOUBLE, etc.
    • Determines how raw bytes are interpreted
  • SSCPTIMEISSYSTEMRTC - System RTC flag (optional)
    • Boolean value (true/false)
    • When true, uses system Real-Time Clock instead of PLC memory
    • Used for timestamp synchronization
    • Defaults to false if not specified
  • SSCPTPGSPECS - TPG specifications (optional)
    • JSON format for Time Profile Generator settings
    • Structure: {ExceptionLength: int, ExceptionOffset: int, HasExceptions: bool, ItemType: enum}
    • Used for planning calendar and time-based control
    • Creates TpgV1_0Specs object when parsed
  • SPLCID - SoftPLC element ID (required)
    • GUID identifying the specific variable in SoftPLC
    • Must be valid GUID format
    • Used for variable addressing and identification
  • SPLCNAME - Variable name (required)
    • String name of the variable in SoftPLC
    • Human-readable identifier for the data element
    • Used alongside ID for variable resolution
  • SPLCDATETIMEISEPOCH - DateTime epoch flag (optional)
    • Boolean value (true/false)
    • When true, treats DateTime values as Unix epoch timestamps
    • When false, uses standard DateTime format
    • Defaults to false if not specified

SCADA Inspector Driver Columns (used with Driver: INSPECTOR)

  • INSPECTORTARGET - Target selector (required)
    • Enum value specifying the inspection target type
    • Determines how the inspector locates the target for monitoring
  • INSPECTORDATAID - Data identifier (required)
    • String identifying the specific data element to inspect
    • Used to locate the exact data point within the target
    • Must match available data IDs in the target system
  • INSPECTORDIRECTTARGET - Direct target reference (required)
    • String reference to the direct target object
    • Used when INSPECTORTARGET is set to DirectTarget
    • Maps to existing driver instances in the project

AMiT WebSocket Driver Columns (used with Driver: AMITWEBSOCKET)

  • AMITWEBSOCKETVARIABLEID - Variable identifier (required)
    • String ID of the variable in the AMiT system
    • Unique identifier for the data element
    • Used for WebSocket communication addressing
  • AMITWEBSOCKETVARIABLETYPE - Variable type (required)
    • Enum value specifying the AMiT variable type
    • Options: BOOL, INT, REAL, BYTE, WORD, DWORD, etc.
    • Determines data type interpretation and communication protocol
  • AMITWEBSOCKETVARIABLEMATRIXROW - Matrix row index (optional)
    • Integer specifying the row index for matrix/array variables
    • Used for accessing specific elements in multi-dimensional data
    • Defaults to 0 if not specified
  • AMITWEBSOCKETVARIABLEMATRIXCOL - Matrix column index (optional)
    • Integer specifying the column index for matrix/array variables
    • Used for accessing specific elements in multi-dimensional data
    • Defaults to 0 if not specified
  • AMITWEBSOCKETVARIABLETPGTYPE - TPG type (optional)
    • Enum value for Time Profile Generator type in AMiT
    • Options: BOOL, INT, REAL, BYTE, WORD, DWORD, UNKNOWN
    • Used for planning calendar and time-based control configuration
    • Automatically configures TPG properties for BasicTpg data points
  • AMITWEBSOCKETVARIABLETPGMIN - TPG minimum value (optional)
    • Double value specifying the minimum range for TPG variables
    • Used in conjunction with TPG type for range validation
    • Applied to BasicTpgInputOutput data point cores
  • AMITWEBSOCKETVARIABLETPGMAX - TPG maximum value (optional)
    • Double value specifying the maximum range for TPG variables
    • Used in conjunction with TPG type for range validation
    • Applied to BasicTpgInputOutput data point cores

Driver Usage Notes

  • All driver-specific columns are used in combination with the Driver column that specifies the driver type
  • Driver configuration is provided through the DriverChannelParameters column (JSON format)
  • Optional columns use sensible defaults when not specified
  • All values support template replacement using {keyname} syntax from row key-value pairs
  • © Energocentrum Plus, s.r.o. 2017 - 2025