⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmmain.frm

📁 用PC机与智能仪表构成小型DCS实训,工业控制经典!
💻 FRM
字号:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form frmMain 
   BackColor       =   &H00E0E0E0&
   BorderStyle     =   3  'Fixed Dialog
   Caption         =   "PC机与多个智能仪表通信程序"
   ClientHeight    =   3300
   ClientLeft      =   4800
   ClientTop       =   3075
   ClientWidth     =   7980
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   3300
   ScaleWidth      =   7980
   ShowInTaskbar   =   0   'False
   Begin VB.Frame Frame3 
      Caption         =   "3号表"
      Height          =   2415
      Left            =   5340
      TabIndex        =   15
      Top             =   120
      Width           =   2565
      Begin VB.TextBox Tdata3 
         Height          =   330
         Left            =   1380
         TabIndex        =   18
         Top             =   420
         Width           =   1005
      End
      Begin VB.TextBox Tmax3 
         Height          =   315
         Left            =   1380
         TabIndex        =   17
         Top             =   1140
         Width           =   555
      End
      Begin VB.TextBox Tmin3 
         Height          =   315
         Left            =   1380
         TabIndex        =   16
         Top             =   1800
         Width           =   555
      End
      Begin VB.Label Label9 
         Caption         =   "下限报警值:"
         Height          =   255
         Left            =   180
         TabIndex        =   21
         Top             =   1860
         Width           =   1155
      End
      Begin VB.Label Label8 
         Caption         =   "上限报警值:"
         Height          =   255
         Left            =   180
         TabIndex        =   20
         Top             =   1200
         Width           =   1215
      End
      Begin VB.Shape Shape6 
         FillColor       =   &H00FFFFFF&
         FillStyle       =   0  'Solid
         Height          =   375
         Left            =   1980
         Shape           =   3  'Circle
         Top             =   1740
         Width           =   495
      End
      Begin VB.Shape Shape5 
         FillColor       =   &H00FFFFFF&
         FillStyle       =   0  'Solid
         Height          =   375
         Left            =   1980
         Shape           =   3  'Circle
         Top             =   1080
         Width           =   495
      End
      Begin VB.Label Label7 
         Caption         =   "测量温度值:"
         Height          =   255
         Left            =   180
         TabIndex        =   19
         Top             =   540
         Width           =   1155
      End
   End
   Begin VB.Frame Frame2 
      Caption         =   "2号表"
      Height          =   2415
      Left            =   2700
      TabIndex        =   8
      Top             =   120
      Width           =   2565
      Begin VB.TextBox Tdata2 
         Height          =   330
         Left            =   1380
         TabIndex        =   11
         Top             =   420
         Width           =   1005
      End
      Begin VB.TextBox Tmax2 
         Height          =   315
         Left            =   1380
         TabIndex        =   10
         Top             =   1140
         Width           =   555
      End
      Begin VB.TextBox Tmin2 
         Height          =   315
         Left            =   1380
         TabIndex        =   9
         Top             =   1800
         Width           =   555
      End
      Begin VB.Label Label6 
         Caption         =   "下限报警值:"
         Height          =   255
         Left            =   180
         TabIndex        =   14
         Top             =   1860
         Width           =   1155
      End
      Begin VB.Label Label5 
         Caption         =   "上限报警值:"
         Height          =   255
         Left            =   180
         TabIndex        =   13
         Top             =   1200
         Width           =   1215
      End
      Begin VB.Shape Shape4 
         FillColor       =   &H00FFFFFF&
         FillStyle       =   0  'Solid
         Height          =   375
         Left            =   1980
         Shape           =   3  'Circle
         Top             =   1740
         Width           =   495
      End
      Begin VB.Shape Shape3 
         FillColor       =   &H00FFFFFF&
         FillStyle       =   0  'Solid
         Height          =   375
         Left            =   1980
         Shape           =   3  'Circle
         Top             =   1080
         Width           =   495
      End
      Begin VB.Label Label2 
         Caption         =   "测量温度值:"
         Height          =   255
         Left            =   240
         TabIndex        =   12
         Top             =   540
         Width           =   1155
      End
   End
   Begin VB.Frame Frame1 
      Caption         =   "1号表"
      Height          =   2415
      Left            =   60
      TabIndex        =   1
      Top             =   120
      Width           =   2565
      Begin VB.TextBox Tmin1 
         Height          =   315
         Left            =   1380
         TabIndex        =   7
         Top             =   1800
         Width           =   555
      End
      Begin VB.TextBox Tmax1 
         Height          =   315
         Left            =   1380
         TabIndex        =   6
         Top             =   1140
         Width           =   555
      End
      Begin VB.TextBox Tdata1 
         Height          =   330
         Left            =   1380
         TabIndex        =   2
         Top             =   420
         Width           =   1005
      End
      Begin VB.Label Label1 
         Caption         =   "测量温度值:"
         Height          =   255
         Left            =   180
         TabIndex        =   5
         Top             =   540
         Width           =   1155
      End
      Begin VB.Shape Shape1 
         FillColor       =   &H00FFFFFF&
         FillStyle       =   0  'Solid
         Height          =   375
         Left            =   1980
         Shape           =   3  'Circle
         Top             =   1080
         Width           =   495
      End
      Begin VB.Shape Shape2 
         FillColor       =   &H00FFFFFF&
         FillStyle       =   0  'Solid
         Height          =   375
         Left            =   1980
         Shape           =   3  'Circle
         Top             =   1740
         Width           =   495
      End
      Begin VB.Label Label3 
         Caption         =   "上限报警值:"
         Height          =   255
         Left            =   180
         TabIndex        =   4
         Top             =   1200
         Width           =   1215
      End
      Begin VB.Label Label4 
         Caption         =   "下限报警值:"
         Height          =   255
         Left            =   180
         TabIndex        =   3
         Top             =   1860
         Width           =   1155
      End
   End
   Begin VB.CommandButton Cmdquit 
      Caption         =   "关  闭"
      Height          =   375
      Left            =   3420
      TabIndex        =   0
      Top             =   2760
      Width           =   1215
   End
   Begin VB.Timer Timer1 
      Interval        =   500
      Left            =   6480
      Top             =   2760
   End
   Begin MSCommLib.MSComm MSComm1 
      Left            =   7200
      Top             =   2640
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   -1  'True
      RThreshold      =   1
      BaudRate        =   4800
      StopBits        =   2
      SThreshold      =   1
      InputMode       =   1
   End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'定义变量
Dim temp As Integer                              '仪表号循环变量
Dim data1, data2, data3 As Single                '1号表、2号表、3号表测量值
Dim maxdata1, maxdata2, maxdata3 As Single       '1号表、2号表、3号表上限报警值
Dim mindata1, mindata2, mindata3 As Single       '1号表、2号表、3号表下限报警值
'串口初始化
Private Sub Form_Load()
  MSComm1.CommPort = 1                '设置通信端口号为COM1
  MSComm1.InputMode = 1               '以二进制格式读取数据
  MSComm1.RThreshold = 1              '设置并返回的要接收的字符数
  MSComm1.SThreshold = 1              '设置并返回传输缓冲区中允许的最小字符数
  MSComm1.Settings = "4800,n,8,2"     '设置串口参数
  MSComm1.PortOpen = True             '打开串口
  Shape1.FillColor = QBColor(10)      '报警指示灯初始颜色
  Shape2.FillColor = QBColor(10)
  Shape3.FillColor = QBColor(10)
  Shape4.FillColor = QBColor(10)
  Shape5.FillColor = QBColor(10)
  Shape6.FillColor = QBColor(10)
End Sub
'改变仪表序号
Private Sub Timer1_Timer()
  temp = temp + 1
  Call order_num
  If temp > 6 Then temp = 0
End Sub
'周期发出请求指令,自动连续采集
'循环向仪表发送读数据命令串
'不同的仪表号发送不同的读指令
Sub order_num()
   If temp = 1 Then
     MSComm1.Output = Chr(&H8181) + Chr(&H52) + Chr(&H1)
   ElseIf temp = 2 Then
     MSComm1.Output = Chr(&H8181) + Chr(&H52) + Chr(&H2)
   ElseIf temp = 3 Then
     MSComm1.Output = Chr(&H8282) + Chr(&H52) + Chr(&H1)
   ElseIf temp = 4 Then
     MSComm1.Output = Chr(&H8282) + Chr(&H52) + Chr(&H2)
   ElseIf temp = 5 Then
     MSComm1.Output = Chr(&H8383) + Chr(&H52) + Chr(&H1)
   ElseIf temp = 6 Then
     MSComm1.Output = Chr(&H8383) + Chr(&H52) + Chr(&H2)
   Else
     Exit Sub
   End If
 End Sub
'每发送一次指令,触发下面事件,返回数据串
Private Sub MSComm1_OnComm()
   Dim Inbyte() As Byte
   Dim buffer As String
   Dim datatemp1 As Single             '测量值
   Dim datatemp2 As Single             '最大值
   Dim max_minstr As String
    '读取仪表返回数据串
    Select Case MSComm1.CommEvent
       Case comEvReceive
          Inbyte = MSComm1.Input
          For i = LBound(Inbyte) To UBound(Inbyte)
            buffer = buffer + Hex(Inbyte(i)) + Chr(32)
          Next i
          hhh = 1
       Case comEvSend
    End Select
    '获取上下限值
    max_minstr = Right(buffer, 5)
    If Len(Trim(Mid(max_minstr, 1, 2))) = 1 Then
      datatemp2 = Val("&H" & Mid(max_minstr, 3, 2) & Str("0") & Mid(max_minstr, 1, 2))
    Else
      datatemp2 = Val("&H" & Mid(max_minstr, 3, 2) & Mid(max_minstr, 1, 2))
    End If
    '显示仪表上、下限温度值
    If datatemp2 <> 0 Then
      If temp = 1 Then
        Tmax1.Text = datatemp2
        maxdata1 = Val(Tmax1.Text)
      End If
      If temp = 2 Then
        Tmin1.Text = datatemp2
        mindata1 = Val(Tmin1.Text)
      End If
      If temp = 3 Then
        Tmax2.Text = datatemp2
        maxdata2 = Val(Tmax2.Text)
      End If
      If temp = 4 Then
        Tmin2.Text = datatemp2
        mindata2 = Val(Tmin2.Text)
      End If
      If temp = 5 Then
        Tmax3.Text = datatemp2
        maxdata3 = Val(Tmax3.Text)
      End If
      If temp = 6 Then
        Tmin3.Text = datatemp2
        mindata3 = Val(Tmin3.Text)
      End If
    End If
    '获取十进制测量数据
    If Len(Trim(Mid(buffer, 1, 2))) = 1 Then
      datatemp1 = Val("&H" & Mid(buffer, 3, 2) & Str("0") & Mid(buffer, 1, 2)) * 0.1
    Else
      datatemp1 = Val("&H" & Mid(buffer, 3, 2) & Mid(buffer, 1, 2)) * 0.1
    End If
    '显示测量温度值
    If (datatemp1 <> 0) Then
      If temp = 1 Or temp = 2 Then
        Tdata1.Text = Format$(datatemp1, "0.0")
        data1 = Val(Tdata1.Text)
      End If
      If temp = 3 Or temp = 4 Then
        Tdata2.Text = Format$(datatemp1, "0.0")
        data2 = Val(Tdata2.Text)
      End If
      If temp = 5 Or temp = 6 Then
        Tdata3.Text = Format$(datatemp1, "0.0")
        data3 = Val(Tdata3.Text)
      End If
      Call alarm                  '调用报警过程
    End If
 End Sub
 '上、下限报警指示
Private Sub alarm()
  '1号表报警指示
  If data1 >= maxdata1 Then
    Shape1.FillColor = QBColor(12)
  End If
  If data1 < maxdata1 And data1 > mindata1 Then
    Shape1.FillColor = QBColor(10)
    Shape2.FillColor = QBColor(10)
  End If
  If data1 <= mindata1 Then
    Shape2.FillColor = QBColor(12)
  End If
  '2号表报警指示
  If data2 >= maxdata2 Then
    Shape3.FillColor = QBColor(12)
  End If
  If data2 < maxdata2 And data2 > mindata2 Then
    Shape3.FillColor = QBColor(10)
    Shape4.FillColor = QBColor(10)
  End If
  If data2 <= mindata2 Then
    Shape4.FillColor = QBColor(12)
  End If
  '3号表报警指示
  If data3 >= maxdata3 Then
    Shape5.FillColor = QBColor(12)
  End If
  If data3 < maxdata3 And data3 > mindata3 Then
    Shape5.FillColor = QBColor(10)
    Shape6.FillColor = QBColor(10)
  End If
  If data3 <= mindata3 Then
    Shape6.FillColor = QBColor(12)
  End If
End Sub
 '关闭程序
Private Sub Cmdquit_Click()
  MSComm1.PortOpen = False          '关闭串口
  Unload frmMain
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -