您好,欢迎光临本网站![请登录][注册会员]  
文件名称: vb串口通信控制步进电机
  所属分类: VB
  开发工具:
  文件大小: 19kb
  下载次数: 0
  上传时间: 2012-04-12
  提 供 者: jacki******
 详细说明: Dim speed_str(2) As Byte Dim second_count Dim second_count1 Dim bit_direc '电机方向位 Dim bit_free '电机自由位 Public Function H_To_B(ByVal Hex As String) As String Dim I As Long Dim B As String Hex = UCase(Hex) For I = 1 To Len(Hex) Select Case Mid(Hex, I, 1) Case "0": B = B & "0000" Case "1": B = B & "0001" Case "2": B = B & "0010" Case "3": B = B & "0011" Case "4": B = B & "0100" Case "5": B = B & &q uot;0101" Case "6": B = B & "0110" Case "7": B = B & "0111" Case "8": B = B & "1000" Case "9": B = B & "1001" Case "A": B = B & "1010" Case "B": B = B & "1011" Case "C": B = B & "1100" Case "D": B = B & "1101" Case "E": B = B & "1110" Case "F": B = B & "1111" End Select Next I While Left(B, 1) = "0" B = Right(B, Len(B) - 1) Wend H_To_B = B End Function Public Function B_To_H(ByVal Bin As String) As String Dim I As Long Dim H As String If Len(Bin) Mod 4 <> 0 Then Bin = String(4 - Len(Bin) Mod 4, "0") & Bin End If For I = 1 To Len(Bin) Step 4 Select Case Mid(Bin, I, 4) Case "0000": H = H & "0" Case "0001": H = H & "1" Case "0010": H = H & "2" Case "0011": H = H & "3" Case "0100": H = H & "4" Case "0101": H = H & "5" Case "0110": H = H & "6" Case "0111": H = H & "7" Case "1000": H = H & "8" Case "1001": H = H & "9" Case "1010": H = H & "A" Case "1011": H = H & "B" Case "1100": H = H & "C" Case "1101": H = H & "D" Case "1110": H = H & "E" Case "1111": H = H & "F" End Select Next I B_To_H = H End Function Public Function D_To_B(ByVal Dec As Long) As String Do D_To_B = Dec Mod 2 & D_To_B Dec = Dec \ 2 Loop While Dec End Function Public Function B_To_D(ByVal Bin As String) As Integer Dim I As Long For I = 1 To Len(Bin) B_To_D = B_To_D * 2 + Val(Mid(Bin, I, 1)) Next I End Function Private Sub Command1_Click() '本程序用于精密转速控制、精密运动控制、精密机械加工等,控制精度极高,转速误差<0.01转/分钟。 '通过地址编码,一个串口最多可以寻址、控制255块串口控制智能步进电机驱动器,也就是说一个串口 '(或一台电脑)可以控制255台步进电机。串口控制智能步进电机驱动器和控制主机之间距离可以通过 '485总线延长,这样控制主机可以放置在离步进电机很远的地方。 '只要会VB、会串口编程,不懂硬件也可以搞自动化控制。蚌埠利圆电脑科技提供 '本程序配套的步进电机控制器,及各种串口控制设备,帮你在VB下轻松搞定自动化 '控制。联系电话:05522055903 http://www.lcwin5888.com.cn/ 淘宝店http://shop35895846.taobao.com/ 商务QQ:965042285 技术咨询QQ 415810948 '紫色线--5v电源正,灰色线--5v电源负 '蓝色线--将驱动器3个控制信号正极连接到一起后接到蓝色线;绿色线--脉冲负;黄色线--方向负;橙色线--自由位负。 Dim pulse_per_lap '电机每转一周所需脉冲数 Dim freq '转速换算后对应的送往驱动器的脉冲频率 Dim func_num '控制功能号,0是转速控制,2是步进控制 Dim board_num '控制板编号,代表指令发送给哪个控制板,用于扩充一个串口带多个控制板 Dim bit_free '电机自由位。0-电机处于自由状态,1-电机处于锁定状态. Dim bit_direc '电机运行方向控制位,0是逆时针旋转,1是顺时针旋转 pulse_per_lap = 360 / (Val(Text1(0).Text) / Val(Text1(1).Text)) '等于电机固有步距角除以驱动器细分数 freq = Int((Val(Text2(0).Text) / 60) * pulse_per_lap) '转速换算成频率 If Option3.Value = True And Check1.Value = 0 Then '顺时针旋转、正常信号 bit_direc = "1" End If If Option4.Value = True And Check1.Value = 0 Then '逆时针旋转、正常信号 bit_direc = "0" End If If Option3.Value = True And Check1.Value = 1 Then '顺时针旋转、反向信号 bit_direc = "0" End If If Option4.Value = True And Check1.Value = 1 Then '逆时针旋转、反向信号 bit_direc = "1" End If func_num = "0" '转速控制功能 board_num = "0" '板号暂时固定为0 If Check1.Value = 0 Then bit_free = "1" '电机处于锁定状态,送入脉冲才能旋转 Else bit_free = "0" '电机处于锁定状态,送入脉冲才能旋转 End If Select Case Len(freq) '把频率字段部分数据加工成标准格式 Case 1 freq = "00000" & freq Case 2 freq = "0000" & freq Case 3 freq = "000" & freq Case 4 freq = "00" & freq Case 5 freq = "0" & freq Case 6 Case Else End Select MSComm1.Output = func_num & board_num & bit_direc & bit_free & "0" & freq & "9" '第5位是保留位,固定为“0”;最后一位是保留位,固定为“9”。 Text4(1).Text = func_num & board_num & bit_direc & bit_free & "0" & freq & "9" End Sub Private Sub Command2_Click() Dim func_num '控制功能号,0是转速控制,2是步进控制 Dim board_num '控制板编号,代表指令发送给哪个控制板,用于扩充一个串口带多个控制板 Dim bit_free '电机自由位。0-电机处于自由状态,1-电机处于锁定状态. Dim bit_direc '电机运行方向控制位,0是逆时针旋转,1是顺时针旋转 freq = "0" 'If Option3.Value = True Then '顺时针旋转 ' bit_direc = "1" 'Else ' bit_direc = "0" 'End If 'If Option3.Value = True Then '顺时针旋转 ' If Check1.Value = 0 Then ' bit_direc = "1" ' Else ' bit_direc = "0" ' End If 'Else ' If Check1.Value = 0 Then ' bit_direc = "0" ' Else ' bit_direc = "1" ' End If 'End If If Option3.Value = True And Check1.Value = 0 Then '顺时针旋转、正常信号 bit_direc = "1" End If If Option4.Value = True And Check1.Value = 0 Then '逆时针旋转、正常信号 bit_direc = "0" End If If Option3.Value = True And Check1.Value = 1 Then '顺时针旋转、反向信号 bit_direc = "0" End If If Option4.Value = True And Check1.Value = 1 Then '逆时针旋转、反向信号 bit_direc = "1" End If func_num = "0" '转速控制功能 board_num = "0" '板号暂时固定为0 'bit_free = "0" '电机处于自由位;根据控制要求也可以为"1",则电机停止后电机轴将处于锁定状态 If Check1.Value = 0 Then bit_free = "0" '电机处于锁定状态,送入脉冲才能旋转 Else bit_free = "1" '电机处于锁定状态,送入脉冲才能旋转 End If Select Case Len(freq) '把频率字段部分数据加工成标准格式 Case 1 freq = "00000" & freq Case 2 freq = "0000" & freq Case 3 freq = "000" & freq Case 4 freq = "00" & freq Case 5 freq = "0" & freq Case 6 Case Else End Select MSComm1.Output = func_num & board_num & bit_direc & bit_free & "0" & freq & "9" '第5位是保留位,固定为“0”;最后一位是保留位,固定为“9”。 Text4(1).Text = func_num & board_num & bit_direc & bit_free & "0" & freq & "9" End Sub Private Sub Command3_Click() Dim pulse_per_lap '电机每转一周所需脉冲数 Dim freq '转速换算后对应的送往驱动器的脉冲频率 Dim func_num '控制功能号,0是转速控制,2是步进控制 Dim board_num '控制板编号,代表指令发送给哪个控制板,用于扩充一个串口带多个控制板 Dim bit_free '电机自由位。0-电机处于自由状态,1-电机处于锁定状态. Dim bit_direc '电机运行方向控制位,0是逆时针旋转,1是顺时针旋转 freq = Text2(1).Text '频率 'If Option3.Value = True Then '顺时针旋转 ' bit_direc = "1" 'Else ' bit_direc = "0" 'End If If Option3.Value = True And Check1.Value = 0 Then '顺时针旋转、正常信号 bit_direc = "1" End If If Option4.Value = True And Check1.Value = 0 Then '逆时针旋转、正常信号 bit_direc = "0" End If If Option3.Value = True And Check1.Value = 1 Then '顺时针旋转、反向信号 bit_direc = "0" End If If Option4.Value = True And Check1.Value = 1 Then '逆时针旋转、反向信号 bit_direc = "1" End If func_num = "0" '转速控制功能 board_num = "0" '板号暂时固定为0 'bit_free = "1" '电机处于锁定状态,送入脉冲才能旋转 If Check1.Value = 0 Then bit_free = "1" '电机处于锁定状态,送入脉冲才能旋转 Else bit_free = "0" '电机处于锁定状态,送入脉冲才能旋转 End If Select Case Len(freq) '把频率字段部分数据加工成标准格式 Case 1 freq = "00000" & freq Case 2 freq = "0000" & freq Case 3 freq = "000" & freq Case 4 freq = "00" & freq Case 5 freq = "0" & freq Case 6 Case Else End Select MSComm1.Output = func_num & board_num & bit_direc & bit_free & "0" & freq & "9" '第5位是保留位,固定为“0”;最后一位是保留位,固定为“9”。 Text4(1).Text = func_num & board_num & bit_direc & bit_free & "0" & freq & "9" End Sub Private Sub Command4_Click() Dim step_num '步进量 Dim func_num '控制功能号,0是转速控制,2是步进控制 Dim board_num '控制板编号,代表指令发送给哪个控制板,用于扩充一个串口带多个控制板 Dim bit_free '电机自由位。0-电机处于自由状态,1-电机处于锁定状态. Dim bit_direc '电机运行方向控制位,0是逆时针旋转,1是顺时针旋转 Dim done_state '电机步进完成后轴所处状态,0-电机处于自由状态,1-电机处于锁定状态. step_num = Text2(2).Text 'If Option3.Value = True Then '顺时针步进 ' bit_direc = "1" 'Else ' bit_direc = "0" 'End If 'If Option3.Value = True Then '顺时针旋转 ' If Check1.Value = 0 Then ' bit_direc = "1" ' Else ' bit_direc = "0" ' End If 'Else ' If Check1.Value = 0 Then ' bit_direc = "0" ' Else ' bit_direc = "1" ' End If 'End If If Option3.Value = True And Check1.Value = 0 Then '顺时针旋转、正常信号 bit_direc = "1" End If If Option4.Value = True And Check1.Value = 0 Then '逆时针旋转、正常信号 bit_direc = "0" End If If Option3.Value = True And Check1.Value = 1 Then '顺时针旋转、反向信号 bit_direc = "0" End If If Option4.Value = True And Check1.Value = 1 Then '逆时针旋转、反向信号 bit_direc = "1" End If func_num = "2" '步进控制功能 board_num = "0" '板号暂时固定为0 If Check1.Value = 0 And Option5.Value = True Then '正常信号电平,步进后电机轴处于自由位 bit_free = "0" End If If Check1.Value = 0 And Option6.Value = True Then '正常信号电平,步进后电机轴处于锁定位 bit_free = "1" End If If Check1.Value = 1 And Option5.Value = True Then '反向信号电平,步进后电机轴处于自由位 bit_free = "2" End If If Check1.Value = 1 And Option6.Value = True Then '反向信号电平,步进后电机轴处于锁定位 bit_free = "3" End If Select Case Len(step_num) '把步进字段部分数据加工成标准格式 Case 1 step_num = "00000" & step_num Case 2 step_num = "0000" & step_num Case 3 step_num = "000" & step_num Case 4 step_num = "00" & step_num Case 5 step_num = "0" & step_num Case Else End Select MSComm1.Output = func_num & board_num & bit_direc & bit_free & step_num & "99" '最后2位是保留位,固定为“99”。 Text4(1).Text = func_num & board_num & bit_direc & bit_free & step_num & "99" End Sub Private Sub Command5_Click() Label7.Caption = "复位情况:" MSComm1.Output = "U" End Sub Private Sub Command6_Click() '本程序用于精密转速控制、精密运动控制、精密机械加工等,控制精度极高,转速误差<0.01转/分钟。 '通过地址编码,一个串口最多可以寻址、控制255块串口控制智能步进电机驱动器,也就是说一个串口 '(或一台电脑)可以控制255台步进电机。串口控制智能步进电机驱动器和控制主机之间距离可以通过 '485总线延长,这样控制主机可以放置在离步进电机很远的地方。 '只要会VB、会串口编程,不懂硬件也可以搞自动化控制。蚌埠利圆电脑科技提供 '本程序配套的步进电机控制器,及各种串口控制设备,帮你在VB下轻松搞定自动化 '控制。联系电话:05522055903 http://www.lcwin5888.com.cn/ 淘宝店http://shop35895846.taobao.com/ 商务QQ:965042285 技术咨询QQ 415810948 'MSComm1.Output = "301000015999" 'Text4(1).Text = "301000015999" Dim jdq_num Dim bit_on_off Select Case Len(Text3.Text) Case 1 jdq_num = "00000" & Text3.Text Case 2 jdq_num = "0000" & Text3.Text Case 3 jdq_num = "000" & Text3.Text Case 4 jdq_num = "00" & Text3.Text Case 5 jdq_num = "0" & Text3.Text Case 6 Case Else End Select If Option1.Value = True Then bit Else bit End If MSComm1.Output = "30" & bit_on_off & jdq_num & "999" Text4(1).Text = "30" & bit_on_off & jdq_num & "999" End Sub Private Sub Command7_Click() MSComm1.Output = "300000015999" Text4(1).Text = "300000015999" End Sub Private Sub Form_Load() '本程序用于精密转速控制、精密运动控制、精密机械加工等,控制精度极高,转速误差<0.01转/分钟。 '通过地址编码,一个串口最多可以寻址、控制255块串口控制智能步进电机驱动器,也就是说一个串口 '(或一台电脑)可以控制255台步进电机。串口控制智能步进电机驱动器和控制主机之间距离可以通过 '485总线延长,这样控制主机可以放置在离步进电机很远的地方。 '只要会VB、会串口编程,不懂硬件也可以搞自动化控制。蚌埠利圆电脑科技提供 '本程序配套的步进电机控制器,及各种串口控制设备,帮你在VB下轻松搞定自动化 '控制。联系电话:05522055903 http://www.lcwin5888.com.cn/ 淘宝店http://shop35895846.taobao.com/ 商务QQ:965042285 技术咨询QQ 415810948 Dim cur_state ' 使用 COM1。 MSComm1.CommPort = 1 ' 9600 波特,无奇偶校验,8 位数据,一个停止位。 MSComm1.Settings = "9600,N,8,1" On Error GoTo change_com MSComm1.PortOpen = True cur_state = "ok" change_com: If cur_state = "ok" Then Exit Sub Else MSComm1.CommPort = 2 ' 9600 波特,无奇偶校验,8 位数据,一个停止位。 MSComm1.Settings = "9600,N,8,1" MSComm1.PortOpen = True End If End Sub Private Sub help_Click() MsgBox ("本程序用于精密转速控制、精密运动控制、精密机械加工等,控制精度极高,转速误差<0.01转/分钟。通过地址编码,一个串口最多可以寻址、控制255块串口控制智能步进电机驱动器,也就是说一个串口(或一台电脑)可以控制255台步进电机。串口控制智能步进电机驱动器和控制主机之间距离可以通过485总线延长,这样控制主机可以放置在离步进电机很远的地方。只要会VB、会串口编程,不懂硬件也可以搞自动化控制。蚌埠利圆电脑科技提供本程序配套的步进电机控制器、继电器控制板,及各种串口控制设备,帮你在VB下轻松搞定自动化控制。联系电话:05522055903 http://www.lcwin5888.com.cn/ 淘宝店http://shop35895846.taobao.com/ 商务QQ:965042285 技术咨询QQ 415810948") End Sub Private Sub MSComm1_OnComm() Dim d d = 1 d = 2 Select Case MSComm1.CommEvent '串口事件 Case comEvReceive '接收到数据 Dim Buffer As Variant '存储数据的缓冲区 Dim StringBuf(11) As String '数据数组 Buffer = MSComm1.Input ' Text4(0).Text = Buffer If Text4(0).Text = "UUUUUUUUUUUU" Then Label7.Caption = "复位情况:" & "成功" End If End Select End Sub Private Sub Option1_Click() Option1.Value = True Option2.Value = Not Option1.Value End Sub Private Sub Option2_Click() Option2.Value = True Option1.Value = Not Option2.Value End Sub Private Sub Timer2_Timer() second_count1 = second_count1 + 1 Label5.Caption = second_count1 Call Command5_Click If Label7.Caption <> Text5.Text Then Label6.Caption = Val(Label6.Caption) + 1 End If End Sub ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: vb 串口 通信 步进电机
 输入关键字,在本站1000多万海量源码库中尽情搜索: