DataBlock
Datablock est la classe principale de Plc Data Builder.
Elle permet la création de blocs de données et contient toutes les informations que vous lui transmettez.
import {DataBlock , Bool } from "@adclz/plcdatabuilder/types" const MyDataBlock = new DataBlock ({Name : "MyDataBlock", Content : { "MyProperty": new Bool ({}) }})
🏗️ Constructeur
DataBlock.prototype.constructor = <T extends DataBlockProperty>(Params: DataBlockParameters<T>) => DataBlockParams
Paramètres initiaux de construction d'un bloc de données.
interface DataBlockParameters<T extends DataBlockProperty> {
Name: string
Content: T
S7OA?: boolean
Version?: number
Retain?: boolean
Unlinked?: boolean
}Name
DataBlockParameters.Name = StringNom du bloc de données.
Content
Type: Content
DataBlockParameters.Content = Record<string, DataBlockProperty>Content vous permet de définir le contenu de votre bloc de données.
S7OA
DataBlockParameters.Type = booleanPermet de définir si le bloc doit être compilé avec un accès en mémoire optimisé.
Version
DataBlockParameters.Version = numberPermet de définir la version du bloc de donnée, sous la forme x.y.
Retain
DataBlockParameters.Retain = booleanPermet d'indiquer à la CPU que ce bloc doit conserver ses données lors d'une mise hors tension.
Retain s'applique à tous les éléments du DataBlock. Si vous souhaitez que certains éléments ne soit pas rémanents, vous devez changer manuellement
Retain dans ces
élements.Exemple
import {DataBlock} from "@adlcz/plcdatabuilder/types"
const MyDataBlock = new DataBlock({
Name: "MyDataBlock",
S7OA: false,
Version: 0.1,
Retain: false
})📜 Champs
Content
DataBlock.prototype.Content = Record<string, DataBlockProperty>type DataBlockProperty =
PrimitivePlcClass |
UDTImplementation<StructProperties> |
Struct<StructProperty> |
Array_<ArrayProperty>| Type | Description |
|---|---|
PrimitivePlcClass | Représente un type primitif |
UDTImplementation | Implémentation d'une UDT |
Struct | Structure déclarée au sein du bloc |
Array | Tableau |
Content est accessible, il est fortement recommandé de ne pas le modifier apres que le bloc ait été crée
afin de ne pas altérer l'inférence de type de TypeScript. Vous devez donc créer un nouveau
DataBlock à la fin de la création des variables que vous allez mettre à l'intérieur.🧪 Méthodes
GetOffsets
DataBlock.prototype.GetOffsets = () => Map<string, number>Permet de calculer la position en mémoire de chaque élément.
S7OAest mis sur false. Ce qui signifie que l'utilisation de cette méthode ne garanti pas que l'accès en mémoire optimisée est activé.
GetOffsets retourne une Map avec pour clé le nom de chaque propriété dans le bloc et en valeur le décalage en octet
depuis le début du bloc.
L'affichage de la valeur se fais sous la forme x.y ou x représente l'octet ou démarre la variable et y le bit de l'
octet.
"MyProperty": 1.5Ici 1 signifie que MyProperty démarre dans l'octet numéro 1 (donc 2eme octet depuis le début) à la position de bit
5 (6ème bit)
Stringify
Retourne un tableau de string ou chaque élément représente une ligne d'instruction.
DataBlock.prototype.Stringify = () => string[]Stringify dans
un fichier .dbAvec downloadjs
import * as download from "downloadjs"
// ...
const MyCode = MyDataBlock.Stringify()
const Download = () => {
download(MyCode.join("\n"), "MyDataBlock.db", "text/plain")
}