在WINCC中,如何从数据库中查询各种测试结果?

目前有不同型号的电机需要测试,比如A型号电机有30台,测完后假定有10台不满足要求,接下来再测30台B型号电机,有15台不满足要求,依次类似。。
    现在想建立一个数据库,记录各种型号电机的测试数量、合格数量等,现在我已经可以监控出这些数据,该怎么样把它们都记录到数据库里,并且以后可以随时查询?
    这个查询的过程,操作员是需要打开SQL来查,还是可以直接在WINCC界面中,做一个查询页面?
    我对PLC比较熟悉,也能通过WINCC对PLC做一些基本的监控,但对数据库实在是不熟悉。
    希望大家可以帮我想想这个程序的框架和实现的思路,我好慢慢摸索,谢谢大家!!!!
    (我对数据库不熟,这一块儿麻烦多给我出出注意。)

问题补充:
这个查询的过程,操作员是需要打开SQL来查,还是可以直接在WINCC界面中,做一个查询页面?

 

最佳答案

如果只把测试数量和合格的数据写到数据库中,那很好办!!用VBS比较简单。
 首先要在SQL2000中建立一个表,表自己设计吧,应该用三个字段就行了,一个表示测试种类,一个表示测试数量,一个表示合格数量。
 用VBS访问的总体步骤如下:
 定义变量:
 Dim ConnectionObj
 Dim Connectionstring
 Dim CommandStr_TimeStart 
 Dim CommandStr_TimeEnd
 Dim CommandObj
 Dim RecordSetObj
 先获取界面上所要写入的数据。
 Test_class=HMIRuntime.Tags("test_class").Read '其中test_class是wincc中的变量。
 test_num=HMIRuntime.Tags("test_num").Read 
 num_passed=HMIRuntime.Tags("num_passed").Read 
 '建立连接字符串
 Connectionstring="Provider=WinCCOLEDBProvider.1;Catalog=CC_cc_09_01_07_13_16_32R;Data Source=.\WinCC"
 '因为是自己建的表,所以访问是把要用的命令改为对表的操作命令就行了。不用用西门子的专用命令。
 CommandStr_TimeStart="Tag:R,'cc\NewTag',"
 CommandStr_TimeStart=CommandStr_TimeStart+"'"+starttime+"'"+","+"'"+endtime+"'"

 Set ConnectionObj=CreateObject("ADODB.Connection")
 ConnectionObj.ConnectionString=Connectionstring
 ConnectionObj.CursorLocation=3
 ConnectionObj.Open

 Set RecordSetObj=CreateObject("ADODB.Recordset")
 Set CommandObj=CreateObject("ADODB.Command")

 Set CommandObj.ActiveConnection=ConnectionObj
 CommandObj.CommandType=1

 CommandObj.CommandText=CommandStr_TimeStart
 Set RecordSetObj=CommandObj.Execute

 If RecordSetObj.EOF Then
 MsgBox "no data found or data has not archived!",,"Error"
 RecordSetObj.Close
 Set RecordSetObj=Nothing
 Set CommandObj=Nothing
 ConnectionObj.Close
 Set ConnectionObj=Nothing
 Else
 RecordSetObj.MoveFirst
 temp1=RecordSetObj.Fields(2).Value

 RecordSetObj.MoveLast
 temp2=RecordSetObj.Fields(2).Value

 resultt=temp2-temp1
 HMIRuntime.Tags("Result").Write resultt

 
 RecordSetObj.Close
 Set RecordSetObj=Nothing
 Set CommandObj=Nothing
 ConnectionObj.Close
 Set ConnectionObj=Nothing
 End If
 上面的代码只看对几个数据对象的操作就行了,格式就是那样,其他要改是的连接字符串和数据库操作命令。

提问者对于答案的评价:
非常感谢 “null”!  其他几位也谢了!   
 

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc274613.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐