| |
我要投稿 | 资讯 | 机械 | 电气 | 软件 | |
| 机电专业技术网>电子电气>变频器> |
实现VB与台达变频器通信Visual Basic的以其实用和开发周期短等特点受到广大程序员的欢迎,许多用过像VC++这些软件的程序员也开始加入VB的行列,因为它太实用了,特别在小软件的开发上。VB在工业监控方面的应用也非常广泛。今天我给大家分享一下我在做台达变频器和PC通信的经验:串口初始化: On Error GoTo errStr MSComm1.CommPort = 1 MSComm1.Settings = "9600,o,8,1" MSComm1.InputMode = comInputModeBinary MSComm1.Handshaking = comNone MSComm1.OutBufferSize = 1024 MSComm1.InBufferSize = 512 MSComm1.InputLen = 0 MSComm1.SThreshold = 1 MSComm1.RThreshold = 1 MSComm1.PortOpen = True Exit Sub errStr: If Err.Number = 8002 Then MsgBox "串口不存在!", vbOKOnly Or vbInformation ElseIf Err.Number = 8005 Then MsgBox "串口已被占用!", vbOKOnly Or vbInformation End If 请根据串口初始化的代码来设置变频器的设置。(参考VFD-M说明书) 读变频器的当前频率: 发送到串口的数据:01 03 21 02 00 02 6F F7 其中01为设备地址;03为写命令;21 02为当前频率寄存器地址;00 02资料数(word);6F F7为检验码 在编写代码之前,可以先用串调试软件(EasyPort)调试一下,这可以确保接线没和变频器设置方面没有问题。 EasyPort使用:设定好串口波特率9600、数据位8位、校验位O、停止位1;选中Modbus协议,复选附加检验码;在发送框内直接写入01 03 21 02 00 02,点击发送即可。 在接收到的文报中,读者可以前4位和后两位都去掉,留下的数据把十六进制转换成十进制,把计算出来的结果和变频器数码管的显示是不是相符,如果不是,请检查一下变频器的设置后,再做实验。 如果在串口调试软件中得到了理想的效果后,就可着手写代码了。 发送数据:Mscomm.Output=要送的数据 接收数据:Mscomm_OnComm() 来接收 具体的代码大家自己实现啦 以下为检验代码CRC16部分: Function CRC16(data() 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 i As Integer Dim Flag As Integer CRC16Lo = &HFF CRC16Hi = &HFF CL = &H1 CH = &HA0 For i = 0 To UBound(data) CRC16Lo = CRC16Lo Xor data(i) 每一个数据与CRC寄存器进行异或 For Flag = 0 To 7 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,则与多项式码进行异或 上一页12 下一页 上一篇:一起直流调速系统的故障分析 下一篇:变频器的检查和维护 通信 实现   CRC16Lo As & CRC16Hi 串口 dim 变频器 通信 实现   CRC16Lo As & CRC16Hi 串口 dim 变频器 |