WinCC OA-CTRL-使用CtrlHTTP對外開放數據接口


有的時候我們需要將OA 中的數據提供給上層業務,當然這種需求WinCC OA給了我們很多方法, 比如使用OPC UA Server ,也可以使用API 二次開發,

今天我們使用 OA內置的HttpServer 對外提供RESTful 風格的查詢方式,使用這種方式應該是一般web開發工作人員最為熟悉的方法,

OK,廢話不多說 ,接着擼代碼

准備工作

1)首先我們新建一個數據類型restful

該數據類型下面有三個節點 其中 press temp 為浮點型,width為整形


image

2) 創建多個數據點 並賦值

image

小編在restful數據類型下創建了 data01 data02 data03 三個數據點

編碼

1)新建restfulTest文件,並添加至啟動列表

image

注意control manager 的修改

image

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 數據類型進行了接口的定義,請詳細閱讀代碼

使用瀏覽器測試

image


在瀏覽器中 輸入http://localhost:12000/restful/data01 發現在瀏覽器中已經獲得了想要的結果(上圖示)

我們換一個datapoint data02再來試一下

image

好的,這樣針對一個數據類型的簡易接口就完成了,你學會了么?

后記

為了方便上層業務的調用 我們可以把取出的結果 拼接為json的格式

{
"data02":{
"press":87.12,
"temp":12.1
"width":45,
}
}

這樣就便於跟IT 的小伙伴打交道了,


碼上關注 更多精彩


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM