在好例子网,分享、交流、成长!
您当前所在位置:首页ASP 开发实例VB编程 → VB与西门子S7-200通讯

VB与西门子S7-200通讯

VB编程

下载此实例
  • 开发语言:ASP
  • 实例大小:0.10M
  • 下载次数:115
  • 浏览次数:746
  • 发布时间:2017-08-29
  • 实例类别:VB编程
  • 发 布 人:lmx858
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 通讯 vb siemens s7-200 s

实例介绍

【实例简介】

VB与西门子S7-200控制器通讯

【实例截图】

from clipboard

【核心代码】

    Left            =   4800
      Top             =   2040
   End
   Begin VB.Timer Timer1 
      Enabled         =   0   'False
      Interval        =   500
      Left            =   4800
      Top             =   1440
   End
   Begin MSCommLib.MSComm MSComm1 
      Left            =   4800
      Top             =   240
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   -1  'True
   End
   Begin VB.Frame Frame1 
      BackColor       =   &H00FFFFC0&
      Height          =   855
      Left            =   120
      TabIndex        =   0
      Top             =   120
      Width           =   4815
      Begin VB.CheckBox Chk_COM 
         BackColor       =   &H00FFFFC0&
         Height          =   615
         Left            =   1200
         TabIndex        =   1
         Top             =   120
         Width           =   615
      End
      Begin PLC监控程序.CandyButton OpenCom 
         Height          =   495
         Left            =   3120
         TabIndex        =   17
         Top             =   240
         Width           =   1095
         _ExtentX        =   1931
         _ExtentY        =   873
         BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
            Name            =   "Tahoma"
            Size            =   9
            Charset         =   0
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Caption         =   "打开串口"
         IconHighLiteColor=   0
         CaptionHighLiteColor=   0
         Checked         =   0   'False
         ColorButtonHover=   16760976
         ColorButtonUp   =   15309136
         ColorButtonDown =   15309136
         BorderBrightness=   0
         ColorBright     =   16772528
         DisplayHand     =   0   'False
         ColorScheme     =   0
      End
      Begin VB.Shape Shape2 
         FillColor       =   &H0000FF00&
         Height          =   375
         Left            =   1920
         Shape           =   3  'Circle
         Top             =   240
         Width           =   375
      End
   End
   Begin VB.Frame Frame2 
      BackColor       =   &H00FFFFC0&
      Height          =   855
      Left            =   5400
      TabIndex        =   2
      Top             =   120
      Width           =   5895
      Begin PLC监控程序.CandyButton PLC_Run 
         Height          =   495
         Left            =   2760
         TabIndex        =   18
         Top             =   240
         Width           =   1215
         _ExtentX        =   2143
         _ExtentY        =   873
         Enabled         =   0   'False
         BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
            Name            =   "Tahoma"
            Size            =   9
            Charset         =   0
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Caption         =   "运行"
         IconHighLiteColor=   0
         CaptionHighLiteColor=   0
         Checked         =   0   'False
         ColorButtonHover=   16760976
         ColorButtonUp   =   15309136
         ColorButtonDown =   15309136
         BorderBrightness=   0
         ColorBright     =   16772528
         DisplayHand     =   0   'False
         ColorScheme     =   0
      End
      Begin PLC监控程序.CandyButton PLC_Stop 
         Height          =   495
         Left            =   4320
         TabIndex        =   19
         Top             =   240
         Width           =   1215
         _ExtentX        =   2143
         _ExtentY        =   873
         Enabled         =   0   'False
         BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
            Name            =   "Tahoma"
            Size            =   9
            Charset         =   0
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Caption         =   "停止"
         IconHighLiteColor=   0
         CaptionHighLiteColor=   0
         Checked         =   0   'False
         ColorButtonHover=   16760976
         ColorButtonUp   =   15309136
         ColorButtonDown =   15309136
         BorderBrightness=   0
         ColorBright     =   16772528
         DisplayHand     =   0   'False
         ColorScheme     =   0
      End
      Begin VB.Label Label2 
         BackColor       =   &H00FFFFC0&
         BackStyle       =   0  'Transparent
         Height          =   375
         Left            =   1155
         TabIndex        =   16
         Top             =   390
         Width           =   855
      End
      Begin VB.Shape Shape1 
         FillColor       =   &H00C0E0FF&
         FillStyle       =   0  'Solid
         Height          =   495
         Left            =   600
         Shape           =   4  'Rounded Rectangle
         Top             =   240
         Width           =   1455
      End
   End
   Begin VB.Frame Frame3 
      BackColor       =   &H00FFFFC0&
      Height          =   4455
      Left            =   120
      TabIndex        =   3
      Top             =   1080
      Width           =   11175
      Begin VB.Frame Frame4 
         BackColor       =   &H00FFFFC0&
         Caption         =   "强制"
         Enabled         =   0   'False
         Height          =   1300
         Left            =   5280
         TabIndex        =   9
         Top             =   2910
         Width           =   4455
         Begin VB.OptionButton Option1 
            BackColor       =   &H00FFFFC0&
            Caption         =   "Q"
            Height          =   255
            Left            =   480
            TabIndex        =   13
            Top             =   360
            Value           =   -1  'True
            Width           =   615
         End
         Begin VB.OptionButton Option2 
            BackColor       =   &H00FFFFC0&
            Caption         =   "I"
            Height          =   255
            Left            =   480
            TabIndex        =   12
            Top             =   840
            Width           =   615
         End
         Begin VB.TextBox Text1 
            Height          =   300
            Left            =   1920
            TabIndex        =   11
            Text            =   "0"
            Top             =   360
            Width           =   975
         End
         Begin VB.ComboBox Combo1 
            Height          =   300
            ItemData        =   "Form1.frx":0000
            Left            =   2880
            List            =   "Form1.frx":001C
            TabIndex        =   10
            Text            =   "0"
            Top             =   360
            Width           =   1215
         End
         Begin PLC监控程序.CandyButton ReSet_Bit 
            Height          =   255
            Left            =   2280
            TabIndex        =   23
            Top             =   840
            Width           =   495
            _ExtentX        =   873
            _ExtentY        =   450
            Enabled         =   0   'False
            BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
               Name            =   "Tahoma"
               Size            =   9
               Charset         =   0
               Weight          =   400
               Underline       =   0   'False
               Italic          =   0   'False
               Strikethrough   =   0   'False
            EndProperty
            Caption         =   "复位"
            IconHighLiteColor=   0
            CaptionHighLiteColor=   0
            Checked         =   0   'False
            ColorButtonHover=   16760976
            ColorButtonUp   =   15309136
            ColorButtonDown =   15309136
            BorderBrightness=   0
            ColorBright     =   16772528
            DisplayHand     =   0   'False
            ColorScheme     =   0
         End
         Begin PLC监控程序.CandyButton Set_Bit 
            Height          =   255
            Left            =   1440
            TabIndex        =   24
            Top             =   840
            Width           =   495
            _ExtentX        =   873
            _ExtentY        =   450
            Enabled         =   0   'False
            BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
               Name            =   "Tahoma"
               Size            =   9
               Charset         =   0
               Weight          =   400
               Underline       =   0   'False
               Italic          =   0   'False
               Strikethrough   =   0   'False
            EndProperty
            Caption         =   "置位"
            IconHighLiteColor=   0
            CaptionHighLiteColor=   0
            Checked         =   0   'False
            ColorButtonHover=   16760976
            ColorButtonUp   =   15309136
            ColorButtonDown =   15309136
            BorderBrightness=   0
            ColorBright     =   16772528
            DisplayHand     =   0   'False
            ColorScheme     =   0
         End
         Begin PLC监控程序.CandyButton UN_F 
            Height          =   255
            Left            =   3240
            TabIndex        =   25
            Top             =   840
            Width           =   855
            _ExtentX        =   1508
            _ExtentY        =   450
            Enabled         =   0   'False
            BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
               Name            =   "Tahoma"
               Size            =   9
               Charset         =   0
               Weight          =   400
               Underline       =   0   'False
               Italic          =   0   'False
               Strikethrough   =   0   'False
            EndProperty
            Caption         =   "取消强制"
            IconHighLiteColor=   0
            CaptionHighLiteColor=   0
            Checked         =   0   'False
            ColorButtonHover=   16760976
            ColorButtonUp   =   15309136
            ColorButtonDown =   15309136
            BorderBrightness=   0
            ColorBright     =   16772528
            DisplayHand     =   0   'False
            ColorScheme     =   0
         End
         Begin VB.Label Label1 
            BackColor       =   &H00FFFFC0&
            Caption         =   "地址"
            Height          =   255
            Left            =   1440
            TabIndex        =   14
            Top             =   420
            Width           =   375
         End
      End
      Begin PLC监控程序.IO_Label IO_Label4 
         Height          =   1455
         Left            =   5280
         TabIndex        =   4
         Top             =   240
         Width           =   4695
         _ExtentX        =   8281
         _ExtentY        =   2566
         caption         =   "Q0"
         value           =   0
         BackColor       =   16777152
      End
      Begin PLC监控程序.IO_Label IO_Label3 
         Height          =   1335
         Left            =   360
         TabIndex        =   5
         Top             =   2880
         Width           =   4455
         _ExtentX        =   7858
         _ExtentY        =   2355
         caption         =   "I2"
         value           =   0
         BackColor       =   16777152
      End
      Begin PLC监控程序.IO_Label IO_Label2 
         Height          =   1335
         Left            =   360
         TabIndex        =   6
         Top             =   1560
         Width           =   4455
         _ExtentX        =   7858
         _ExtentY        =   2355
         caption         =   "I1"
         value           =   0
         BackColor       =   16777152
      End
      Begin PLC监控程序.IO_Label IO_Label1 
         Height          =   1455
         Left            =   360
         TabIndex        =   7
         Top             =   240
         Width           =   4455
         _ExtentX        =   7858
         _ExtentY        =   2566
         caption         =   "I0"
         value           =   0
         BackColor       =   16777152
      End
      Begin PLC监控程序.IO_Label IO_Label5 
         Height          =   1335
         Left            =   5280
         TabIndex        =   15
         Top             =   1560
         Width           =   4575
         _ExtentX        =   8070
         _ExtentY        =   2355
         caption         =   "Q1"
         value           =   0
         BackColor       =   16777152
      End
      Begin PLC监控程序.CandyButton Read_I 
         Height          =   495
         Left            =   9840
         TabIndex        =   20
         Top             =   360
         Width           =   1215
         _ExtentX        =   2143
         _ExtentY        =   873
         Enabled         =   0   'False
         BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
            Name            =   "Tahoma"
            Size            =   9
            Charset         =   0
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Caption         =   "读取状态"
         IconHighLiteColor=   0
         CaptionHighLiteColor=   0
         Checked         =   0   'False
         ColorButtonHover=   16760976
         ColorButtonUp   =   15309136
         ColorButtonDown =   15309136
         BorderBrightness=   0
         ColorBright     =   16772528
         DisplayHand     =   0   'False
         ColorScheme     =   0
      End
      Begin PLC监控程序.CandyButton UnForce 
         Height          =   495
         Left            =   9840
         TabIndex        =   21
         Top             =   1080
         Width           =   1215
         _ExtentX        =   2143
         _ExtentY        =   873
         Enabled         =   0   'False
         BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
            Name            =   "Tahoma"
            Size            =   9
            Charset         =   0
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Caption         =   "全部取消强制"
         IconHighLiteColor=   0
         CaptionHighLiteColor=   0
         Checked         =   0   'False
         ColorButtonHover=   16760976
         ColorButtonUp   =   15309136
         ColorButtonDown =   15309136
         BorderBrightness=   0
         ColorBright     =   16772528
         DisplayHand     =   0   'False
         ColorScheme     =   0
      End
      Begin PLC监控程序.CandyButton About 
         Height          =   495
         Left            =   9840
         TabIndex        =   22
         Top             =   1920
         Width           =   1215
         _ExtentX        =   2143
         _ExtentY        =   873
         BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
            Name            =   "Tahoma"
            Size            =   9
            Charset         =   0
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Caption         =   "关于"
         IconHighLiteColor=   0
         CaptionHighLiteColor=   0
         Checked         =   0   'False
         ColorButtonHover=   16760976
         ColorButtonUp   =   15309136
         ColorButtonDown =   15309136
         BorderBrightness=   0
         ColorBright     =   16772528
         DisplayHand     =   0   'False
         ColorScheme     =   0
      End
      Begin VB.Label Val_I 
         Height          =   255
         Index           =   1
         Left            =   1080
         TabIndex        =   8
         Top             =   1080
         Width           =   375
      End
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

'========================================================
'= S7-200 PLC VB监控程序                                =
'=                                                      =
'=                                                      =
'= 欢迎交流                                             =
'= QQ:443129651  大海                                   =
'= Email:youhm1@163.com                                 =
'========================================================


Private Declare Sub Sleep Lib "kernel32" (ByVal dwseconds As Long)

Dim PLC_Cmd As String                   '指令识别字符串

Dim Val_Ok(5) As Byte                   '确认指令数据

Dim ReadyOk As Boolean                  '空闲




Private Sub Form_Load()
  
  MSComm1.CommPort = 1                  '初始化串口
  
  MSComm1.Settings = "9600,e,8,1"
    
  MSComm1.InputLen = 0

  MSComm1.InputMode = comInputModeBinary
  
  Val_Ok(0) = &H10
  Val_Ok(1) = &H2
  Val_Ok(2) = &H0
  Val_Ok(3) = &H5C
  Val_Ok(4) = &H5E
  Val_Ok(5) = &H16

  
End Sub

Private Sub about_Click()

  Form2.Show

End Sub

Private Sub OpenCom_Click()              '打开串口
  
  On Error GoTo err
  
  If Not MSComm1.PortOpen Then
  
     MSComm1.PortOpen = True
     
     Chk_COM.Value = 1
     
     OpenCom.Caption = "关闭串口"
     
     PLC_Run.Enabled = True
     
     PLC_Stop.Enabled = True
     
     Read_I.Enabled = True
     
     UnForce.Enabled = True
     
     UN_F.Enabled = True
     
     Set_Bit.Enabled = True
     
     ReSet_Bit.Enabled = True
     
     ReadyOk = True
     
     ReadPW
     
  Else
  
     ReadyOk = False
     
     Timer1.Enabled = False
     
     Sleep 1000
     
     PLC_Run.Enabled = False
     
     PLC_Stop.Enabled = False
     
     Read_I.Enabled = False
     
     UnForce.Enabled = False
     
     UN_F.Enabled = False
     
     Set_Bit.Enabled = False
     
     ReSet_Bit.Enabled = False
     
     MSComm1.PortOpen = False
     
     OpenCom.Caption = "打开串口"
     
     Chk_COM.Value = 0
     
  End If
  
  Exit Sub
  
err:

  MsgBox "串口打开失败", vbInformation, "打开串口"
  
End Sub

Private Sub MSComm1_OnComm()          '串口事件处理

  Dim Rcv_Data() As Byte
  
  Select Case MSComm1.CommEvent
  
  Case comEvReceive                   '串口接收事件
  
  Rcv_Data = MSComm1.Input            '取出串口接收缓冲器的数据。
  
  If Rcv_Data(UBound(Rcv_Data)) = &H16 Then ReadyOk = True: Timer2.Enabled = False
  
  If UBound(Rcv_Data) = 0 Then                 'PLC返回一个字节
     
     If Rcv_Data(0) = &HE5 And PLC_Cmd <> "UnForce" Then        'PLC返回E5则发送确认指令
        
        MSComm1.Output = Val_Ok

        If PLC_Cmd = "Run" Or PLC_Cmd = "Stop" Then
        
           MSComm1.RThreshold = 21
           
        End If
        
        If PLC_Cmd = "Rbyte" Then
        
           MSComm1.RThreshold = 37
           
        End If
        
        If PLC_Cmd = "RPW" Then
        
           MSComm1.RThreshold = 35
           
        End If
        
     End If
     
  Else
     
     If UBound(Rcv_Data) = 5 Then
     
        MSComm1.Output = Val_Ok
        
        MSComm1.RThreshold = 1
        
        Exit Sub
        
     End If
        
     If UBound(Rcv_Data) = 21 And (PLC_Cmd = "Run" Or PLC_Cmd = "Stop") Then
        
        If Rcv_Data(0) = &H68 Then
        
           If Rcv_Data(19) = &H29 Then Shape1.FillColor = vbRed: Label2.Caption = "STOP"
        
           If Rcv_Data(19) = &H28 Then Shape1.FillColor = vbGreen: Label2.Caption = "RUN"
           
        End If
     
     End If
     
     If UBound(Rcv_Data) = 36 And PLC_Cmd = "Rbyte" Then
     
        If Rcv_Data(0) = &H68 Then
        
           IO_Label1.Value = Rcv_Data(25)
           
           IO_Label2.Value = Rcv_Data(26)
           
           IO_Label3.Value = Rcv_Data(27)
           
           IO_Label4.Value = Rcv_Data(33)
           
           IO_Label5.Value = Rcv_Data(34)
        
        End If
        
     End If
     
     If UBound(Rcv_Data) = 34 And PLC_Cmd = "RPW" Then
     
        If Rcv_Data(0) = &H68 Then
        
           Dim PW_Val(7) As Byte
           
           Dim i As Integer
           
           Dim Temp_V As Integer
           
           Dim Temp_S As String
           
           Temp_S = "68 21 21 68 02 00 6C 32 07 00 00 00 00 00 08 00 0C 00 01 12 04 11 45 01 00 FF 09 00 08 "
           
           For i = 0 To 7
           
               PW_Val(i) = Rcv_Data(25 i)
               
               If (i \ 2) Mod 2 = 0 Then PW_Val(i) = PW_Val(i) Xor &HFF
               
               Temp_V = Temp_V PW_Val(i)
               
               Temp_S = Temp_S & Hex(PW_Val(i)) & " "
               
            Next i
            
            Temp_V = (Temp_V &H39) Mod 256
            
            Temp_S = Temp_S & Hex(Temp_V) & " 16"
            
            Send_Val Temp_S
            
         End If
     
     End If
     
  End If
  
  End Select
  
End Sub


Private Sub PLC_Run_Click()                     'PLC 运行命令
  
  Timer1.Enabled = False                        '停止监控
  
  If Not ReadyOk Then                           '等待空闲
  
     Do While Not ReadyOk
     
        DoEvents
        
     Loop
     
  End If
  
  ReadyOk = False: Timer2.Enabled = True        '占线:启动超时计时
  
  Dim Val_Run() As Byte               '定义发送的数据为字节为元素的数组。
  
  Dim i As Integer
  
  Dim Temp() As String
  
  Const Temp_Str = "68 21 21 68 02 00 7C 32 01 00 00 00 00 00 14 00 00 28 00 00 00 00 00 00 FD 00 00 09 50 5F 50 52 4F 47 52 41 4D BA 16"
  
  MSComm1.RThreshold = 1
  
  Temp = Split(Temp_Str, " ")
  
  ReDim Val_Run(UBound(Temp))
  
  For i = 0 To UBound(Temp)
  
      Val_Run(i) = Val("&H" & Temp(i))
      
  Next i
  
  PLC_Cmd = "Run"
  
  MSComm1.Output = Val_Run
  
  Timer1.Enabled = True                          '启动监控
  
End Sub

Private Sub PLC_Stop_Click()                     'PLC 停止命令
  
  Timer1.Enabled = False                         '停止监控
  
  If Not ReadyOk Then                            '等待空闲
  
     Do While Not ReadyOk
     
        DoEvents
        
     Loop
     
  End If
  
  ReadyOk = False: Timer2.Enabled = True          '占线:启动超时计时
  
  Dim Val_Stop() As Byte               '定义发送的数据为字节为元素的数组。
  
  Dim i As Integer
  
  Dim Temp() As String
  
  Const Temp_Str = "68 1D 1D 68 02 00 7C 32 01 00 00 00 00 00 10 00 00 29 00 00 00 00 00 09 50 5F 50 52 4F 47 52 41 4D BA 16"
  
  MSComm1.RThreshold = 1
  
  Temp = Split(Temp_Str, " ")
  
  ReDim Val_Stop(UBound(Temp))
  
  For i = 0 To UBound(Temp)
  
      Val_Stop(i) = Val("&H" & Temp(i))
      
  Next i
  
  PLC_Cmd = "Stop"
  
  MSComm1.Output = Val_Stop
  
  Timer1.Enabled = True                           '启动监控

End Sub


Private Sub ReadPW()
  
  Timer1.Enabled = False                         '停止监控
  
  If Not ReadyOk Then                            '等待空闲
  
     Do While Not ReadyOk
     
        DoEvents
        
     Loop
     
  End If
  
  ReadyOk = False: Timer2.Enabled = True          '占线:启动超时计时
  
  Dim Val_RPW() As Byte               '定义发送的数据为字节为元素的数组。
  
  Dim i As Integer
  
  Dim Temp() As String
  
  Const Temp_Str = "68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 08 00 00 03 00 05 E0 D2 16"
  
  MSComm1.RThreshold = 1
  
  Temp = Split(Temp_Str, " ")
  
  ReDim Val_RPW(UBound(Temp))
  
  For i = 0 To UBound(Temp)
  
      Val_RPW(i) = Val("&H" & Temp(i))
      
  Next i
  
  PLC_Cmd = "RPW"
  
  MSComm1.Output = Val_RPW
  
  Sleep 200
  
  Timer1.Enabled = True                           '启动监控
  
End Sub

Private Sub Read_I_Click()                         '读IO状态
    
  If Not ReadyOk Then                              '等待空闲
  
     Do While Not ReadyOk

        DoEvents

     Loop
     
  End If
  
 ReadyOk = False: Timer2.Enabled = True          '占线:启动超时计时
  
  Dim Val_Read() As Byte
  
  Dim i As Integer
  
  Dim Temp() As String
  
  Const Temp_Str = "68 27 27 68 02 00 6C 32 01 00 00 00 00 00 1A 00 00 04 02 12 0A 10 02 00 03 00 00 81 00 00 00 12 0A 10 02 00 02 00 00 82 00 00 00 25 16"
  
  MSComm1.RThreshold = 1
  
  Temp = Split(Temp_Str, " ")
  
  ReDim Val_Read(UBound(Temp))
  
  For i = 0 To UBound(Temp)
  
      Val_Read(i) = Val("&H" & Temp(i))
      
  Next i
  
  PLC_Cmd = "Rbyte"
  
  MSComm1.Output = Val_Read
  
  

End Sub

Private Sub Timer1_Timer()                           '监控定时器

  Shape2.FillStyle = 1 - Shape2.FillStyle
  
  If MSComm1.PortOpen Then
  
     Read_I_Click
  
  End If
  
End Sub

Private Sub Timer2_Timer()                           '超时定时器
  
  ReadyOk = True
  
End Sub



Private Sub UnForce_Click()                          '全部取消强制命令
  
  Timer1.Enabled = False
  
  If Not ReadyOk Then
  
     Do While Not ReadyOk
     
        DoEvents
        
     Loop
     
  End If
  
  ReadyOk = False: Timer2.Enabled = True
  
  Dim Val_UnForce() As Byte
  
  Dim i As Integer
  
  Dim Temp() As String
  
  Const Temp_Str = "68 1F 1F 68 02 00 7C 32 07 00 00 00 00 00 0C 00 06 00 01 12 08 12 48 0B 00 00 00 00 00 FF 09 00 02 02 00 55 16"
  
  MSComm1.RThreshold = 1
  
  Temp = Split(Temp_Str, " ")
  
  ReDim Val_UnForce(UBound(Temp))
  
  For i = 0 To UBound(Temp)
  
      Val_UnForce(i) = Val("&H" & Temp(i))
      
  Next i
  
  PLC_Cmd = "UnForce"
  
  Dim Val_Ok1(5) As Byte
  
  Val_Ok1(0) = &H10
  Val_Ok1(1) = &H2
  Val_Ok1(2) = &H0
  Val_Ok1(3) = &H7C
  Val_Ok1(4) = &H7E
  Val_Ok1(5) = &H16

  MSComm1.Output = Val_UnForce
  
  Sleep 50
  
  MSComm1.Output = Val_Ok
  
  Sleep 50
  
  MSComm1.Output = Val_Ok1
  
  Sleep 50
  
  MSComm1.Output = Val_Ok
  
  Sleep 50
  
  MSComm1.Output = Val_Ok1
  
  Sleep 50
  
  ReadyOk = True
  
  Dim Temp_R As String
  
  Temp_R = "68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 14 00 00 03 00 00 00 F9 16"
  
  Send_Val Temp_R
  
  Sleep 50
  
  Send_Val Temp_R
  
  Sleep 50
  
  Temp_R = "68 1B 1B 68 02 00 7C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 01 00 00 05 00 00 20 18 16"
  
  Send_Val Temp_R
  
End Sub

Private Sub Set_Bit_Click()                   '强制置位指令
  
  Dim Bit_Val As String
  
  Dim Temp As String, Type_Val As String, V As Integer
  
  Temp = "68 2B 2B 68 02 00 7C 32 07 00 00 00 14 00 0C 00 12 00 01 12 08 12 48 0B 00 00 00 00 00 FF 09 00 0E 00 01 10 01 00 01 00 00 "
  
  V = &H14
  
  If Option1.Value Then
  
     Type_Val = "82"
     
     V = V 1
     
  Else
  
     Type_Val = "81"
     
  End If
  
  Bit_Val = Hex(Val(Text1.Text) * 8 Val(Combo1.Text))
  
  V = (V Val(Text1.Text) * 8 Val(Combo1.Text)) Mod 256
  
  Temp = Temp & Type_Val & " 00 00 " & Bit_Val & " 01 00 " & Hex(V) & " 16"
  
  Send_Val Temp
  
End Sub
Private Sub ReSet_Bit_Click()                  '强制复位指令
  
  Dim Bit_Val As String
  
  Dim Temp As String, Type_Val As String, V As Integer
  
  Temp = "68 2B 2B 68 02 00 7C 32 07 00 00 00 14 00 0C 00 12 00 01 12 08 12 48 0B 00 00 00 00 00 FF 09 00 0E 00 01 10 01 00 01 00 00 "
  
  V = &H13
  
  If Option1.Value Then
  
     Type_Val = "82"
     
     V = V 1
     
  Else
  
     Type_Val = "81"
     
  End If
  
  Bit_Val = Hex(Val(Text1.Text) * 8 Val(Combo1.Text)): Debug.Print Bit_Val
  
  V = (V Val(Text1.Text) * 8 Val(Combo1.Text)) Mod 256
  
  Temp = Temp & Type_Val & " 00 00 " & Bit_Val & " 00 00 " & Hex(V) & " 16"
  
  Send_Val Temp
  
  
End Sub

Private Sub UN_F_Click()               '位强制取消指令
    
  Dim Bit_Val As String
  
  Dim Temp As String, Type_Val As String, V As Integer
  
  Temp = "68 29 29 68 02 00 6C 32 07 00 00 00 00 00 0C 00 10 00 01 12 08 12 48 0B 00 00 00 00 00 FF 09 00 0C 01 01 10 01 00 01 00 00 "
  
  V = &HEC
  
  If Option1.Value Then
  
     Type_Val = "82"
     
     V = V 1
     
  Else
  
     Type_Val = "81"
     
  End If
  
  Bit_Val = Hex(Val(Text1.Text) * 8 Val(Combo1.Text)): Debug.Print Bit_Val
  
  V = (V Val(Text1.Text) * 8 Val(Combo1.Text)) Mod 256
  
  Temp = Temp & Type_Val & " 00 00 " & Bit_Val & " " & Hex(V) & " 16"
  
  Send_Val Temp
  
End Sub

Private Sub Send_Val(Text As String)         '发送字符串指令
  
  Timer1.Enabled = False
  
  If Not ReadyOk Then
  
     Do While Not ReadyOk
     
        DoEvents
        
     Loop
     
  End If
  
  ReadyOk = False: Timer2.Enabled = True
  
  Dim Val_Temp() As Byte
  
  Dim i As Integer
  
  Dim Temp() As String
  
  Dim Temp_Str As String
  
  Temp_Str = Text
  
  MSComm1.RThreshold = 1
  
  Temp = Split(Temp_Str, " ")
  
  ReDim Val_Temp(UBound(Temp))
  
  For i = 0 To UBound(Temp)
  
      Val_Temp(i) = Val("&H" & Temp(i))
      
  Next i
  
  PLC_Cmd = "UnForce"
  
  MSComm1.Output = Val_Temp
  
  Sleep 50
  
  MSComm1.Output = Val_Ok
  
  Sleep 50
  
  ReadyOk = True
  
  Timer1.Enabled = True
  
End Sub

标签: 通讯 vb siemens s7-200 s

实例下载地址

VB与西门子S7-200通讯

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警