信捷plc下载程序 报crc校验错误 怎么办

信捷plc下载程序 报crc校验错误 怎么办,第1张

你检没芦查一下你的通讯电缆还有就是转串,应该不是plc的问题,下载程序也是在通讯不断枯配带的发数据包和校验码

如果硬件有问题有可能会卖清出现这个提示

还有就是你把plc刷机一下恢复到出厂设置(他们官网有系统更新工具和说明),或者换一台plc再试一下呢

'Text1.Text 输入数据

'Text2.Text 输出数据

Dim ReturnData(1) As Byte

Private Sub Command1_Click()

Dim CRC(2) As Byte

Dim d(6) As Byte '待传输数据

ReDim data(7) As Byte

For i = 0 To 5

data(i) = "&h" + Mid(Text1.Text, 2 * i + 1, 2)

Debug.Print data(i)

Next i

Call CRC16(data, UBound(data) - 2, data(6), data(7)) '调用CRC16计算函数

'CRC(0)为高位

'CRC(1)为低位

End Sub

Function CRC16(data() As Byte, i As Integer, ByRef ReturnDatalo As Byte, ByRef ReturnDatahi As Byte) As String

Dim CRC16Lo As Byte, CRC16Hi As Byte 'CRC寄存器

Dim CL As Byte, CH As Byte'多项式码判世虚&HA001

Dim SaveHi As Byte, SaveLo As Byte

Dim Flag As Integer

CRC16Lo = &HFF

CRC16Hi = &HFF

CL = &H1

CH = &HA0

For i = 0 To UBound(data) - 2

CRC16Lo = CRC16Lo Xor data(i) '每一个数据与CRC寄存器进行异或

For Flag = 0 To 9

SaveHi = CRC16Hi

SaveLo = CRC16Lo

CRC16Hi = CRC16Hi \ 2'高位右移掘燃一位

CRC16Lo = CRC16Lo \ 2'低位右移一位

If ((SaveHi And &H1) = &H1) Then '如果高位字节最后一位为1

CRC16Lo = CRC16Lo Or &H80 '则低位字节右移后前面补1

End If '返茄否则自动补0

If ((SaveLo And &H1) = &H1) Then '如果LSB为1,则与多项式码进行异或

CRC16Hi = CRC16Hi Xor CH

CRC16Lo = CRC16Lo Xor CL

End If

Next Flag

Next i

ReturnDatahi = CRC16Hi 'CRC高位

ReturnDatalo = CRC16Lo 'CRC低位

Debug.Print Hex(CRC16Lo), Hex(CRC16Hi)

Text2.Text = Text1.Text &Hex(CRC16Lo) &Hex(CRC16Hi)

End Function


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12414900.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存