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

📄 demo.frm

📁 运动控制卡的详细开发资料
💻 FRM
📖 第 1 页 / 共 3 页
字号:
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   375
      Left            =   3000
      TabIndex        =   0
      Top             =   240
      Width           =   2415
   End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim g_nHardwareVer As Integer
Dim g_nLibVer      As Double



Private Sub BaseparaSet_Click()
'点击“基本参数设置”
    frmBasePara.Show vbModal, Me
    
End Sub

Private Sub ClearPos_Click()
'清逻辑位置计数器和实际位置计数器
    For i = 1 To 4
    
        Setup_Pos i, 0, 0     '清逻辑位置计数器
        
        Setup_Pos i, 0, 1     '清实际位置计数器
        
    Next i
    
End Sub

Private Sub CmdDelay_Click()

    If g_nHardwareVer = 1 Then
    
        MsgBox "硬件版本号为1时没有延时功能!"
        
        Exit Sub
        
    End If
    
    Setup_Delay m_nDelayTime.Text
    
    Do While Get_DelayStatus = 1
    
        m_bDelayStatus.value = vbChecked
        
    Loop
    
End Sub

Private Sub Form_Load()
 
   Init_Board                  '卡初始化
   
End Sub

'********************卡的初始化*********************

Private Sub Init_Board()

    Dim count As Integer
    
    count = Init_Card
    
    If count < 1 Then MsgBox "8940卡未正确安装"
    
    Get_Version g_nLibVer, g_nHardwareVer
    
    CardVer.Caption = "库  版本号:" + CStr(g_nLibVer) + Chr(10) + "硬件版本号:" + CStr(g_nHardwareVer)
    
    
    
    
    
End Sub

Private Sub AxisPmove_Click()

'*****************速度设定判断************************
'
'  当硬件版本号为1时,须范围设置,决定倍率
'
'  初始速度和驱动速度的设置范围为(1×倍率~8000×倍率)
'
'  加速度的设置范围为(125×倍率~125×8000×倍率)
'
'  当硬件版本号>1时,无需范围设置
'
'  初始速度和驱动速度的设置范围为(1~2M)
'
'  加速度的设置范围为(1×125~65536×125)
'
'*****************************************************
    
    For i = 1 To 4
    
        If g_nHardwareVer = 1 Then
              
            If m_nStartV(i - 1).Text > CLng(8000) * CLng(m_nRatio(i - 1).Text) Or m_nStartV(i - 1).Text < CLng(m_nRatio(i - 1).Text) Then
            
                If MsgBox("设置的初始速度超出范围,是否重新设置!", vbYesNo, "提示") = vbYes Then Exit Sub
                                    
            End If
                
            If m_nSpeed(i - 1).Text > CLng(8000) * m_nRatio(i - 1).Text Or m_nSpeed(i - 1).Text < CLng(m_nRatio(i - 1).Text) Then
            
                If MsgBox("设置的驱动速度超出范围,是否重新设置!", vbYesNo, "提示") = vbYes Then Exit Sub
                                    
            End If
            
                
            If m_nAdd(i - 1).Text > CLng(8000) * 125 * m_nRatio(i - 1).Text Or m_nAdd(i - 1).Text < 125 * m_nRatio(i - 1).Text Then
            
                If MsgBox("设置的加速度超出范围,是否重新设置!", vbYesNo, "提示") = vbYes Then Exit Sub
                                
            End If
            
        Else
        
            If m_nStartV(i - 1).Text > 200000 Or m_nStartV(i - 1).Text < 1 Then
            
                If MsgBox("设置的初始速度超出范围,是否重新设置", vbYesNo, , "") = vbYes Then Exit Sub
                
            ElseIf m_nSpeed(i - 1).Text > 200000 Or m_nSpeed(i - 1).Text < 1 Then
            
                If MsgBox("设置的驱动速度超出范围,是否重新设置", vbYesNo, "") = vbYes Then Exit Sub
                            
            ElseIf m_nAdd(i - 1).Text > CLng(65536) * 125 Or m_nAdd(i - 1).Text < 125 Then
            
                If MsgBox("设置的加速度超出范围,是否重新设置", vbYesNo, "") = vbYes Then Exit Sub
                
            End If
            
        End If
        
    Next i
    

    If m_bX.value = vbChecked Then
        
        Setup_Speed 1, m_nStartV(0).Text, m_nSpeed(0).Text, m_nAdd(0).Text, m_nRatio(0).Text
        
        Axis_Pmove 1, m_nPulse(0).Text
    
    End If
    
    If m_bY.value = vbChecked Then
    
        Setup_Speed 2, m_nStartV(1).Text, m_nSpeed(1).Text, m_nAdd(1).Text, m_nRatio(1).Text
       
        Axis_Pmove 2, m_nPulse(1).Text
       
    End If
    
    If m_bZ.value = vbChecked Then
    
        Setup_Speed 3, m_nStartV(2).Text, m_nSpeed(2).Text, m_nAdd(2).Text, m_nRatio(2).Text
        
        Axis_Pmove 3, m_nPulse(2).Text
        
    End If
    
    If m_bW.value = vbChecked Then
    
        Setup_Speed 4, m_nStartV(3).Text, m_nSpeed(3).Text, m_nAdd(3).Text, m_nRatio(3).Text
        
        Axis_Pmove 4, m_nPulse(3).Text
        
    End If
    
        
        
    

End Sub


Private Sub InterpMove_Click()

'*****************速度设定判断************************
'
'  当硬件版本号为1时,须范围设置,决定倍率
'
'  初始速度和驱动速度的设置范围为(1×倍率~8000×倍率)
'
'  加速度的设置范围为(125×倍率~125×8000×倍率)
'
'  当硬件版本号>1时,无需范围设置
'
'  初始速度和驱动速度的设置范围为(1~1M)
'
'  加速度的设置范围为(1×125~65536×125)
'
'*****************************************************
    
    For i = 1 To 4
    
        If g_nHardwareVer = 1 Then
              
            If m_nStartV(i - 1).Text > CLng(8000) * CLng(m_nRatio(i - 1).Text) Or m_nStartV(i - 1).Text < CLng(m_nRatio(i - 1).Text) Then
            
                If MsgBox("设置的初始速度超出范围,是否重新设置!", vbYesNo, "提示") = vbYes Then Exit Sub
                                    
            End If
                
            If m_nSpeed(i - 1).Text > CLng(8000) * m_nRatio(i - 1).Text Or m_nSpeed(i - 1).Text < CLng(m_nRatio(i - 1).Text) Then
            
                If MsgBox("设置的驱动速度超出范围,是否重新设置!", vbYesNo, "提示") = vbYes Then Exit Sub
                                    
            End If
            
                
            If m_nAdd(i - 1).Text > CLng(8000) * 125 * m_nRatio(i - 1).Text Or m_nAdd(i - 1).Text < 125 * m_nRatio(i - 1).Text Then
            
                If MsgBox("设置的加速度超出范围,是否重新设置!", vbYesNo, "提示") = vbYes Then Exit Sub
                                
            End If
            
        Else
        
            If m_nStartV(i - 1).Text > 100000 Or m_nStartV(i - 1).Text < 1 Then
            
                If MsgBox("设置的初始速度超出范围,是否重新设置", vbYesNo, , "") = vbYes Then Exit Sub
                
            ElseIf m_nSpeed(i - 1).Text > 100000 Or m_nSpeed(i - 1).Text < 1 Then
            
                If MsgBox("设置的驱动速度超出范围,是否重新设置", vbYesNo, "") = vbYes Then Exit Sub
                            
            ElseIf m_nAdd(i - 1).Text > CLng(65536) * 125 Or m_nAdd(i - 1).Text < 125 Then
            
                If MsgBox("设置的加速度超出范围,是否重新设置", vbYesNo, "") = vbYes Then Exit Sub
                
            End If
            
        End If
        
    Next i
    

'***************************插补***************************
'       ADT-8940卡可进行任意两轴插补、任意三轴插补和四轴插补
'**********************************************************

'*********************************四轴插补**********************************
    If m_bX.value = vbChecked And m_bY.value = vbChecked And m_bZ.value = vbChecked And m_bW.value = vbChecked Then
    
        Setup_Speed 1, m_nStartV(0).Text, m_nSpeed(0).Text, m_nAdd(0).Text, m_nRatio(0).Text
        
        Interp_Move4 m_nPulse(0).Text, m_nPulse(1).Text, m_nPulse(2).Text, m_nPulse(3).Text
        
'*********************************三轴插补**********************************
'********************************XYZ三轴插补********************************
    ElseIf m_bX.value = vbChecked And m_bY.value = vbChecked And m_bZ.value = vbChecked Then
    
        Setup_Speed 1, m_nStartV(0).Text, m_nSpeed(0).Text, m_nAdd(0).Text, m_nRatio(0).Text
        
        Interp_Move3 1, 2, 3, m_nPulse(0).Text, m_nPulse(1).Text, m_nPulse(2).Text
'********************************XYW三轴插补********************************
    ElseIf m_bX.value = vbChecked And m_bY.value = vbChecked And m_bW.value = vbChecked Then
    
        Setup_Speed 1, m_nStartV(0).Text, m_nSpeed(0).Text, m_nAdd(0).Text, m_nRatio(0).Text
        
        Interp_Move3 1, 2, 4, m_nPulse(0).Text, m_nPulse(1).Text, m_nPulse(3).Text
'********************************XZW三轴插补********************************
    ElseIf m_bX.value = vbChecked And m_bZ.value = vbChecked And m_bW.value = vbChecked Then
    
        Setup_Speed 1, m_nStartV(0).Text, m_nSpeed(0).Text, m_nAdd(0).Text, m_nRatio(0).Text
        
        Interp_Move3 1, 3, 4, m_nPulse(0).Text, m_nPulse(2).Text, m_nPulse(3).Text
 '********************************YZW三轴插补********************************
    ElseIf m_bY.value = vbChecked And m_bZ.value = vbChecked And m_bW.value = vbChecked Then
    
        Setup_Speed 2, m_nStartV(1).Text, m_nSpeed(1).Text, m_nAdd(1).Text, m_nRatio(1).Text
        
        Interp_Move3 2, 3, 4, m_nPulse(1).Text, m_nPulse(2).Text, m_nPulse(3).Text
        
 '********************************两轴插补********************************
 '********************************XY两轴插补********************************
    ElseIf m_bX.value = vbChecked And m_bY.value = vbChecked Then
    
        Setup_Speed 1, m_nStartV(0).Text, m_nSpeed(0).Text, m_nAdd(0).Text, m_nRatio(0).Text
        
        Interp_Move2 1, 2, m_nPulse(0).Text, m_nPulse(1).Text
'********************************XZ两轴插补********************************
    ElseIf m_bX.value = vbChecked And m_bZ.value = vbChecked Then
    
        Setup_Speed 1, m_nStartV(0).Text, m_nSpeed(0).Text, m_nAdd(0).Text, m_nRatio(0).Text
        
        Interp_Move2 1, 3, m_nPulse(0).Text, m_nPulse(2).Text
'********************************XW两轴插补********************************
    ElseIf m_bX.value = vbChecked And m_bW.value = vbChecked Then
    
        Setup_Speed 1, m_nStartV(0).Text, m_nSpeed(0).Text, m_nAdd(0).Text, m_nRatio(0).Text
        
        Interp_Move2 1, 4, m_nPulse(0).Text, m_nPulse(3).Text
 '********************************YZ两轴插补********************************
    ElseIf m_bY.value = vbChecked And m_bZ.value = vbChecked Then
    
        Setup_Speed 2, m_nStartV(1).Text, m_nSpeed(1).Text, m_nAdd(1).Text, m_nRatio(1).Text
        
        Interp_Move2 2, 3, m_nPulse(1).Text, m_nPulse(2).Text
'********************************YW两轴插补********************************
    ElseIf m_bY.value = vbChecked And m_bW.value = vbChecked Then
    
        Setup_Speed 2, m_nStartV(1).Text, m_nSpeed(1).Text, m_nAdd(1).Text, m_nRatio(1).Text
        
        Interp_Move2 2, 4, m_nPulse(1).Text, m_nPulse(3).Text
'********************************ZW两轴插补********************************
    ElseIf m_bZ.value = vbChecked And m_bW.value = vbChecked Then
    
        Setup_Speed 3, m_nStartV(2).Text, m_nSpeed(2).Text, m_nAdd(2).Text, m_nRatio(2).Text
        
        Interp_Move2 3, 4, m_nPulse(2).Text, m_nPulse(3).Text
        
    Else
    
        MsgBox "请选择插补轴", , "提示"
        
    End If

    
    
End Sub

Private Sub IOTest_Click()

    frmIOTest.Show vbModal, Me
    
End Sub

Private Sub Stop_Click()
    
    For i = 1 To 4
      
        StopRun i, 0                     '立即停止
        
    Next i
    
End Sub
Private Sub Timer1_Timer()
   
    
    Dim nLogPos As Long                   '逻辑位置
    
    Dim nActPos As Long                   '实际位置
    
    Dim nSpeed As Long                    '运行速度
    
    Dim nRatio(4) As Long                 '倍率
        
    Dim nStatus(4) As Long                '轴的驱动状态
    
    For i = 1 To 4
    
        Get_CurrentInf i, nLogPos, nActPos, nSpeed
        
        m_nLogPos(i - 1).Caption = nLogPos
        
        m_nActPos(i - 1).Caption = nActPos
        
        m_nRunSpeed(i - 1).Caption = nSpeed * m_nRatio(i - 1).Text
        
        Get_MoveStatus i, nStatus(i - 1), 0
         
 '检测限位、stop0和stop1信号
 
 '检测正限位(XLMT+ : 0,YLMT+ :4,ZLMT+ :8,WLMT+ :12)
        If Read_Input((i - 1) * 4) = 0 Then
        
           m_bPLimit(i - 1).value = 1
           
        Else
        
           m_bPLimit(i - 1).value = 0
          
        End If
        
 '检测负限位(XLMT- : 1,YLMT- :5,ZLMT- :9,WLMT- :13)
        If Read_Input((i - 1) * 4 + 1) = 0 Then
           
           m_bNLimit(i - 1).value = 1
           
        Else
        
           m_bNLimit(i - 1).value = 0
          
        End If
        
  '检测stop0(XSTOP0 : 2,YSTOP0 :6,ZSTOP0 :10,WSTOP0 :14)
        If Read_Input((i - 1) * 4 + 2) = 0 Then
        
            m_bStop0(i - 1).value = 1
            
        Else
        
            m_bStop0(i - 1).value = 0
            
        End If
        
 '检测stop1(XSTOP1 : 3,YSTOP1 :7,ZSTOP1 :11,WSTOP1 :15)
        If Read_Input((i - 1) * 4 + 3) = 0 Then
        
            m_bStop1(i - 1).value = 1
            
        Else
        
            m_bStop1(i - 1).value = 0
            
        End If
          
        
    Next i
      
    If nStatus(0) = 0 And nStatus(1) = 0 And nStatus(2) = 0 And nStatus(3) = 0 Then
    '轴驱动进行中
        AxisPmove.Enabled = True
        
        InterpMove.Enabled = True
        
        BaseparaSet.Enabled = True
        
        ClearPos.Enabled = True
        
    Else
    '轴驱动结束
        AxisPmove.Enabled = False
        
        InterpMove.Enabled = False
        
        BaseparaSet.Enabled = False
        
        ClearPos.Enabled = False
        
    End If
    


End Sub


⌨️ 快捷键说明

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