登录
首页 PLC论坛 台达PLC
回帖 发帖
正文

主题:我错在什么地方?

点击:918 回复:7

用VB6.0 写数据到PLC中过程中,调试提示 LRC = LRC(aa)中的“aa”数据类型不正确,请教大咖,我错在哪里?
Dim smsg As String
Dim aa   As String
Dim a1 As String
stx = ":"     '起始字符为冒号
a = Right(Text11.Text, Len(Text11.Text) - 1)   'a为需要写入寄存器的数据
If Len(a) >= 0 Then   '如果写入寄存器的数值大于等于零
If Mid(a, 1) = "" Then '如果写入的数值字符的第一位是空格
MsgBox ("请输入数值!")   '则提示请输入数值!
Text1.SetFocus   '光标移至文本框
Text1.SelStart = 1   '光标在文本框第二位闪烁
Exit Sub
b1 = Hex(a)   '那么,直接将输入的数据转换为十六进制数
If Len(b1) = 1 Then   '如果输入一位十六进制数
a1 = "000" + b1   '那么,写入的数值为000加上输入的一位十六进制数
Else
If Len(b1) = 2 Then   '如果输入的数据长度为2
a1 = "00" + b1   '那么,写入的数值为00加上输入的两位十六进制数
Else
If Len(b1) = 3 Then   '如果输入的数据长度为3
a1 = "0" + b1   '那么写入的数值为0加上输入的一位十六进制数
Else
If Len(b1) = 4 Then   '如果输入的数据长度为4
a1 = b1    '那么写入的数值为输入的数据
End If
End If
End If
End If
End If
aa = "0106" + "09A9" + a1  'PLC站号01 命令06(写入) 寄存器D地址09A9 数据a1
LRC = LRC(aa) '计算lrc校验值
If Len(LRC) = 1 Then   '如果lrc校验值为一位
LRC = "0" + LRC   '则lrc校验值补零
Else
LRC = LRC   '否则校验值为计算值
End If
16-09-01 05:49
这是什么啊 一大推的
16-09-01 08:01
VB编程想当年在大学时学过两年,不过现在都还给老师了。
16-09-01 08:51
LRC接受字符串?
LRC函数在哪里?
16-09-01 08:59
请先添加LRC函数代码,例如:
Function LRC(ByVal s As String) As String
 Dim sa, i As Integer, sum As Long
 sa = Split(s)
 For i = 0 To UBound(sa)
     sum = sum + ("&H" & sa(i))
 Next
 Lcr = Hex((sum And 255 Xor 255) + 1)
End Function
16-09-01 09:34
感谢四楼,函数校验引用了中达电通王乃全公布的程序:
Public Function LRC(str As String) As String
c = 0
l = Len(str)
For c = c + 1 To l
c_data = Mid$(str, c, 2)
d_lrc = d_lrc + Val("&H" + c_data)
c = c + 1
Next c
If d_lrc > &HFF Then
d_lrc = d_lrc Mod &H100
End If
h_lrc = Hex(&HFF - d_lrc + 1)
If Len(h_lrc) > 2 Then
h_lrc = Mid(h_lrc, Len(h_lrc) - 1, 2)
End If
LRC = h_lrc
End Function
这个函数在启动停止PLC 和读取寄存器数据时很正常。我这里的问题主要是"aa" 的数据类型不符合要求。是不是添加
Function LRC(ByVal s As String) As String
 Dim sa, i As Integer, sum As Long
 sa = Split(s)
 For i = 0 To UBound(sa)
     sum = sum + ("&H" & sa(i))
 Next
 Lcr = Hex((sum And 255 Xor 255) + 1)
End Function
       函数代码后就可以了,下班后试试。
最后修改:2016/9/1 10:26:30
16-09-01 10:25
把你的程序复制到VB里,稍微改动一下,没发现错误。
不过,你的程序处理方法非常不好,太差!
附件 1.jpg
16-09-01 12:39
谢谢六楼,谢谢!
16-09-09 11:30

工控新闻

更多新闻资讯