嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
VB与西门子S7-200控制器通讯
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