項(xiàng)目背景
??本項(xiàng)目中包含幾套相同的粉灰取樣單體設(shè)備商叹,每次都需要刷卡啟動系統(tǒng)燕刻,現(xiàn)場觸摸屏?xí)@示刷卡的一些信息(計(jì)劃號、單位剖笙、重量卵洗、車號等信息,均為字符串類型)弥咪。刷卡機(jī)是通過RS485接口連接觸摸屏过蹂,觸摸屏不帶存儲卡,刷卡信息在系統(tǒng)運(yùn)行結(jié)束后會自動清零聚至。本項(xiàng)目使用WinCC7.0作為上位機(jī)HMI軟件其中一項(xiàng)內(nèi)容就是實(shí)現(xiàn)下列功能:
- 將刷卡信息存儲到數(shù)據(jù)庫中
- 數(shù)據(jù)庫可以進(jìn)行查詢操作酷勺,并且能導(dǎo)出到excel
??網(wǎng)上有很多教程,但大多有些細(xì)節(jié)方面的問題扳躬,實(shí)現(xiàn)起來總是有些問題脆诉,沒辦法只能自己動手,豐衣足食坦报。
??研究了幾天總算是實(shí)現(xiàn)了功能库说,因?yàn)槭窃谵k公室,所以是用step7寫了模擬程序片择,與WinCC一起仿真來測試報(bào)表功能。下面的介紹均是基于仿真的基礎(chǔ)上骚揍,應(yīng)用到現(xiàn)場只需進(jìn)行一些小的改動即可字管。
建立用戶歸檔
??要求能存儲字符串類型的數(shù)據(jù),本次WinCC報(bào)表使用用戶歸檔來實(shí)現(xiàn)信不,因?yàn)樽兞坑涗浌ぞ呤遣恢С执鎯ψ址愋蛿?shù)據(jù)的嘲叔,而且用戶歸檔控件的事件觸發(fā)比變量記錄要靈活的多。用戶歸檔數(shù)據(jù)保存在WInCC自帶的SQL Server 2005數(shù)據(jù)庫中抽活,后面有詳細(xì)介紹硫戈。
??建立用戶歸檔的方法網(wǎng)上很多,此處就不做介紹下硕,建立如下用戶歸檔“test3”丁逝,域act_time連接內(nèi)部變量“act_time”,域CH連接PLC變量“CH001”(另兩個域“RIQI”和“SHIJIAN”梭姓,分別連接了系統(tǒng)的日期和時間變量霜幼,沒有用到,但懶人作祟誉尖,就沒刪除了)罪既,這里只用這個兩個變量來測試,可以根據(jù)需要增加更多域來連接需要?dú)w檔的變量。
??新建用戶歸檔所需的控制變量“A_ID”琢感、“A_job”丢间,用于控制變量的讀寫操作,在建立用戶歸檔時配置好這兩個變量驹针。當(dāng)ID和指令分別為-1和6時用戶歸檔存儲一次數(shù)據(jù)千劈,存儲、讀取牌捷、刪除操作結(jié)束后指令A(yù)_job都會自動置0墙牌。
控制變量“ID”和“作業(yè)”的其它組合:
ID 作業(yè) =“6” 作業(yè) =“7” 作業(yè) =“8” -1 附加數(shù)據(jù)記錄 - 刪除帶最低 ID 的數(shù)據(jù)記錄 -6 讀取帶最低 ID 的數(shù)據(jù)記錄 寫入帶最低 ID 的數(shù)據(jù)記錄 刪除帶最低 ID 的數(shù)據(jù)記錄 -9 讀取帶最高 ID 的數(shù)據(jù)記錄 寫入帶最高 ID 的數(shù)據(jù)記錄 刪除帶最高 ID 的數(shù)據(jù)記錄
??通過PLC編程給變量來“A_ID”、“A_job”賦值暗甥,刷卡時m0.4來一次脈沖使A_ID=-1喜滨,A_job=6,存儲一次數(shù)據(jù)撤防。
??以上是建立用戶歸檔的方法虽风,打開SQL Server 2005數(shù)據(jù)庫軟件,會發(fā)現(xiàn)多了一個數(shù)據(jù)庫CC_test_17_12_18_11_29_28R寄月,表格中多了個用戶歸檔同名的表“dbo.UA#test3”辜膝,歸檔記錄就存在這個表中,后續(xù)用到的查詢漾肮、導(dǎo)出功能都需要連接到數(shù)據(jù)庫中的這個表厂抖。
WinCC畫面
??在WinCC中新建一個啟動畫面,畫面中添加幾個控件:
- 一個Listview控件克懊,控件對象名稱改為“LT1”忱辅,用于顯示數(shù)據(jù)記錄。
- 兩個DTpicker控件谭溉,名稱改為“DTP1”墙懂、“DTP2”,用于選擇查詢的起止日期扮念。
-
兩個按鈕损搬,一個“查詢”,一個“導(dǎo)出”柜与。
??畫面建立好后巧勤,要實(shí)現(xiàn)數(shù)據(jù)的查詢和導(dǎo)出功能,可以通過在“查詢”和“導(dǎo)出”按鈕中編寫VBS腳本來實(shí)現(xiàn)旅挤。
刷卡時間
??由于現(xiàn)場觸摸屏沒有記錄刷卡時間踢关,在數(shù)據(jù)傳給上位機(jī)時需要把刷卡時間記錄下來,可以使用系統(tǒng)當(dāng)前時間保存到“act_time”變量中粘茄。但是刷卡是一個隨機(jī)事件签舞,所以我們需要添加一個VBS全局腳本秕脓,保存實(shí)時間到“act_time”變量,具體操作如下:
??VBS動作代碼如下儒搭,保存為“Aktion_write.bac”(可自己命名)吠架。
Dim TM
Set TM=HMIRuntime.Tags("act_time")
TM.Value=CStr(Date())&" "&CStr(Time())
TM.Write
??設(shè)置VBS動作觸發(fā)器,標(biāo)準(zhǔn)周期觸發(fā)搂鲫,250毫秒為周期(其實(shí)500毫秒就夠用了傍药,可根據(jù)系統(tǒng)資源來考慮觸發(fā)周期):
??在WinCC中用靜態(tài)文本框,動態(tài)連接變量“act_time”魂仍,測試顯示的時間如下圖拐辽,與系統(tǒng)時間一致地變化:
??這樣在刷卡事件觸發(fā)的時候,用戶歸檔的域act_time就可以存儲刷卡的時間擦酌。