www.dlt860/thread-217-1-1.html
libiec61850 粗略梳理--001
zhenyuanzi发表于 2015-6-10 10:25:01
libiec61850 程序流程梳理
首先看一个例子的main函数
先不要逐句追求解释
int main(int argc, char** argv) {
int tcpPort = 102;
if (argc > 1) {
tcpPort = atoi(argv[1]);
}
IedServer iedServer = IedServer_create(&iedModel);
// get stored values from persistent storage
// set initial measurement and status values from process
/* MMS server will be instructed to start listening to client connections. */
IedServer_start(iedServer, tcpPort);
if (!IedServer_isRunning(iedServer)) {values什么意思
printf("Starting server failed! Exit.\n");
IedServer_destroy(iedServer);
exit(-1);
}
running = 1;
signal(SIGINT, sigint_handler);
while (running) {
Thread_sleep(1);
}
/* stop MMS server - close TCP server socket and all client sockets */
IedServer_stop(iedServer);
/* Cleanup - free all resources */
IedServer_destroy(iedServer);
} /* main() */
看看这个例子就是建立一个IedServer 再运行起来,这就是一个非常简单的服务端程序。就从这里开始我们的程序流程梳理
首先先看 IedServer 结构体内容
struct sIedServer
{
IedModel* model;
MmsDevice* mmsDevice;
MmsServer mmsServer;
IsoServer isoServer;
MmsMapping* mmsMapping;
LinkedList clientConnections;
uint8_t writeAccessPolicies;
};
出现了一大堆不认识的东西,我就用最形象的比喻来比喻各个东西的作用
IedModel* model;
是什么?
是你的服务器模型 包含逻辑设备 dataset 等各种东东,你的设备功能决定了它的内容
从哪里来?
1 你可以自己代码动态生成
2 你可以用工具将icd文件导出为libiec61850需要的c模板文件
3 你可以将icd文件导出为描述模型结构的实际上是txt但是取了个cfg后缀的文件里面大概是这些东西
Dynamic model generator
parse data type templates ...
parse IED section ...
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论