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-d6b11f73d670Jedinečný GUID jako identifikátor projektu--projName ExampleProjectSrozumitelný název projektu--projTimeZone Europe/PragueČasové pásmo projektu
Konfigurace Výstupu
Parametry
--outputDirectory 5eee5946-293c-4753-9495-d6b11f73d670Adresář pro generované soubory--outputFileSuffix _p5(volitelné) Určuje příponu výstupního souboru. V tomto příkladu je název výstupního souboru nastaven na<projId>.data_p5místo<projId>.data.
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
Mapping-Only Mode
Při použití mapovacího souboru s --mdbKeyMappingTable bez zadání --sourceType běží generátor v mapping-only mode:
- Generuje datové body výhradně z definic v mapovacím souboru
- Automaticky směruje do generátoru Mervis DB, takže lze stále konfigurovat další volby (např.
--mdbDpNameKey,--mdbTreeLevelKeys) - Nepotřebuje platné databázové připojení (
--mdbConnStr) - Automaticky nastaví volby
--useDbV2a--mdbExportOnlyIdKeys
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é
--mdbDpNameKeypro 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 3nastavení 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 FixedUniturč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, INT 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