用wincc实现上位调度系统

现需用wincc v6.2实现上位调度系统,请问各位高手,大体上应该如何实现。调度功能:多个呼叫终端都可以下达任务存储在上位主机(wincc v6.2)中,然后由主机统一分配任务给下面的多个车(每个车上配一个S7-200),如果只有一个车,上位需要存储任务然后根据呼叫任务的时间先后顺序执行,如果有多个车,上位需要将多个呼叫任务分配给多个车执行,并且呼叫任务可以允许人工进行插队,将某些任务提前。请问各位大侠  如何利用wincc来实现,如何利用wincc本身的数据库来实现。不胜感激!万分感谢!急!如有此方面的资料请帮忙发往aww120@sina.com     谢谢!

最佳答案

如果你一定要用Wincc实现的话,结合数据库的功能应该可以实现,首先
1)你要知道数据库的一些操作:
Dim cnn As String
    cnn = "Provider=SQLOLEDB.1;Password=3333;Persist Security Info=True;User ID=sa;Initial Catalog=dbuser" & ";Data Source=计算机名\wincc"
   Set cc1 = CreateObject("adodb.connection")
       cc1.ConnectionString = cnn
       cc1.CursorLocation = 3
       cc1.Open
   Dim rst As Object
   Set rst = CreateObject("adodb.recordset")
   Dim ssql As String
       ssql = "select * from table1 where PriorityLevel>10"
       rst.Open ssql, cc1
       cc1.Close
   Set cc1 = Nothing
   Set rst = Nothing

其中的User ID和Password是给数据库建立的一个安全访问的用户,dbuser为自己建立的一个数据,在dbuser可以自己建立数据库表格,比如建立table1存储你的一些调度的数据,需要哪些数据那就你自己定了,但你需要人工进行插队的功能就得建立一个优先级的字段,比如PriorityLevel ;以上为数据库查询,如果要写入数据库把ssql修改:
    ssql="insert into table1 values( ‘字段一的数据’,’字段二的数据’,’字段三的数据’,’字段四的数据’)"
2)通过以上可以实现你调度任务写入数据,但你还要查看任务和修改优先的话可以通过MSFlexGrid控件显示所有任务,然后右键修改其优先级:
Dim cnn As String
    cnn = "Provider=SQLOLEDB.1;Password=3333;Persist Security Info=True;User ID=sa;Initial Catalog=dbuser" & ";Data Source=计算机名\wincc"
   Set cc1 = CreateObject("adodb.connection")
       cc1.ConnectionString = cnn
       cc1.CursorLocation = 3
       cc1.Open
   Dim rst As Object
   Set rst = CreateObject("adodb.recordset")
   Dim ssql As String
       ssql = "select * from table1 where PriorityLevel>10"
       rst.Open ssql, cc1
    If rst.RecordCount = 0 Then
       MsgBox "查无结果"
    Else
      rst.MoveFirst
      Do While Not rst.EOF
         MSFlexGrid1.AddItem (rst.Fields(0).Value & vbTab & rst.Fields(1).Value & vbTab & rst.Fields(2).Value & vbTab & rst.Fields(3).Value)
         rst.MoveNext
       Loop
       cc1.Close
   Set cc1 = Nothing
   Set rst = Nothing
3)以上可以在MSFlexGrid控件中显示所有优先级大于10的任务,然后在MSFlexGrid控件中右键修改其优先级:
   Dim str1 As String
   Dim str2 As String
   Dim str3 As String
   Dim str4 As String
   Dim t As Integer
      t = MSFlexGrid1.row
          MSFlexGrid1.row = t
          MSFlexGrid1.col = j
     Select Case j
            Case 0
                str1 = MSFlexGrid1.TextArray(faIndex(MSFlexGrid1, t, j))
            Case 1
                str2 = MSFlexGrid1.TextArray(faIndex(MSFlexGrid1, t, j))
            Case 2
                str3 = MSFlexGrid1.TextArray(faIndex(MSFlexGrid1, t, j))
            Case 3
                str4 = MSFlexGrid1.TextArray(faIndex(MSFlexGrid1, t, j))
     End Select
    if str1<>"" then  ‘修改数据库,把ssql改过来就可以
        ssql="update table1 set PriorityLevel=’2′ where PriorityLevel=" & str1
    end if
    这样可以把选中的优先级改为2,但修改时得确定这个优先级不能重复,修改以后刷新(重新查询)一下MSFlexGrid控件;读取MSFlexGrid控件的值时使用了下面一个函数:
Public Function faIndex(GridObj As Object, ByVal row As Integer, ByVal col As Integer) As Long
If row > GridObj.Rows Or row < 0 Or col > GridObj.Cols Or col < 0 Then
    MsgBox "对不起,行列设置错误!", vbOKOnly, App.Title
    faIndex = -1
    
    Exit Function
End If

faIndex = row * GridObj.Cols + col

End Function

通过以上的脚本,楼主自行整理下应该能实现你的功能。

提问者对于答案的评价:
谢谢

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

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

相关推荐

  • 关于西门子wincc7.0安装问题

    大家好!!请问在安装wincc7.0之前需要在电脑里安装那些软件,我看了一下好像需要安装消息队列、数据库等软件,为何要安装消息队列和数据库呢?安装的顺序有很么讲究吗?还有无其他的安…

    SIMATIC WinCC 2017年8月15日
  • wincc通过5611通讯CPU后的问题

    wincc6.2,通过5611DP连接CPU315-2DP,之前没有问题,后期不间断出现wincc的组态画面中I/O域的框由白色有数值变为灰色有数值后又恢复白色正常,像断开通讯没有…

    SIMATIC WinCC 2017年5月31日
  • WINCC 冗余11

    2个WINCC 冗余测试 1.PC系统XP可以不? 2.按照深入浅出步骤书,组态客户机—-“服务器数据”编辑器载入服务器(缺省主站的数据包…

    SIMATIC WinCC 2019年6月11日
  • WINCC冗余打印

    上位系统为两台工控机(WINCC)组成的冗余系统,要求定时打印,但问题是两个机子设置一样,所以会打印两份报表,有什么办法可以使其只打印一份,同时要保证系统有一台上位机故障时也能确保…

    SIMATIC WinCC 2018年12月5日
  • 建立每天的表

    Option Explicit Function action Dim xlsApp,dstr,fname dstr&n…

    SIMATIC WinCC 2019年6月11日
  • wincc 历史趋势我选择的是归档变量,但运行的时候显示无连接数据

    wincc 历史趋势我选择的是归档变量,但运行的时候显示无连接数据 问题补充:好了,谢谢了 最佳答案 1、在Wincc Explorer-计算机-属性-启动中把…

    SIMATIC WinCC 2019年6月11日
  • wincc打不开文件

    我想用自己的电脑安装的WINCC软件打开从其它地方拷贝来的WINCC文件,总是打不开!电脑显示的“组态的服务器无效”,请问需要修改什么东西吗?谢谢! 问题补充:谢谢各位的回答,文件…

    SIMATIC WinCC 2019年6月11日
  • wincc与SQL的连接

    各位大侠好,我现在想做一个报表,思路是wincc通过SQL实现数据交互,然后用Excel读取SQL中的数据。这个思路的实现的具体具体具体方式是怎么样的呢? 最佳答案 WinCC/C…

    SIMATIC WinCC 2021年7月5日
  • wincc6.0 deltaloader

    我在组态变量记运行报表时,到启动工程项目这一步,计算机属性上提示我:该组态使deltaloader支持不可用,请问这是什么原因? 最佳答案 楼主如果已经激活项目,进入“计算机属性”…

    SIMATIC WinCC 2019年6月11日
  • 求救:wincc\audit 出错

    系统采用的WIN7,wincc 7.0SP2,audit 7.0但是报错,什么问题呢? 图片说明:    最佳答案 1、你的wincc&nb…

    2021年7月5日