Nápověda pro Project Generator
Použití generator.mervis.info
Na stránce https://generator.mervis.info lze vygenerovat Mervis SCADA projekt podle zadaných parametrů a volitelně s využitím mapovacího souboru ve formátu XLSX
.
Parametry lze definovat jako jednotlivé hodnoty v textovém poli, nebo mohou být uloženy v textovém souboru (např. params.txt
) a vybrány z vašeho počítače.
Dále lze využít tzv. mapovací soubor ve formátu XLSX
, ve kterém mohou být definovány jednotlivé datové body. V tomto souboru je možné transformovat vstupní hodnoty (klíče a hodnoty) na nové, čímž lze vytvořit vlastní datovou strukturu pro výsledný projekt.
Níže jsou popsány jednotlivé dostupné možnosti. Na stránce Příklady jsou uvedeny konkrétní praktické příklady použití.
Nastavení
Konfigurace Projektu
Identita Projektu
Parametry
--projId 5eee5946-293c-4753-9495-d6b11f73d670
Jedinečný GUID jako identifikátor projektu--projName ExampleProject
Srozumitelný název projektu--projTimeZone Europe/Prague
Časové pásmo projektu
Konfigurace Výstupu
Parametry
--outputDirectory 5eee5946-293c-4753-9495-d6b11f73d670
Adresář pro generované soubory
Mapovací soubor
Parametry
--mdbKeyMappingTable [filepath]
Excelový soubor s direktivami pro zpracování dat. Podporuje více cest k souborům oddělených čárkou.
Řízení časového razítka
Parametry
--forceTimestamp [value]
Vynutit konkrétní časové razítko pro všechny generované hodnoty (výchozí: min)- Možnosti:
'min'
(0001-01-01T00:00:00),'current'
(aktuální UTC), nebo explicitní ISO formát např.'2025-03-25T14:30:00.000'
Konfigurace zdroje dat
Výběr typu zdroje
Parametry
--sourceType [MervisDb|DataHub|SharkPlc]
Určuje typ zdroje dat
Konfigurace MervisDb
Parametry
--mdbConnStr [connection_string]
Připojovací řetězec MervisDb – formát:rcwaredb://user_name:password@host:port/?protocol=http,endpoint=MervisDbAcces,uriaccess=MervisDbAcces
--mdbSourceKeys [keys]
Páry klíč–hodnota, které se mají zahrnout do generování--mdbSourceKeysSkip [keys]
Páry klíč–hodnota, které se mají z generování vynechat
Konfigurace Data Hubu
Parametry
--pmUrl [url]
URL správce projektu – formát: http://localhost:5123/--dataHubUrl [url]
URL datového hubu – formát: http://localhost:5005/hub/data/--dataHubLogin [username]
Uživatelské jméno pro přihlášení k Data Hubu--dataHubPass [password]
Heslo k Data Hubu--dataNodeIds [ids]
Konkrétní ID datových uzlů ke zpracování--dataHubUpdatePeriod [seconds]
Interval aktualizace čtecí skupiny z Data Hubu v sekundách (výchozí: 2)--pmPropFilter [filter]
Filtrování vlastností PM
Konfigurace SharkPLC
Parametry
--connectionType [Tcp|Proxy|CloudAccess]
Typ připojení k SharkPLC--host [hostname]
Adresa hostitele SharkPLC--port [number]
Port SharkPLC--ssl [true|false]
Použít připojení TLS/SSL--validateCertificate [true|false]
Ověřit SSL certifikáty--plcAddr [number]
Adresa zařízení (výchozí: 1)--plcUser [username]
Uživatelské jméno pro autentizaci PLC--plcPassword [password]
Heslo pro autentizaci PLC--readTimeout [timespan]
Časový limit pro čtecí operaci- Používá se s typem připojení Proxy:
--proxyId [id]
Identifikátor proxy pro připojení přes proxy
- Používá se s typem připojení CloudAccess:
--caChannelId [id]
Identifikátor kanálu CloudAccess--caUser [username]
Uživatelské jméno CloudAccess--caPassword [password]
Heslo CloudAccess
Konfigurace zpracování dat
Filtrování podle časového rozsahu
Parametry
--mdbFrom [ISO_datetime]
Zahrnout pouze proměnné novější než zadaný čas--mdbTo [ISO_datetime]
Zahrnout pouze proměnné starší než zadaný čas
Pojmenování datových bodů
Parametry
--mdbDpNameKey [key_name]
Klíč použitý pro názvy datových bodů- Podporuje přímé názvy klíčů:
Name
- Podporuje seznam oddělený čárkami:
Name,Description
- Podporuje šablony:
{Name}
- Podporuje regulární výrazy:
"{Name, '([^\:]):(.)', $2} ({Guid})"
Hierarchická struktura
Parametry
--mdbTreeLevelKeys [path]
Klíče pro hierarchické uspořádání- Příklad:
Level1/Level2/Level3
- Podporuje syntaxi regulárních výrazů na každé úrovni
- Viz také
--mdbDpNameKey
pro použití šablon
Řazení a uspořádání
Parametry
--sortBy [keys]
Řadit datové body podle zadaných klíčů (příklad:"Level1,Level2,myLevel3,Name"
)--notSortDataPoints [true|false]
Zakázat abecední řazení datových bodů (výchozí: false)--keepEmptyFolders [true|false]
Zachovat prázdné skupiny ve výstupu (výchozí: false)
Filtrování dat
Parametry
--mdbExportOnlyIdKeys [true|false]
Exportovat pouze ID klíče jako parametry ovladače (výchozí: false)
Komunikace
Parametry
--driverDataUpdatePeriod [milliseconds]
Interval aktualizace čtení proměnných z ovladače (výchozí: 100)--dataHubTimestampValidityLimit [timespan]
Limit platnosti časového razítka. Při překročení limitu je vyvolána chyba komunikace. (výchozí: žádný), (příklad:P1DT4H30M
)--mdbUrl [url]
Volitelné. Vynutit, aby URL databáze v datovém souboru byla nahrazena touto hodnotou
Desetinná místa
Parametry
--dpVisualDecimals 3
nastavení počtu desetinných míst pro všechny numerické datové body
Mapovací soubor
- SetTransformation
{"type":"linear","unit":"°C","decimalPlaces":1,"params":{"k":0.1, "q":0}}
definuje počet desetinných míst pro konkrétní datový bod
Jednotky
Parametry
--mdbUnitKey FixedUnit
určuje klíč použitý pro nastavení jednotky
Mapovací soubor
- SetTransformation
{"type":"linear","unit":"°C","decimalPlaces":1,"params":{"k":0.1, "q":0}}
definuje jednotky pro konkrétní datový bod
Nastavení databáze
Parametry
--dbWriteModeOn [true|false]
Povolit režim zápisu při přístupu k databázi (výchozí: false)--dbWriteModeDecimals [number]
Počet desetinných míst při zápisu do databáze (výchozí: 2)--dbWriteModeNoTriggers [true|false]
Zakázat spouštěče při zápisu do databáze (výchozí: false)--dbWriteModeSamplingInterval [seconds]
Interval vzorkování pro zápis do databáze--useDbV2 [true|false]
Použít vlastnosti databáze verze 2 (výchozí: false)--dbEnableWriteFromDriver [true|false]
Povolit zápis z ovladače MervisDb (výchozí: false)--dbUseSourcePropertyTimestampForSave [true|false]
Při ukládání do DB použít časové razítko zdrojové vlastnosti (výchozí: false)--mdbDataSpecification [specification]
Specifikace pro získávání dat (výchozí: MaxTimestamp)- Možnosti:
MinTimestamp
,MaxTimestamp
,FirstLessThanReferenceDateTime
,FirstLessThanOrEqualThanReferenceTime
,FirstGreaterThanReferenceDateTime
,FirstGreaterThanOrEqualThanReferenceTime
,MaxGoodThroughTime
--mdbDateTimeShift [timespan]
Časový posun pro načítání dat (příklad:-PT1H30M
)--mdbWriteValueDbSaveInterval [timespan]
Interval ukládání pro zápisové operace (výchozí: 1H, příklad:P1DT1H30M
)--mdbCommErrorIntervalMultiple [number]
Chyba komunikace, pokud je poslední hodnota starší než zadaný násobek intervalu (0 = zakázáno)
Specifikace mapovacího souboru
Obecná specifikace záhlaví sloupců
Záhlaví pro zpracování datových bodů
dataPointId
– Explicitní GUID datového bodu- Určuje pevný GUID pro datový bod
- Používá se pro explicitní definice datových bodů
- Musí být ve formátu platného GUID
dataPointType
– Základní typ datového bodu- Určuje základní typ datového bodu
- Možnosti:
DiscreteInput
,DiscreteOutput
,AnalogInput
,AnalogOutput
,StringInput
,StringOutput
,DateTimeInputOutput
,PlanningCalendarForBasicTpg
,BasicTpg
,AlarmPoint
dataPointSourceType
– Vynucený typ zdrojových dat- Přepisuje automatickou detekci typu
- Možnosti:
Bool
,Int64
,Double
,String
,DateTime
getKey[index]
– Definice klíče podmínky pro porovnání řádku- Určuje, který klíč musí odpovídat, aby byl řádek aplikován
- Index umožňuje více klíčů podmínek (např.
getKey1
,getKey2
)
getValue[index]
– Definice hodnoty podmínky pro porovnání řádku- Určuje hodnotu, která musí odpovídat příslušnému getKey
- Podporuje regulární výrazy, pokud hodnota začíná znakem '^' nebo končí '$'
- Index odpovídá indexu klíče getKey
setKey[index]
– Nastavení nebo úprava názvu klíče- Určuje, který klíč má být nastaven nebo upraven, pokud jsou splněny podmínky
- Index umožňuje více úprav klíčů na řádek
setValue[index]
– Nastavení nebo úprava hodnoty klíče- Určuje hodnotu, která bude přiřazena příslušnému setKey
- Podporuje šablonové nahrazení pomocí syntaxe
{keyname}
- Index odpovídá indexu setKey
setIsId[index]
– Označení klíče jako identifikátoru- Boolean hodnota (true/false nebo 1/0) určující, zda je klíč součástí unikátního identifikátoru
- Index odpovídá indexu setKey
setTagKey[index]
– Definice názvu tagu- Určuje název tagu, který bude přidán k datovému bodu
- Index umožňuje více tagů na řádek
setTagValue[index]
– Definice hodnoty tagu- Určuje hodnotu pro příslušný setTagKey
- Podporuje šablonové nahrazení pomocí syntaxe
{keyname}
- Index odpovídá indexu setTagKey
setTagType[index]
– Definice typu hodnoty tagu- Určuje datový typ hodnoty tagu
- Možnosti:
string
(výchozí),bool
,number
- Index odpovídá indexu setTagKey
setTransformation
– Aplikace transformace dat- JSON specifikace pro transformace datových bodů
- Používá se pro mapování hodnot, škálování nebo jiné zpracování dat
setMetadata
– Alternativní název pro setTransformation- Alias pro typ sloupce
setTransformation
. Stejná funkcionalita a syntaxe jako setTransformation
setAlarm
– Konfigurace alarmu- JSON specifikace pro nastavení alarmu
- Definuje podmínky, limity a chování alarmu
[custom][index]
– Sloupce generátoru dokumentace- Jakýkoliv název sloupce, který neodpovídá výše uvedeným vzorům, se stává generátorem dokumentace
- Používá se pro vlastní nastavení vlastností a konfigurace
- Příklady:
setProperties1
,Driver
,setCALayer
Syntaxe šablonového nahrazení
{keyname}
– Nahrazuje se hodnotou zadaného klíče- Podporuje vnořená nahrazení a složité výrazy
- Dostupné ve sloupcích setValue, setTagValue a generátorech dokumentace
- Klíče jsou vyhodnoceny z dvojic klíč-hodnota aktuálního řádku
Speciální funkce tagů
*tagname
– Předpona hvězdičky pro povolení duplicitních tagů- Bez hvězdičky: uchovává se pouze poslední hodnota pro daný název tagu
- S hvězdičkou: povoluje více hodnot pro stejný název tagu
Sloupce generátoru dokumentace (vlastní dokumenty)
setBlock
– Konfigurace blokování pro datové body- JSON formát pro funkční a alarmové blokování
- Parametry:
kind (typ blokování)
,propRef
(referenční vlastnost),propBlockValue
(hodnota, která aktivuje blokování) - Typy blokování:
PermanentFunctionBlock
,PermanentAlarmBlock
,ConditionalFunctionBlock
,ConditionalAlarmBlock
setProperties
– Definice vlastností datového bodu- JSON formát pro nastavení vlastních vlastností datových bodů
- Podporované typy vlastností:
ReferenceValueProperty
,DoubleValueProperty
,Int64ValueProperty
,BoolValueProperty
,StringValueProperty
,DateTimeValueProperty
- Příklad:
{properties: [{name:"PropName", type: "doubleValueProperty", value: "123.45", unit: "°C"}]}
setGroupRights
– Konfigurace přístupových práv- JSON formát pro definici oprávnění uživatelů/skupin. Pokud je vyplněno, vytvoří se skupina pro daný datový bod a přiřadí se jí zadaná oprávnění. Pokud skupina již existuje, přidají se práva. Pokud má entita již práva, dojde k jejich rozšíření (nic se neodebírá).
- Možnosti:
- type: User/Group - access: R/RA/RW - R – pouze pro čtení - RA – čtení a akce s alarmy - RW – čtení/zápis
- Struktura:
{group_name: "GroupName", rights: [{type: "Group", name: "GroupName", access: "rw"}]}
Driver
– Typ komunikačního driveru- Určuje typ driveru pro komunikaci datového bodu
- Možnosti:
SSCP
,MERVISDB
,MODBUS
,AMITWEBSOCKET
,INSPECTOR
,SOFTPLCLINK
- Spouští nastavení specifická pro daný driver
DriverChannelParameters
– Parametry konfigurace driveru- JSON konfigurace komunikačních parametrů driveru
- Obsahuje parametry připojení specifické pro daný driver (host, port, přihlašovací údaje atd.)
- Používá se ve spojení se sloupcem Driver
- Příklady podle typu driveru:
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" } }
Pokud je specifikována část cloudAccess, bude použita pro komunikaci.
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
:
Bez CloudAccess:
{"host": "hostname", "port": portnumber, "user": "user", "password": "password"}
S 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"}}
Dokumenty pro plánovací kalendář
setCALayer
– Definice vrstvy plánovacího kalendáře- JSON formát pro definici vrstev událostí kalendáře
- Vytváří vlastnost PlanningCalendarValueProperty s daty vrstvy událostí
setCADefaultValue
– Výchozí hodnota kalendáře- Celé číslo určující výchozí stav plánovacího kalendáře
- Nastavuje výchozí hodnotu pro datové body kalendáře
setCAEmailForNotifications
– Nastavení e-mailových notifikací- E-mailové adresy pro notifikace z kalendáře
- Nastavuje příjemce notifikací pro události
setCANotificationBlacklist
– Seznam vyloučení notifikací- Seznam vyloučených e-mailových adres nebo podmínek
- Zabraňuje odesílání notifikací na zadané adresy
setCASumLayer
– Vrstva souhrnu kalendáře- Podobné jako setCALayer, ale pro souhrnná/agregovaná data
- Vytváří souhrnnou vrstvu plánovacího kalendáře
setCATPGDefinition
– Definice TPG pro kalendář- Definuje nastavení TPG (Time Profile Generator)
- Propojuje plánovací kalendář s komunikací PLC
setCATPGSetup
– Konfigurace TPG nastavení- JSON formát parametrů TPG
- Zahrnuje položky, metadata, min/max hodnoty a typy
- Příklad struktury:
{items: [...], max: 100, min: 0, type: "Planning", noExceptions: false}
setCAType
– Specifikace typu kalendáře- Celé číslo určující typ chování kalendáře
- Určuje funkci plánování vs. blokování
Záhlaví specifická pro drivery
Sloupce pro Modbus driver (používá se s Driver: MODBUS)
ModbusDeviceAddress
– Adresa Modbus zařízení (hodnota v bajtech)ModbusReadFunctionCode
– Čtecí funkční kód ModbusModbusWriteFunctionCode
– Zapisovací funkční kód ModbusModbusStartingAddress
– Počáteční adresa registruModbusQuantity
– Počet registrů ke čteníModbusVariableType
– Typ proměnné (Bit, UInt16, SInt16, Float32 atd.)ModbusByteOrder
– Konfigurace pořadí bajtů
Viz stránka Příklady pro příklad se specifikací Modbus.
Sloupce pro SSCP driver (používá se s Driver: SSCP)
SSCPCOMMUID
– Komunikační UID (povinné)- Nezáporné celé číslo (uint), identifikující komunikační prvek
- Používá se pro adresování konkrétních paměťových oblastí v PLC
- Musí být platná hodnota uint
SSCPOFFSET
– Offset v paměti (povinné)- Nezáporné celé číslo (uint), určující bajtový posun v paměti PLC
- Výchozí pozice pro čtení/zápis dat
- Musí být platná hodnota uint
SSCPLEN
– Délka dat (povinné)- Nezáporné celé číslo (uint), určující počet bajtů pro čtení/zápis
- Definuje velikost datového prvku
- Musí být platná hodnota uint
SSCPELEMENTTYPE
– Datový typ prvku (povinné)- Enum hodnota určující způsob interpretace dat
- Možnosti: BYTE, WORD, DWORD, FLOAT, DOUBLE atd.
- Určuje způsob zpracování surových bajtů
SSCPTIMEISSYSTEMRTC
– Příznak systémového RTC (volitelné)- Boolean hodnota (true/false)
- Pokud je true, používá se systémové RTC místo paměti PLC
- Používá se pro synchronizaci časových razítek
- Výchozí hodnota je false, pokud není zadána
SSCPTPGSPECS
– Specifikace TPG (volitelné)- JSON formát pro nastavení Time Profile Generator
- Struktura: {ExceptionLength: int, ExceptionOffset: int, HasExceptions: bool, ItemType: enum}
- Používá se pro plánovací kalendář a řízení na základě času
- Při zpracování se vytváří objekt TpgV1_0Specs
Sloupce pro SoftPLC Link driver (používá se s Driver: SOFTPLCLINK)
SPLCID
– ID prvku SoftPLC (povinné)- GUID identifikující konkrétní proměnnou v SoftPLC
- Musí být platný GUID
- Používá se pro adresování a identifikaci proměnných
SPLCNAME
– Název proměnné (povinné)- Řetězec – název proměnné v SoftPLC
- Identifikátor datového prvku pro uživatele
- Používá se spolu s ID pro vyhledání proměnné
SPLCDATETIMEISEPOCH
– Příznak epochy pro DateTime (volitelné)- Boolean hodnota (true/false)
- Pokud je true, DateTime hodnoty jsou ve formátu Unix epoch timestamp
- Pokud je false, používá se standardní formát DateTime
- Výchozí hodnota je false, pokud není specifikováno
Sloupce pro SCADA Inspector driver (používá se s Driver: INSPECTOR)
INSPECTORTARGET
– Cílový selektor (povinné)- Enum hodnota určující typ kontrolovaného cíle
- Určuje, jak inspektor najde cíl ke sledování
INSPECTORDATAID
– Identifikátor dat (povinné)- Řetězec identifikující konkrétní datový prvek ke kontrole
- Používá se pro přesné vyhledání datového bodu v cíli
- Musí odpovídat dostupným ID ve sledovaném systému
INSPECTORDIRECTTARGET
– Přímý odkaz na cíl (povinné)- Řetězcový odkaz na konkrétní objekt cíle
- Používá se, pokud je INSPECTORTARGET nastaven na DirectTarget
- Mapuje se na existující instance driveru v projektu
Sloupce pro AMiT WebSocket driver (používá se s Driver: AMITWEBSOCKET)
AMITWEBSOCKETVARIABLEID
– Identifikátor proměnné (povinné)- ID proměnné v systému AMiT
- Jedinečný identifikátor pro datový prvek
- Používá se pro adresování v komunikaci přes WebSocket
AMITWEBSOCKETVARIABLETYPE
– Typ proměnné (povinné)- Enum hodnota určující typ proměnné v AMiT systému
- Možnosti: BOOL, INT, REAL, BYTE, WORD, DWORD atd.
- Určuje interpretaci datového typu a použitý komunikační protokol
AMITWEBSOCKETVARIABLEMATRIXROW
– Index řádku matice (volitelné)- Celé číslo určující index řádku pro proměnné typu matice/pole
- Používá se pro přístup ke konkrétním prvkům v matici
- Výchozí hodnota je 0, pokud není zadáno
AMITWEBSOCKETVARIABLEMATRIXCOL
– Index sloupce matice (volitelné)- Celé číslo určující index sloupce pro proměnné typu matice/pole
- Používá se pro přístup ke konkrétním prvkům v matici
- Výchozí hodnota je 0, pokud není zadáno
AMITWEBSOCKETVARIABLETPGTYPE
– Typ TPG (volitelné)- Enum hodnota pro typ Time Profile Generator v AMiT
- Možnosti: BOOL, INT, REAL, BYTE, WORD, DWORD, UNKNOWN
- Používá se pro konfiguraci plánovacího kalendáře a řízení podle času
- Automaticky nastavuje TPG vlastnosti pro datové body typu BasicTpg
AMITWEBSOCKETVARIABLETPGMIN
– Minimální hodnota TPG (volitelné)- Číselná hodnota určující minimální rozsah pro proměnné TPG
- Používá se s typem TPG pro validaci rozsahu
- Aplikuje se na jádra datových bodů typu BasicTpgInputOutput
AMITWEBSOCKETVARIABLETPGMAX
– Maximální hodnota TPG (volitelné)- Číselná hodnota určující maximální rozsah pro proměnné TPG
- Používá se s typem TPG pro validaci rozsahu
- Aplikuje se na jádra datových bodů typu BasicTpgInputOutput
Poznámky k použití driverů
- Všechny sloupce specifické pro driver se používají ve spojení se sloupcem Driver, který určuje typ driveru
- Konfigurace driveru se zadává ve sloupci DriverChannelParameters (formát JSON)
- Volitelné sloupce mají rozumné výchozí hodnoty, pokud nejsou zadány
- Všechny hodnoty podporují šablonové nahrazení pomocí syntaxe {keyname} z klíčů a hodnot daného řádku