libIEC61850
0.8.2
Open-source IEC 61850 MMS/GOOSE server and client library
|
Functions | |
IedModel * | IedModel_create (const char *name) |
create a new IedModel instance More... | |
void | IedModel_destroy (IedModel *model) |
destroy a dynamically created data model More... | |
LogicalDevice * | LogicalDevice_create (const char *name, IedModel *parent) |
Create a new logical device model and add it to the IED model. More... | |
LogicalNode * | LogicalNode_create (const char *name, LogicalDevice *parent) |
Create a new logical mode and add it to a logical device. More... | |
DataObject * | DataObject_create (const char *name, ModelNode *parent, int arrayElements) |
create a new data object and add it to a parent model node More... | |
DataAttribute * | DataAttribute_create (const char *name, ModelNode *parent, DataAttributeType type, FunctionalConstraint fc, uint8_t triggerOptions, int arrayElements, uint32_t sAddr) |
create a new data attribute and add it to a parent model node More... | |
ReportControlBlock * | ReportControlBlock_create (const char *name, LogicalNode *parent, char *rptId, bool isBuffered, char *dataSetName, uint32_t confRef, uint8_t trgOps, uint8_t options, uint32_t bufTm, uint32_t intgPd) |
create a new report control block (RCB) More... | |
SettingGroupControlBlock * | SettingGroupControlBlock_create (LogicalNode *parent, uint8_t actSG, uint8_t numOfSGs) |
create a setting group control block (SGCB) More... | |
GSEControlBlock * | GSEControlBlock_create (const char *name, LogicalNode *parent, char *appId, char *dataSet, uint32_t confRef, bool fixedOffs) |
create a new GSE/GOOSE control block (GoCB) More... | |
PhyComAddress * | PhyComAddress_create (GSEControlBlock *parent, uint8_t vlanPriority, uint16_t vlanId, uint16_t appId, uint8_t dstAddress[]) |
create a PhyComAddress object and add it to a GoCB More... | |
DataSet * | DataSet_create (const char *name, LogicalNode *parent) |
create a new data set More... | |
int | DataSet_getSize (DataSet *self) |
returns the number of elements (entries) of the data set More... | |
DataSetEntry * | DataSet_getFirstEntry (DataSet *self) |
DataSetEntry * | DataSetEntry_getNext (DataSetEntry *self) |
DataSetEntry * | DataSetEntry_create (DataSet *dataSet, char *variable, int index, char *component) |
create a new data set entry (FCDA) More... | |
DataAttribute* DataAttribute_create | ( | const char * | name, |
ModelNode * | parent, | ||
DataAttributeType | type, | ||
FunctionalConstraint | fc, | ||
uint8_t | triggerOptions, | ||
int | arrayElements, | ||
uint32_t | sAddr | ||
) |
create a new data attribute and add it to a parent model node
The parent model node has to be of type LogicalNode or DataObject
name | the name of the data attribute (e.g. "stVal") |
parent | the parent model node |
type | the type of the data attribute (CONSTRUCTED if the type contains sub data attributes) |
fc | the functional constraint (FC) of the data attribte |
triggerOptions | the trigger options (dupd, dchg, qchg) that cause an event notification |
arrayElements | the number of array elements if the data attribute is an array or 0 |
sAddr | an optional short address |
DataObject* DataObject_create | ( | const char * | name, |
ModelNode * | parent, | ||
int | arrayElements | ||
) |
create a new data object and add it to a parent model node
The parent model node has to be of type DataObject or LogicalNode.
name | the name of the data object (e.h. "Mod", "Health" ...) |
parent | the parent model node |
arrayElements | the number of array elements if the data object is an array or 0 |
DataSet* DataSet_create | ( | const char * | name, |
LogicalNode * | parent | ||
) |
create a new data set
name | the name of the data set |
parent | the logical node that hosts the data set (typically a LLN0) |
DataSetEntry* DataSet_getFirstEntry | ( | DataSet * | self) |
int DataSet_getSize | ( | DataSet * | self) |
returns the number of elements (entries) of the data set
self | the instance of the data set |
DataSetEntry* DataSetEntry_create | ( | DataSet * | dataSet, |
char * | variable, | ||
int | index, | ||
char * | component | ||
) |
create a new data set entry (FCDA)
Create a new FCDA reference and add it to the given data set as a new data set member.
Note: Be aware that data set entries are not IEC 61850 object reference but MMS variable names that have to contain the LN name, the FC and subsequent path elements separated by "$" instead of ".". This is due to efficiency reasons to avoid the creation of additional strings.
dataSet | the data set to which the new entry will be added |
variable | the name of the variable as MMS variable name including FC ("$" used as separator!) |
index | the index if the FCDA is an array element, otherwise -1 |
component | the name of the component of the variable if the FCDA is a sub element of an array element. If this is not the case then NULL should be given here. |
DataSetEntry* DataSetEntry_getNext | ( | DataSetEntry * | self) |
GSEControlBlock* GSEControlBlock_create | ( | const char * | name, |
LogicalNode * | parent, | ||
char * | appId, | ||
char * | dataSet, | ||
uint32_t | confRef, | ||
bool | fixedOffs | ||
) |
create a new GSE/GOOSE control block (GoCB)
Create a new GOOSE control block (GoCB) and add it to the given logical node (LN)
name | name of the GoCB relative to the parent LN |
parent | the parent LN |
appId | the application ID of the GoCB |
dataSet | the data set reference to be used by the GoCB |
confRef | the configuration revision |
fixedOffs | indicates if GOOSE publisher shall use fixed offsets (NOT YET SUPPORTED) |
IedModel* IedModel_create | ( | const char * | name) |
create a new IedModel instance
The IedModel object is the root node of an IEC 61850 service data model.
name | the name of the IedModel or NULL (optional - NOT YET USED) |
void IedModel_destroy | ( | IedModel * | model) |
destroy a dynamically created data model
This function will free all the memory allocated for the data model.
NOTE: Do not use this function when using a static data model (static_model.c create by static model generator).
model | the model instance to destroy |
LogicalDevice* LogicalDevice_create | ( | const char * | name, |
IedModel * | parent | ||
) |
Create a new logical device model and add it to the IED model.
name | the name of the new logical device |
parent | the parent IED model |
LogicalNode* LogicalNode_create | ( | const char * | name, |
LogicalDevice * | parent | ||
) |
Create a new logical mode and add it to a logical device.
name | the name of the new logical node |
parent | the parent logical device |
PhyComAddress* PhyComAddress_create | ( | GSEControlBlock * | parent, |
uint8_t | vlanPriority, | ||
uint16_t | vlanId, | ||
uint16_t | appId, | ||
uint8_t | dstAddress[] | ||
) |
create a PhyComAddress object and add it to a GoCB
A PhyComAddress object contains all required addressing informations for a GOOSE publisher.
parent | the parent GSEControlBlock object |
vlanPriority | the priority field of the VLAN tag |
vlanId | the ID field of the VLAN tag |
appId | the application identifier |
dstAddress | the 6 byte multicast MAC address to specify the destination |
ReportControlBlock* ReportControlBlock_create | ( | const char * | name, |
LogicalNode * | parent, | ||
char * | rptId, | ||
bool | isBuffered, | ||
char * | dataSetName, | ||
uint32_t | confRef, | ||
uint8_t | trgOps, | ||
uint8_t | options, | ||
uint32_t | bufTm, | ||
uint32_t | intgPd | ||
) |
create a new report control block (RCB)
Create a new report control block (RCB) and add it to the given logical node (LN).
name | name of the RCB relative to the parent LN |
parent | the parent LN. |
rptId | of the report. If NULL the default report ID (object reference) is used. |
isBuffered | true for a buffered RCB - false for unbuffered RCB |
dataSetName | name (object reference) of the default data set or NULL if no data is set by default |
confRef | the configuration revision |
trgOps | the trigger options supported by this RCB (bit set) |
options | the inclusion options. Specifies what elements are included in a report (bit set) |
bufTm | the buffering time of the RCB in milliseconds (time between the first event and the preparation of the report). |
intgPd | integrity period in milliseconds |
SettingGroupControlBlock* SettingGroupControlBlock_create | ( | LogicalNode * | parent, |
uint8_t | actSG, | ||
uint8_t | numOfSGs | ||
) |
create a setting group control block (SGCB)
Create a new setting group control block (SGCB) and add it to the given logical node (LN).
parent | the parent LN. |
the | active setting group on server startup (1..N) |
the | number of setting groups (N) |