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小时内删除。