Project Generator Help
Using generator.mervis.info
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
Project Configuration
Project Identity
Parameters
--projId 5eee5946-293c-4753-9495-d6b11f73d670
Unique GUID as project identifier--projName ExampleProject
Human-readable project name--projTimeZone Europe/Prague
Project timezone
Output Configuration
Parameters
--outputDirectory 5eee5946-293c-4753-9495-d6b11f73d670
Output directory for generated files
Mapping File
Parameters
--mdbKeyMappingTable [filepath]
Excel file with data processing directives. Supports multiple comma-separated filepaths.
Timestamp Control
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'
Data Source Configuration
Source Type Selection
Parameters
--sourceType [MervisDb|DataHub|SharkPlc]
Specifies the data source type
MervisDb Configuration
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
Data Hub Configuration
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
SharkPLC Configuration
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
Data Processing Configuration
Time Range Filtering
Parameters
--mdbFrom [ISO_datetime]
Only include variables newer than specified time--mdbTo [ISO_datetime]
Only include variables older than specified time
Data Point Naming
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})"
Hierarchical Organization
Parameters
--mdbTreeLevelKeys [path]
Keys for hierarchical ordering- Example:
Level1/Level2/Level3
- Supports regex syntax at each level
- See
--mdbDpNameKey
for template syntax
Sorting and Organization
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)
Data Filtering
Parameters
--mdbExportOnlyIdKeys [true|false]
Export only ID keys as driver parameters (default: false)
Communication
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
Decimal Places
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
Units
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
Data Storage Configuration
Database Settings
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
General Column Headers 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
Driver-Specific Column Headers
Modbus Driver Columns (used with Driver: MODBUS)
ModbusDeviceAddress
- Modbus device address (byte value)ModbusReadFunctionCode
- Modbus read function codeModbusWriteFunctionCode
- Modbus write function codeModbusStartingAddress
- Starting register addressModbusQuantity
- Number of registers to readModbusVariableType
- 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
SoftPLC Link Driver Columns (used with Driver: SOFTPLCLINK)
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