Nápověda pro Project Generator

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í.

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

Parametry

  • --outputDirectory 5eee5946-293c-4753-9495-d6b11f73d670 Adresář pro generované soubory

Parametry

  • --mdbKeyMappingTable [filepath] Excelový soubor s direktivami pro zpracování dat. Podporuje více cest k souborům oddělených čárkou.

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'

Parametry

  • --sourceType [MervisDb|DataHub|SharkPlc] Určuje typ zdroje dat

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

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

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

Parametry

  • --mdbFrom [ISO_datetime] Zahrnout pouze proměnné novější než zadaný čas
  • --mdbTo [ISO_datetime] Zahrnout pouze proměnné starší než zadaný čas

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})"

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

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)

Parametry

  • --mdbExportOnlyIdKeys [true|false] Exportovat pouze ID klíče jako parametry ovladače (výchozí: false)

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

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

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

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

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í

Sloupce pro Modbus driver (používá se s Driver: MODBUS)

  • ModbusDeviceAddress – Adresa Modbus zařízení (hodnota v bajtech)
  • ModbusReadFunctionCode – Čtecí funkční kód Modbus
  • ModbusWriteFunctionCode – Zapisovací funkční kód Modbus
  • ModbusStartingAddress – Počáteční adresa registru
  • ModbusQuantity – 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
  • 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
  • © Energocentrum Plus, s.r.o. 2017 - 2025