✨ Udt
Udt permet la création de structures de données de façon globale.
import {UDT , Bool } from "@adclz/plcdatabuilder/types" const MyUdt = new UDT ({Name : "MyUdt", Version : 0.1, Content : {"MyProperty1": new Bool ({})}})
🏗️ Constructeur
UDT.prototype.constructor = <T extends StructProperties, Y extends string, U extends number>(Params: UDTParameters<T, Y, U>) => UDTParams
Paramètres initiaux de construction d'une structure.
interface UDTParameters<T extends StructProperties, Y extends string, U extends number> extends BaseTypeParameters {
Content: T
Name: Y
Version: U
}Content
Type: Content
UDTParameters.Content = StructPropertiesStruct pour la construction de Content.Implement ou Self. Les valeurs par défaut lors de la création de l'UDT seront utilisées dans l'implémentation de l'UDT si elles ne sont pas surchargées.
Voir
ImplementVersion
UDTParameters.Version = numberPermet définir la version de l'udt, sous la forme x.y.
Name
UDTParameters.Name = stringNom de la structure.
📜 Champs
Content
Struct.prototype.Content = StructPropertiestype StructProperties = Record<string,
PrimitivePlcClass
| UDTImplementation<StructProperties>
| Struct<StructProperties>
| 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 |
🧪 Méthodes
OverrideStructName est utilisé en interne par DataBlock afin de générer le nom de la structure.GetOffsets
UDT.prototype.GetOffsets = (OverrideStructName?: string) => Map<string, number>Positions des champs de la structure en mémoire.
Implement
UDT.prototype.Implement = <T, Y, U>(Params?: { Content: T, BaseParams?: BaseTypeParameters }) => UDTImplementation<T, Y, U>Permet d'implémenter l'UDT dans un autre type de données.
Vous pouvez surcharger les valeurs par défaut de l'UDT en utilisant le paramètre Params.
import {UDT , DataBlock , Bool } from "@adclz/plcdatabuilder/types" const MyUdt = new UDT ({Name : "MyUdt", Version : 0.1, Content : {"MyUdtProperty": new Bool ({})}}) // ✔️const MyDataBlock1 = new DataBlock ({ Name : "MyDataBlock1", Content : { "MyProperty": MyUdt .Implement ({ Content : { "MyUdtProperty": new Bool ({DefaultValue : true}) } }) }}) // ️️❌const MyDataBlock2 = new DataBlock ({ Name : "MyDataBlock2", Content : { "MyProperty" : MyUdt Type 'UDT<{ MyUdtProperty: Bool; }, "MyUdt", 0.1>' is not assignable to type 'PrimitivePlcClass | UDTImplementation<StructProperties, string, number> | Struct<StructProperties> | Array_<...>'.
Type 'UDT<{ MyUdtProperty: Bool; }, "MyUdt", 0.1>' is missing the following properties from type 'UDTImplementation<StructProperties, string, number>': GetOffsets, StringifyHeader, StringifyBody2322Type 'UDT<{ MyUdtProperty: Bool; }, "MyUdt", 0.1>' is not assignable to type 'PrimitivePlcClass | UDTImplementation<StructProperties, string, number> | Struct<StructProperties> | Array_<...>'.
Type 'UDT<{ MyUdtProperty: Bool; }, "MyUdt", 0.1>' is missing the following properties from type 'UDTImplementation<StructProperties, string, number>': GetOffsets, StringifyHeader, StringifyBody }})
Self
UDT.prototype.Self = UDT.prototype.Implement({})Similaire à Implement, sauf que Self retourne toutes les valeurs par défaut de l'UDT.
Il est égal à Implement({}) mais permet de montrer que vous ne souhaitez pas surcharger les valeurs par défaut.
import {UDT , DataBlock , Bool } from "@adclz/plcdatabuilder/types" const MyUdt = new UDT ({Name : "MyUdt", Version : 0.1, Content : {"MyUdtProperty": new Bool ({})}}) const MyDataBlock1 = new DataBlock ({ Name : "MyDataBlock1", Content : { "MyProperty": MyUdt .Self () }})
StringifyHeader
UDT.prorotype.StringifyHeader = (OverrideStructName?: string) => string[]En-tête de la structure.
StringifyBody
UDT.prototype.StringifyBody = (OverrideStructName?: string) => string[]Corps de la structure avec les valeurs par défauts (si définies).
StringifyUdt
UDT.prototype.StringifyUdt = () => string[]Permet de générer le contenu d'un fichier .udt.
Ce fichier peut être importé dans Tia Portal permettant de déclarer la structure de façon globale.
StringifyUDT
dans un fichier .udtAvec downloadjs
import * as download from "downloadjs"
// ...
const MyCode = MyUdt.StringifyUDT()
const Download = () => {
download(MyCode.join("\n"), "MyUdt.udt", "text/plain")
}✨ Exemple
Cet exemple montre le résultat de la méthode StringifyUDT.