WinCC OA-CTRL-使用CtrlHTTP对外开放数据接口
序
有的时候我们需要将OA 中的数据提供给上层业务,当然这种需求WinCC OA给了我们很多方法, 比如使用OPC UA Server ,也可以使用API 二次开发,
今天我们使用 OA内置的HttpServer 对外提供RESTful 风格的查询方式,使用这种方式应该是一般web开发工作人员最为熟悉的方法,
OK,废话不多说 ,接着撸代码
准备工作
1)首先我们新建一个数据类型restful
该数据类型下面有三个节点 其中 press temp 为浮点型,width为整形
2) 创建多个数据点 并赋值
小编在restful数据类型下创建了 data01 data02 data03 三个数据点
编码
1)新建restfulTest文件,并添加至启动列表
注意control manager 的修改
2编码restfunTest.ctl
#uses "CtrlHTTP" main() { httpServer(FALSE, 12000,0); // 初始化http server 端口12000 /*注意通配符*的使用*/ httpConnect("getRestful", "/restful/*"); //定义restful类型的接口 } string getRestful(dyn_string names, dyn_string values, string user, string ip, dyn_string headerNames, dyn_string headerValues, int idx) {string result;
string tag;
int rc;
dyn_string numbers;
string sURI = httpGetURI(idx);//!!!!!重要
strreplace(sURI,"/restful/","");//替换"/restful/"为空/ 拼接为"System1:data01." /
tag ="System1:"+sURI+".";
numbers = dpNames(tag+"*");
//遍历datapoint 下数据点
for(int i =1;i<=numbers.count();i++)
{
anytype temp;
//获取datapoint 下数据点值
dpGet(numbers[i],temp);
result += numbers[i]+" = "+temp+"<br/>";//<br/> 为html的换行符
}return result;
}
这里我们针对 restful 数据类型进行了接口的定义,请详细阅读代码
使用浏览器测试
在浏览器中 输入http://localhost:12000/restful/data01 发现在浏览器中已经获得了想要的结果(上图示)
我们换一个datapoint data02再来试一下
好的,这样针对一个数据类型的简易接口就完成了,你学会了么?
后记
为了方便上层业务的调用 我们可以把取出的结果 拼接为json的格式
{
"data02":{
"press":87.12,
"temp":12.1
"width":45,
}
}
这样就便于跟IT 的小伙伴打交道了,