1,486
社区成员
发帖
与我相关
我的任务
分享
Private Sub Send_Parameter_Timer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Send_Parameter_Timer.Tick
Try
Do
Application.DoEvents()
Loop Until Receive_Boolean = False
Send_Boolean = True
Select Case str_byte_number
Case 0
AxMSComm1.OutBufferCount = 0
AxMSComm1.InBufferCount = 0
Dim str_write(0 To 100) As Byte
Dim str_val(0 To 5) As Byte
Dim Temp_FCS As Object = 0
str_val(0) = &H10
str_val(1) = &H2
str_val(2) = &H0
str_val(3) = &H5C
str_val(4) = &H5E
str_val(5) = &H16
AxMSComm1.Output = str_val
Sleep(50)
'写V区一个双字
'发:68 23 23 68 02 00 7C 32 01 00 00 00 00 00 0E 00 06 05 01 12 0A 10
str_write(0) = &H68 REM 开始符
str_write(1) = &H27 REM 长度
str_write(2) = &H27 REM 长度
str_write(3) = &H68 REM 开始符
str_write(4) = &H2 REM 站号
str_write(16) = &HC REM 数据长度 16位的05表示写入的是 位或者字节(即用一个字节存储)06 表示 字; 08表示双字(4个字节); 0C表示8个字节
str_write(17) = &H5 REM 04读05写
str_write(18) = &H1 REM 变量地址
str_write(19) = &H12 REM
str_write(20) = &HA
str_write(21) = &H10 REM 0~21是写死的,可以不用管
str_write(22) = &H6 REM 数据长度 01位;02字节;04字;06双字。
str_write(23) = &H0 REM 数据长度
str_write(24) = &H2 REM 数据个数 0100表示一个;0200表示连续的两个;0400连续的4个。
str_write(25) = &H0 REM 数据个数 0100表示一个;0200表示连续的两个;0400连续的4个。
str_write(26) = &H1 REM 存储类型 26位:01 V区;00其他
str_write(27) = &H84 REM 存储类型 27位:04 S区;05 SM区;06 AI;07 AQ;1E C;81 I;82 Q;83 M;84 V ;1F T
str_write(28) = &H0 REM 数据偏移量
str_write(29) = (Str(100) * 8) \ 256 REM 数据偏移量
str_write(30) = (Str(100) * 8) Mod 256 REM 数据偏移量
str_write(31) = &H0 REM 数据形式 03表示位;04表示其他
str_write(32) = &H4 REM 数据形式 03表示位;04表示其他
str_write(33) = &H0 REM 数据位数 即写入数据多少位。01一位;08八位;10十六位;20三十二位。
str_write(34) = &H40 REM 数据位数 即写入数据多少位。01一位;08八位;10十六位;20三十二位。
str_write(35) = (VW100) \ 256 REM 写入值 写入位,字节均用一个字节存储;写入双字得用四个字节
str_write(36) = (VW100) Mod 256
str_write(37) = (VW102) \ 256
str_write(38) = (VW102) Mod 256
str_write(39) = (VW104) \ 256 REM 写入值 写入位,字节均用一个字节存储;写入双字得用四个字节
str_write(40) = (VW104) Mod 256
str_write(41) = (VW106) \ 256
str_write(42) = (VW106) Mod 256
For i = 4 To 42
Temp_FCS = Temp_FCS + str_write(i)
Next
str_val(5) = &H16
AxMSComm1.Output = str_val
Sleep(50)
str_write(0) = &H68 REM 开始符
str_write(1) = &H27 REM 长度
str_write(2) = &H27 REM 长度
str_write(3) = &H68 REM 开始符
str_write(4) = &H2 REM 站号
str_write(5) = &H0 REM 源地址
str_write(6) = &H7C REM 功能代码 7C表示写入;6C表示读取。
str_write(7) = &H32 REM 协议识别
str_write(8) = &H1 REM 远程控制
str_write(9) = &H0 REM 冗余识别
str_write(10) = &H0 REM 冗余识别
str_write(11) = &H0 REM 协议数据
str_write(16) = &HC REM 数据长度 16位的05表示写入的是 位或者字节(即用一个字节存储)06 表示 字; 08表示双字(4个字节); 0C表示8个字节
str_write(17) = &H5 REM 04读05写
str_write(18) = &H1 REM 变量地址
str_write(19) = &H12 REM
str_write(20) = &HA
str_write(21) = &H10 REM 0~21是写死的,可以不用管
str_write(22) = &H6 REM 数据长度 01位;02字节;04字;06双字。
str_write(23) = &H0 REM 数据长度
str_write(24) = &H2 REM 数据个数 0100表示一个;0200表示连续的两个;0400连续的4个。
str_write(25) = &H0 REM 数据个数 0100表示一个;0200表示连续的两个;0400连续的4个。
str_write(26) = &H1 REM 存储类型 26位:01 V区;00其他
str_write(27) = &H84 REM 存储类型 27位:04 S区;05 SM区;06 AI;07 AQ;1E C;81 I;82 Q;83 str_write(37) = (VW150) \ 256
str_write(38) = (VW150) Mod 256
str_write(39) = (VW152) \ 256 REM 写入值 写入位,字节均用一个字节存储;写入双字得用四个字节
str_write(40) = (VW152) Mod 256
str_write(41) = (VW154) \ 256
str_write(42) = (VW154) Mod 256
For i = 4 To 42
Temp_FCS = Temp_FCS + str_write(i)
Next
str_write(43) = Temp_FCS Mod 256 REM 校验码
str_write(44) = &H16 REM 终止符
AxMSComm1.Output = str_write
str_byte_number = str_byte_number + 1
Case 7
str_byte_number = 0
'Receive_Timer.Enabled = True
Send_Parameter_Timer.Enabled = False
Send_Boolean = False
First_Read = True
End Select
Catch ex As Exception
End Try
End Sub