抖音粉丝群1
『7x24小时有问必答』

置顶/标星公众号,不错过每一条消息
上次写了篇关于博途序列化指令的文章,希望对大家理解此指令有些帮助。本篇文章来探讨下在WINCC中如何使用序列化来实现一些功能。如通过序列化来保存WINCC中数据。

1.找轮子

WINCC支持ANSI C和Vbscript脚本语言,上网搜了下,看是否有现成的API可供使用(正常思维首先想到的不会是“重造轮子”)。找到了一个叫tpl的开源项目(仓库链接:https://github.com/troydhanson/tpl),感觉知名度还不错。

2.tpl

网站只有源代码下载,两个源文件两个头文件,可以直接添加到自己项目中使用。

1.jpeg

但在WINCC C脚本中使用需要生成dll(我用源代码生成了一个,需要的可在公众号(scadaclub)回复消息“tpldll”下载)。

3.在WINCC中调用

下面是在C脚本中实现官方例子的代码:

数据写入文件:
#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){

#pragma  code("tpl.dll")#include  "tpl.h"#pragma code()

tpl_node *tn;int id=0;char *name, *names[] = { "joe", "bob", "cary" };

tn  =  tpl_map("A(is)",  &id,  &name);for(name=names[0]; id < 3; name=names[++id]) {        tpl_pack(tn,1);        }tpl_dump(tn,  TPL_FILE,  "d:\\users.tpl");tpl_free(tn);

}

从文件读取数据:
#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){

#pragma  code("tpl.dll")#include  "tpl.h"#pragma code()

tpl_node *tn;int id;char *name;

tn = tpl_map("A(is)", &id, &name);tpl_load(tn,  TPL_FILE,  "d:\\users.tpl");while ( tpl_unpack(tn,1) > 0 ) {        printf("id %d, user %s\n", id, name);        free(name);    }tpl_free(tn);

}

最后
若觉得文章对你有帮助,随手点在看、转发分享,也是支持和鼓励。

扫描下面二维码、关注后,在底部菜单中可查看更多内容!  

长按识别图中二维码关注

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码