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

📄 ctrlcard.bas

📁 运动控制卡的详细开发资料
💻 BAS
字号:
Attribute VB_Name = "CtrlCard"
'********************** 运动控制模块 ********************

    '为了简单、方便、快捷地开发出通用性好、可扩展性强、
    
    '维护方便的应用系统,我们在控制卡函数库的基础上将
    
    '所有库函数进行了分类封装。下面的示例使用一块运动
    
    '控制卡

'********************************************************
Public Result As Integer      '返回值

Public m_nHardwareVer As Integer      '硬件版本号

Const MAXAXIS = 4           '最大轴数

'*******************初始化函数************************

    '该函数中包含了控制卡初始化常用的库函数,这是调用
    
    '其他函数的基础,所以必须在示例程序中最先调用
    
    '返回值<=0表示初始化失败,返回值>0表示初始化成功

'*****************************************************
Public Function Init_Card() As Integer
       
    Result = adt8940_initial           '卡初始化
    
    If Result <= 0 Then
     
       Init_Card = Result
       
       Exit Function
       
    End If
    
    m_nHardwareVer = get_hardware_ver(0)
    
    For i = 1 To MAXAXIS
         
       set_range 0, i, 500 / 5         '设置范围,决定倍率,设初始倍率为5
       
       set_command_pos 0, i, 0         '逻辑位置计数器清零
       
       set_actual_pos 0, i, 0          '实位位置计数器清零
       
       set_startv 0, i, 100            '设置初始速度
       
       set_speed 0, i, 200             '设置驱动速度
       
       set_acc 0, i, 625               '设置加速度
     
    Next i
    
    Init_Card = Result
       
End Function

'********************获取版本信息************************
'
'    该函数用于获取硬件版本和函数库版本
'
'    参数:     libver -库版本号, hardwarever - 硬件版本号
'
'*********************************************************
Public Function Get_Version(libver As Double, hardwarever As Integer) As Integer

    Dim ver As Integer
    
    ver = get_lib_version(0)
    
    libver = CDbl((ver Mod 100) / 10)
    
    hardwarever = get_hardware_ver(0)
    
End Function

'**********************设置速度模块***********************

'   依据参数的值,判断是匀速还是加减速
    
'    设置范围,是决定倍率的参数

'    在硬件版本为1时,设置范围决定倍率

'    在硬件版本为2时,已经停用

'    设置轴的初始速度、驱动速度和加速度

'    参数:       axis -轴号

'               StartV -初始速度

'               Speed -驱动速度

'               Add -加速度

'               Ratio -倍率
    
'    返回值=0正确,返回值=1错误

'*********************************************************
Public Function Setup_Speed(ByVal axis As Integer, ByVal startv As Long, ByVal speed As Long, ByVal Add As Long, ByVal Ratio As Long) As Integer

    If m_nHardwareVer = 1 Then
       
        If (startv - speed >= 0) Then
        
            set_range 0, axis, Ratio
        
            Result = set_startv(0, axis, startv / Ratio)
        
            set_speed 0, axis, startv / Ratio
            
        Else
        
            set_range 0, axis, Ratio
        
            Result = set_startv(0, axis, startv / Ratio)
        
            set_speed 0, axis, speed / Ratio
        
            set_acc 0, axis, Add / 125 / Ratio
            
        End If
        
    Else
    
        If (startv - speed >= 0) Then
        
            Result = set_startv(0, axis, startv)
        
            set_speed 0, axis, startv
            
        Else
        
            Result = set_startv(0, axis, startv)
        
            set_speed 0, axis, speed
        
            set_acc 0, axis, Add / 125
            
        End If
    
        
    End If
    
End Function

'*********************单轴驱动函数**********************

    '该函数用于驱动单个运动轴运动
    
    '参数:axis-轴号,pulse-输出的脉冲数
    
    '返回值=0正确,返回值=1错误

'*******************************************************
Public Function Axis_Pmove(ByVal axis As Integer, ByVal pulse As Long) As Integer
    
    Result = pmove(0, axis, pulse)
    
    Axis_Pmove = Rresult
    
End Function

'*******************任意两轴插补函数********************

    '该函数用于驱动任意两轴进行插补运动
    
    '参数:     axis1 , axis2 - 参与插补的轴号
    
    '          pulse1,pulse2-对应轴的输出脉冲数
    
    '返回值=0正确,返回值=1错误

'*******************************************************
Public Function Interp_Move2(ByVal axis1 As Integer, ByVal axis2 As Integer, ByVal pulse1 As Long, ByVal pulse2 As Long) As Integer

    Result = inp_move2(0, axis1, axis2, pulse1, pulse2)
    
    Interp_Move2 = Result
    
End Function

'*******************任意三轴插补函数********************

    '该函数用于驱动任意三轴进行插补运动
    
    '参数:     axis1 , axis2,axis3 - 参与插补的轴号
    
    '          pulse1,pulse2,pulse3-对应轴的输出脉冲数
    
    '返回值=0正确,返回值=1错误

'*******************************************************

Public Function Interp_Move3(ByVal axis1 As Integer, ByVal axis2 As Integer, ByVal axis3 As Integer, ByVal pulse1 As Long, ByVal pulse2 As Long, ByVal pulse3 As Long) As Integer

    Result = inp_move3(0, axis1, axis2, axis3, pulse1, pulse2, pulse3)
    
    Interp_Move3 = Result
    
End Function


'*******************四轴插补函数********************

    '该函数用于驱动XYZW四轴进行插补运动
    
    '参数: pulse1,pulse2,pulse3,pulse4-对应轴的输出脉冲数
    
    '返回值=0正确,返回值=1错误

'*******************************************************
Public Function Interp_Move4(ByVal pulse1 As Long, ByVal pulse2 As Long, ByVal pulse3 As Long, ByVal pulse4 As Long) As Integer
    
    Result = inp_move4(0, pulse1, pulse2, pulse3, pulse4)
    
    Interp_Move4 = Result
    
End Function

'*******************停止驱动函数********************

    '该函数用于停止驱动,分为立即停止和减速停止
    
    '参数: axis-轴号,mode: 0-立即停止,1-减速停止
    
    '返回值=0正确,返回值=1错误

'*******************************************************
Public Function StopRun(ByVal axis As Integer, ByVal mode As Integer) As Integer

    If mode = 0 Then
        
        Result = sudden_stop(0, axis)
        
    Else
    
        Result = dec_stop(0, axis)
    
    End If

End Function

'*******************设置位置函数********************

    '该函数用于设置逻辑位置和实际位置
    
    '参数: axis-轴号,pos-位置设置值
    '      mode 0 - 设置逻辑位置, 1 - 设置实际位置
    
    '返回值=0正确,返回值=1错误

'*******************************************************
Public Function Setup_Pos(ByVal axis As Integer, ByVal pos As Long, ByVal mode As Integer) As Integer

    If mode = 0 Then
    
        Result = set_command_pos(0, axis, pos)
        
    Else
    
        Result = set_actual_pos(0, axis, pos)
        
    End If
    
End Function

'*******************获取运动信息函数********************

    '该函数用于获取逻辑位置、实际位置和运行速度
    
    '参数: axis-轴号,logps-逻辑位置
    '      actpos-实际位置,speed-运行速度
    
    '返回值=0正确,返回值=1错误

'*******************************************************
Public Function Get_CurrentInf(ByVal axis As Integer, LogPos As Long, actpos As Long, speed As Long) As Integer

    Result = get_command_pos(0, axis, LogPos)
    
    get_actual_pos 0, axis, actpos
    
    get_speed 0, axis, speed
    
    Get_CurrentInf = Result
    
End Function


'*******************获取运动状态函数********************

    '该函数用于获取各轴的驱动状态和插补的驱动状态
    
    '参数: axis-轴号,value-状态(0-驱动结束,非0-正在驱动)
    '      mode 0-获取单轴的驱动状态,非0-获取插补的驱动状态
    
    '返回值=0正确,返回值=1错误

'*******************************************************
Public Function Get_MoveStatus(ByVal axis As Integer, value As Long, ByVal mode As Integer) As Integer

    If mode = 0 Then
    
        GetMove_Status = get_status(0, axis, value)
        
    Else
    
        GetMove_Status = get_inp_status(0, value)
        
    End If
    
End Function

'***********************读取输入点*******************************
'
'     该函数用于读取单个输入点
'
'     参数:number-输入点(0 ~ 39)
'
'     返回值:0 - 低电平,1 - 高电平,-1 - 错误
'
'****************************************************************
Public Function Read_Input(ByVal number As Integer) As Integer
    
    Read_Input = read_bit(0, number)
    
End Function

'*********************输出单点函数******************************
'
'    该函数用于输出单点信号
'
'    参数: number-输出点(0 ~ 15),value 0-低电平、1-高电平
'
'    返回值=0正确,返回值=1错误
'****************************************************************
Public Function Write_Output(ByVal number As Integer, ByVal value As Integer) As Integer

    Write_Output = write_bit(0, number, value)
    
End Function


'********************设置脉冲输出方式**********************
'
'    该函数用于设置脉冲的工作方式
'
'    参数:axis-轴号, value-脉冲方式 0-脉冲+脉冲方式 1-脉冲+方向方式
'
'    返回值=0正确,返回值=1错误
'
'    默认脉冲方式为脉冲+方向方式
'
'    本程序采用默认的正逻辑脉冲和方向输出信号正逻辑
'
'*********************************************************
Public Function Setup_PulseMode(ByVal axis As Integer, ByVal value As Integer) As Integer

    Setup_PulseMode = set_pulse_mode(0, axis, value, 0, 0)
    
End Function

'********************设置限位信号方式**********************
'
'   该函数用于设定正/负方向限位输入nLMT信号的模式
'
'   参数:      axis -轴号
'              value1   0-正限位有效  1-正限位无效
'              value2   0-负限位有效  1-负限位无效
'              logic    0-低电平有效  1-高电平有效
'   默认模式为:    正限位有效,负限位有效,低电平有效
'
'   返回值=0正确,返回值=1错误
'  *********************************************************
Public Function Setup_LimitMode(ByVal axis As Integer, ByVal value1 As Integer, ByVal value2 As Integer, ByVal logic As Integer) As Integer

    Setup_LimitMode = set_limit_mode(0, axis, value1, value2, logic)
    
End Function

'
'********************设置stop0信号方式**********************
'
'   该函数用于设定stop0信号的模式
'
'   参数:     axis -轴号
'             value   0-无效  1-有效
'             logic   0-低电平有效  1-高电平有效
'   默认模式为:    无效
'
'   返回值=0正确,返回值=1错误
'  *********************************************************
Public Function Setup_Stop0Mode(ByVal axis As Integer, ByVal value As Integer, ByVal logic As Integer) As Integer

    Setup_Stop0Mode = set_stop0_mode(0, axis, value, logic)
    
End Function


'********************设置stop1信号方式**********************
'
'   该函数用于设定stop1信号的模式
'
'   参数:     axis -轴号
'             value   0-无效  1-有效
'             logic   0-低电平有效  1-高电平有效
'   默认模式为:    无效
'
'   返回值=0正确,返回值=1错误
'  *********************************************************
Public Function Setup_Stop1Mode(ByVal axis As Integer, ByVal value As Integer, ByVal logic As Integer) As Integer

    Setup_Stop1Mode = set_stop1_mode(0, axis, value, logic)
    
End Function

'********************设置硬件停止**************************
'
'   该函数用于设定硬件停止的模式,硬件版本为1无此功能
'
'   参数:     value   0-无效        1-有效
'             logic   0-低电平有效  1-高电平有效
'   默认模式为:    无效
'
'   返回值=0正确,返回值=1错误

'   硬件停止信号固定使用P3端子板34引脚(IN31)
'  *********************************************************

Public Function Setup_HardStop(ByVal value As Integer, ByVal logic As Integer) As Integer

    Setup_HardStop = set_suddenstop_mode(0, value, logic)
    
End Function

'********************设置延时**************************
'
'   该函数用于设定延时,硬件版本为1无此功能
'
'   参数:     time - 延时时间(单位为us)
'
'   返回值=0正确,返回值=1错误

'  *********************************************************

Public Function Setup_Delay(ByVal time As Long) As Integer

    Setup_Delay = set_delay_time(0, time * 8)
    
End Function

'**********************获取延时状态**********************

'   该函数用于获取延时的状态,硬件版本为1无此功能

'   返回值    0 - 延时结束    1 - 延时进行中

'********************************************************

Public Function Get_DelayStatus() As Integer

    Get_DelayStatus = get_delay_status(0)
    
End Function

⌨️ 快捷键说明

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