⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bjdj_jdq.frm

📁 Visual Basic control Motor,非常方便输入简单
💻 FRM
📖 第 1 页 / 共 2 页
字号:
      DTREnable       =   -1  'True
      InputLen        =   12
      RThreshold      =   12
   End
   Begin VB.Timer Timer1 
      Enabled         =   0   'False
      Interval        =   2000
      Left            =   600
      Top             =   7860
   End
   Begin VB.Menu help 
      Caption         =   "帮助"
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
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 & "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/  商务QQ:965042285


'紫色线--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 Then '顺时针旋转
    bit_direc = "1"
Else
    bit_direc = "0"
End If

func_num = "0" '转速控制功能

board_num = "0" '板号暂时固定为0

bit_free = "1" '电机处于锁定状态,送入脉冲才能旋转

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

func_num = "0" '转速控制功能

board_num = "0" '板号暂时固定为0

bit_free = "0" '电机处于自由位;根据控制要求也可以为"1",则电机停止后电机轴将处于锁定状态

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

func_num = "0" '转速控制功能

board_num = "0" '板号暂时固定为0

bit_free = "1" '电机处于锁定状态,送入脉冲才能旋转

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是顺时针旋转


step_num = Text2(2).Text

If Option3.Value = True Then '顺时针步进
    bit_direc = "1"
Else
    bit_direc = "0"
End If

func_num = "2" '步进控制功能

board_num = "0" '板号暂时固定为0

If Option6.Value = True Then
    bit_free = "1" '步进后电机轴处于锁定状态
Else
    bit_free = "0" '步进后电机轴处于自由状态
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位是保留位,固定为“9”。
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/  商务QQ:965042285
'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_on_off = "1"
Else
    bit_on_off = "0"
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/  商务QQ:965042285

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/  商务QQ:965042285")
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


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -