Module générateur de fonctions « functiongenerator »
Description
LE MODULE « functiongenerator » N'EST QU'UN MODULE DE TEST À USAGE INTERNE !
Il sert à produire des données de canal avec un horodatage correct.
La production s'effectue ici par blocs de données complets.
Interfaces et protocoles utilisés
- AUCUN
Configuration JSON
La section suivante décrit l'ensemble de la configuration JSON du module et explique chacun des paramètres.
Exemple de configuration (configuration typique)
{
"module":"FunctionGenerator",
"factory":"functiongenerator",
"config":{
"maximumProductionCount":-1,
"maximumTimestampDeviation":-1,
"rtPriority":80,
"samplesPerBlock":1,
"timeoutSeconds":1,
"timeoutNanoseconds":0,
"startDate":"1970-01-01T00:00:00Z",
"channels":[
{
"name":"Some Sine Channel",
"dataType":"float",
"bufferSize":1024,
"function":"sine",
"amplitude":1.0,
"offset":0.0,
"frequency":1.0,
"onOffRatio":0.5
},
{
"name":"Some Message Channel",
"dataType":"string",
"function":"messages",
"messages":[
{
"timestamp":"1970-01-01T00:00:05Z",
"text":"Hello, "
},
{
"timestamp":"1970-01-01T00:00:10Z",
"text":"World!"
}
]
},
{
"name":"Some Data Points",
"dataType":"int32",
"function":"datapoints",
"datapoints":[
{
"timestamp":"1970-01-01T00:00:01Z",
"value":42
},
{
"timestamp":"1970-01-01T00:00:02Z",
"value":24
}
]
},
{
"name":"Some Gps Locations",
"dataType":"gpslocation",
"function":"gpslocations",
"gpslocations":[
{
"timestamp":"1970-01-01T00:00:01Z",
"latitude":60.1234567,
"longitude":15.7654321,
"altitude":123.4
},
{
"timestamp":"1970-01-01T00:00:02Z",
"latitude":61.1234567,
"longitude":16.7654321,
"altitude":234.5
}
]
}
]
}
}
Paramètres globaux du module
| Nom du paramètre | Requis | Type de données | Plage de valeurs pertinente | Défaut | Description |
|---|---|---|---|---|---|
| maximumProductionCount | Non | INT | -1, 1 - | -1 | Nombre maximal d'échantillons produits (-1 - infini) |
| maximumTimestampDeviation | Non | INT | -1, 1 - | -1 | Écart maximal d'horodatage [ns] à partir duquel l'horodatage smartCORE actuel est utilisé comme nouvelle base pour la production de blocs mis bout à bout (-1 - l'instant de démarrage est TOUJOURS utilisé comme base de temps) |
| rtPriority | Non | INT | 20 - 80 | 80 | Priorité du thread de production |
| bufferSize | Non | INT | 1 - | 1024 | Taille de tampon globale en échantillons pour tous les canaux |
| samplesPerBlock | Non | INT | 1 - | 1 | Nombre d'échantillons produits dans un bloc |
| timeoutSeconds | Non | INT | 1 - | 1 | Cadence de production (spécification des secondes) |
| timeoutNanoseconds | Non | INT | 1 - | 0 | Cadence de production (spécification des nanosecondes) |
| startDate | Non | STRING | Chaîne UTC Zulu ou "now" | "now" | Instant de démarrage de la production. Pour des résultats reproductibles et dans le contexte de "messages", "datapoints" et "gpslocations", il est judicieux d'utiliser une spécification constante sous forme de chaîne UTC Zulu, tandis que "now" spécifie l'horodatage smartCORE actuel comme instant de démarrage. |
| channels | OUI | JSON Array of JSON Objects | voir ci-dessous |
Configuration d'un canal (objet JSON dans "channels")
| Nom du paramètre | Requis | Type de données | Plage de valeurs pertinente | Défaut | Description |
|---|---|---|---|---|---|
| name | OUI | STRING | Nom du canal | ||
| dataType | OUI | STRING | voir ci-dessous | Type de données du canal | |
| bufferSize | Non | INT | 1 - | "bufferSize" global du module | Taille de tampon du canal créé |
| function | OUI | STRING | voir ci-dessous | fonction à produire | |
| ... | paramètres supplémentaires (voir ci-dessous) |
Types de données de canal pris en charge 'dataType'
Remarque : tous les types de données ne peuvent pas être utilisés de manière pertinente avec toutes les spécifications de fonction "function".
- string (codé en UTF-8)
- bytearray
- double
- float
- int64, int32, int16, int8
- uint64, uint32, uint16, uint8
- bool
- gpslocation
Fonctions prises en charge 'function'
- linear
- sine
- sawtooth
- triangle
- rectangle
- messages
- datapoints
- gpslocations
Fonctions mathématiques
Les fonctions suivantes sont des fonctions mathématiques
- linear
- sine
- sawtooth
- triangle
- rectangle
Elles ont en commun les paramètres suivants
| Nom du paramètre | Requis | Type de données | Plage de valeurs pertinente | Défaut | Description |
|---|---|---|---|---|---|
| amplitude | Non | FLOAT | - 0.0 - | 1.0 | L'amplitude (ou mise à l'échelle multiplicative) de la fonction |
| offset | Non | FLOAT | - 0.0 - | 0.0 | L'offset additif de la fonction |
| frequency | Non | FLOAT | 0.0 - | 1.0 | La fréquence de la fonction [Hz] |
| onOffRatio | Non | FLOAT | -1.0 - 1.0 | 0.5 | Le rapport entre l'état activé et l'état désactivé d'une fonction rectangulaire au sein d'une période ; pour des valeurs négatives, la fonction est désactivée au début d'une période |
Fonction de production de messages 'messages'
Cette fonction permet en général de produire plusieurs messages de type chaîne ou bytearray spécifiés. Il est judicieux ici de définir le paramètre global "startDate" sous forme de chaîne UTC Zulu, et donc une base de temps absolue, car les instants de production des messages sont eux aussi spécifiés de manière absolue.
Un unique tableau JSON "messages" d'objets JSON est spécifié ; ces objets sont paramétrés comme suit :
| Nom du paramètre | Requis | Type de données | Plage de valeurs pertinente | Défaut | Description |
|---|---|---|---|---|---|
| timestamp | OUI | STRING | Chaîne Zulu UTC | Instant de production absolu | |
| text | OUI | STRING | Texte du message (toujours codé en UTF-8) |
Fonction de production de points de données discrets 'datapoints'
Cette fonction permet en général de produire plusieurs points de données (échantillons) spécifiés de types de données SCALAIRES et REPRÉSENTABLES EN JSON. Il est judicieux ici de définir le paramètre global "startDate" sous forme de chaîne UTC Zulu, et donc une base de temps absolue, car les instants de production des points de données sont eux aussi spécifiés de manière absolue.
Un unique tableau JSON "datapoints" d'objets JSON est spécifié ; ces objets sont paramétrés comme suit :
| Nom du paramètre | Requis | Type de données | Plage de valeurs pertinente | Défaut | Description |
|---|---|---|---|---|---|
| timestamp | OUI | STRING | Chaîne Zulu UTC | Instant de production absolu | |
| value | OUI | ... | Valeur du point de données représentée en JSON |
Fonction de production de positions GPS 3D 'gpslocations'
Cette fonction permet en général de produire plusieurs positions GPS spécifiées. Il est judicieux ici de définir le paramètre global "startDate" sous forme de chaîne UTC Zulu, et donc une base de temps absolue, car les instants de production des positions GPS sont eux aussi spécifiés de manière absolue.
Un unique tableau JSON "gpslocations" d'objets JSON est spécifié ; ces objets sont paramétrés comme suit :
| Nom du paramètre | Requis | Type de données | Plage de valeurs pertinente | Défaut | Description |
|---|---|---|---|---|---|
| timestamp | OUI | STRING | Chaîne Zulu UTC | Instant de production absolu | |
| latitude | OUI | FLOAT | Latitude | ||
| longitude | OUI | FLOAT | Longitude | ||
| altitude | OUI | FLOAT | Altitude géographique |
Informations sur le module
| Information | Valeur |
|---|---|
| Auteurs | optiMEAS GmbH |
| depuis smartCORE | 0.1 |
| Type de module | Producer |
| Dépendances | AUCUNE |