基本信息
源码名称:S7-200_VB监控源码
源码大小:0.02M
文件格式:.rar
开发语言:ASP
更新时间:2019-12-31
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
VERSION 5.00 Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX" Begin VB.Form Form1 BackColor = &H00FFFFC0& Caption = "S7-200监控" ClientHeight = 5700 ClientLeft = 1860 ClientTop = 1035 ClientWidth = 11475 LinkTopic = "Form1" ScaleHeight = 5700 ScaleWidth = 11475 Begin VB.CommandButton about Caption = "关于" Height = 495 Left = 9960 TabIndex = 25 Top = 3120 Width = 1215 End Begin VB.Timer Timer2 Enabled = 0 'False Interval = 1000 Left = 4800 Top = 2040 End Begin VB.Timer Timer1 Enabled = 0 'False Interval = 500 Left = 4800 Top = 1440 End Begin VB.CommandButton UnForce Caption = "全部取消强制" Enabled = 0 'False Height = 495 Left = 9960 TabIndex = 6 Top = 2040 Width = 1215 End Begin MSCommLib.MSComm MSComm1 Left = 3240 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 = 2 Top = 120 Width = 615 End Begin VB.CommandButton OpenCom Caption = "打开串口" Height = 495 Left = 2640 TabIndex = 1 Top = 240 Width = 1335 End End Begin VB.Frame Frame2 BackColor = &H00FFFFC0& Height = 855 Left = 5400 TabIndex = 3 Top = 120 Width = 5895 Begin VB.CommandButton PLC_Stop Caption = "停止" Enabled = 0 'False Height = 495 Left = 4560 TabIndex = 5 Top = 240 Width = 1215 End Begin VB.CommandButton PLC_Run Caption = "运行" Enabled = 0 'False Height = 495 Left = 2760 TabIndex = 4 Top = 240 Width = 1215 End Begin VB.Label Label2 BackColor = &H00FFFFC0& BackStyle = 0 'Transparent Height = 375 Left = 1155 TabIndex = 24 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 = 7 Top = 1080 Width = 11175 Begin VB.Frame Frame4 BackColor = &H00FFFFC0& Caption = "强制" Height = 1300 Left = 5280 TabIndex = 14 Top = 2910 Width = 4455 Begin VB.OptionButton Option1 BackColor = &H00FFFFC0& Caption = "Q" Height = 255 Left = 480 TabIndex = 21 Top = 360 Value = -1 'True Width = 615 End Begin VB.OptionButton Option2 BackColor = &H00FFFFC0& Caption = "I" Height = 255 Left = 480 TabIndex = 20 Top = 840 Width = 615 End Begin VB.TextBox Text1 Height = 300 Left = 1920 TabIndex = 19 Text = "0" Top = 360 Width = 975 End Begin VB.ComboBox Combo1 Height = 300 ItemData = "Form1.frx":0000 Left = 2880 List = "Form1.frx":001C TabIndex = 18 Text = "0" Top = 360 Width = 1215 End Begin VB.CommandButton ReSet_Bit Caption = "复位" Enabled = 0 'False Height = 300 Left = 2160 TabIndex = 17 Top = 840 Width = 615 End Begin VB.CommandButton Set_Bit Caption = "置位" Enabled = 0 'False Height = 300 Left = 1320 TabIndex = 16 Top = 840 Width = 615 End Begin VB.CommandButton UN_F Caption = "取消强制" Enabled = 0 'False Height = 300 Left = 3120 TabIndex = 15 Top = 840 Width = 975 End Begin VB.Label Label1 BackColor = &H00FFFFC0& Caption = "地址" Height = 255 Left = 1440 TabIndex = 22 Top = 420 Width = 375 End End Begin VB.CommandButton Read_I Caption = "读取状态" Enabled = 0 'False Height = 495 Left = 9840 TabIndex = 12 Top = 360 Width = 1215 End Begin PLC监控程序.IO_Label IO_Label4 Height = 1455 Left = 5280 TabIndex = 8 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 = 9 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 = 10 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 = 11 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 = 23 Top = 1560 Width = 4575 _ExtentX = 8070 _ExtentY = 2355 caption = "Q1" value = 0 BackColor = 16777152 End Begin VB.Label Val_I Height = 255 Index = 1 Left = 1080 TabIndex = 13 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 Else MSComm1.PortOpen = False Chk_COM.Value = 0 OpenCom.Caption = "打开串口" 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 ReadyOk = False 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 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 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 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() '监控定时器 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