工业过程控制一般有专门的工业监控软件,如何用VBA来模拟实现这些动态过程,下面做一个示例,进行介绍。NO.1工业控制当中一些动态状态体现出生产的一个实时状态,可以利用vba实现这个效果。下面举个简单示例,比如一个储罐里,压力上升到一定值高限报警,下降到一定值下限报警。通过自定义上下限来控制这个值,增加一个滚动条实现压力变化。示例中,分别有两个按钮,一个实现自动运行状态,一个停止运行,以实现自动运行。随着压力变化储罐内介质颜色也在变化。NO.2相对来说这个示例,可以做到完整体现整个工艺过程。其通用性能很好,无论设置上下限多少都可以正常运行。储罐内介质变化以滚动条值的变化来进行控制,所以要对流动条的Value值进行设置,以达到介质上下移动。那么就用到滚动条的Change事件。代码
Private Sub ScrollBar1_Change()Dim s As WorksheetSet s = ActiveSheetDim ShapeObj As ObjectDim RectangleObj As ObjectDim LabelObj As ObjectDim TextHObj As Object, TextLobj As ObjectSet TextHObj = s.OLEObjects("TextBox1")Set TextLobj = s.OLEObjects("TextBox2")Set RectangleObj = ActiveSheet.Shapes("Rectangle 1")Set LabelObj = ActiveSheet.OLEObjects("Label1")Dim Toi As Long, ToH As LongWith RectangleObjToH = .HeightToi = .Height + .TopEnd WithDim v As Longv = ActiveSheet.OLEObjects("ScrollBar1").Object.ValueLabelObj.Object.Caption = VBA.Format(v 0.01, "0.00") & "Mpa"Dim scrObj As Object, ScrMax As LongSet scrObj = ActiveSheet.OLEObjects("ScrollBar1")ScrMax = scrObj.Object.MaxWith ActiveSheet.Shapes("Rectangle 2") .Height = v (ToH / ScrMax) If v >= TextHObj.Object.Value Then .Fill.ForeColor.RGB = RGB(221, 1, 1) '超高限报警颜色 Else If v <= TextLobj.Object.Value Then .Fill.ForeColor.RGB = RGB(211, 1, 1) '超低限报警颜色 Else .Fill.ForeColor.RGB = RGB(1, 122, 211) '正常颜色 End If End If .Top = Toi - .HeightEnd WithEnd Sub
当滚动条变化的时候,介质的上位置跟随变化。实现这变化的过程,需要一个按钮来进行。它是一个循环变化,就是到达上限之后,设置为最低值再进行一次轮回。如下代码:
Private Sub CommandButton2_Click()ExitFor = FalseDim scrObj As ObjectSet scrObj = ActiveSheet.OLEObjects("Scrollbar1")With scrObjDo If si > .Object.Max Then si = 0'上限最大值为滚动条最大值 .Object.Value = si si = si + 1DoEventsLoop Until ExitFor = True'设置停止条件为ExitFor为真值End WithEnd Sub
这个代码上限随着滚动条控件的最大值来确定,所以也是可调节的一个参数。其中以ExitFor作为循环的停止参数,没有这个变量,循环就是一个死进程,也就是说会出现假死,不能使用。ExitFor变量是个布尔型,在通用里申明:
Dim ExitFor As BooleanNO.3总结起来,应用得当的情况下,VBA实现工业过程模拟的效果,还是很理想的。如果,深入学习会有更多的精彩。---END---欢迎关注、收藏
0 评论