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

📄 mainfrm.frm

📁 工控行业的控制卡驱动和应用程序, 能用于演示简单的pci控制卡的加工应用.
💻 FRM
📖 第 1 页 / 共 2 页
字号:
   End
   Begin VB.TextBox EDIT_ADDR 
      Enabled         =   0   'False
      Height          =   375
      Left            =   1080
      Locked          =   -1  'True
      TabIndex        =   3
      Text            =   "Text1"
      Top             =   360
      Width           =   1215
   End
   Begin VB.Frame Frame1 
      Caption         =   "控制卡信息"
      Height          =   1335
      Left            =   120
      TabIndex        =   0
      Top             =   120
      Width           =   2295
      Begin VB.TextBox EDIT_CHANNEL 
         Enabled         =   0   'False
         Height          =   375
         Left            =   1320
         Locked          =   -1  'True
         TabIndex        =   4
         Text            =   "Text2"
         Top             =   720
         Width           =   855
      End
      Begin VB.Label Label2 
         Caption         =   "中断申请号:"
         Height          =   255
         Left            =   240
         TabIndex        =   2
         Top             =   840
         Width           =   1215
      End
      Begin VB.Label Label1 
         Caption         =   "基地址:"
         Height          =   255
         Left            =   240
         TabIndex        =   1
         Top             =   360
         Width           =   735
      End
   End
End
Attribute VB_Name = "MAIN_FRAME"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'    雷赛DMC3000控制卡编程示例之一

'Print -主要演示功能:
'        No.1 控制卡的基本操作
'        No.2 了解匀速/S形/T形运行速度曲线
'        No.3 停止控制方式(指令停止,外部输入信号停止)
'        No.4 多轴联动的实现
'        No.5 持续运动实现
'        No.6 对称/非对称的简单调配
'        No.7 了解逻辑方向对设备的物理位置与显示位置关系的影响
'        No.8 邦定该轴的状态显示及位置查询实现
'!-关键函数:
'        控制卡
'            d3000_board_init
'            d3000_board_close
'            d3000_get_base_addr
'            d3000_get_irq_channel
'        速度 -匀速
'            当T形驱动函数邦定的起始速度与运行速度相等时 , 为匀速, 不相等为T形速度
'            S形函数函数实现匀速效果同T形原理一致
'            d3000_start_t_move
'            d3000_start_s_move
'        停止控制
'            d3000_decel_stop
'            外部信号输入可参见硬件折册
'        多轴联动
'            实质是同时启动多个单轴的表现 , 不管是在点动定位或持续运行的需求下
'            for( int i(0); i<anyAxis; i++)
'                d3000_start_t_move(i, ... )//点动定位
'                d3000_start_tv_move(i,... )//持续运行
'        持续运行
'            d3000_start_tv_move T形持续
'            d3000_start_rv_move S形持续
'            当使用持续驱动时,可使用外部输入信号停止

'        对称或非对称
'            当T形驱动函数邦定的加速时间或减速时间不一致时 , 为非对称速度曲线, 相等则为
'            对称速度曲线

'        逻辑方向
'            此方向的变化 , 会导致显示的位置变化正常, 但物理设备的运动方向发生反向, 此种发明
'            即成本低 , 功效会很大
'            d3000_set_pls_outmode

'        指定轴的状态查询及位置显示
'            d3000_motion_done       //输入信号读取
'            d3000_get_command_pos   //指令位置获取

'#-注意事项:
'        No.1 为了体验控制卡编程之乐趣,最好按手册连接好物理设备(驱动器,电机),这样学起来
'             会比较有成就感.
'        No.2 程序结束时,必须调用d3000_board_close释放占有的系统资源,初始化失败除外,此
'             事项,在所有DMC系列的控制卡编程当中都适用,且必须使用。
'        No.3 S形函数驱动需要注意,其加加速度值不能不比总加速时间大,道理不言自明。

'    Writen by LEISAI-SUPPORT
'    FAX: 0755 - 26402718
'    TEL: 0755 - 26434329
'   EMAIL:     support@ LEISAI.com
'   HTTP:     www.LEISAI.com


    Public m_nAxisST, m_nSpeedST As Integer
    Public m_nActionST As Integer

Private Sub BUTTON_CLOSE_Click()
    Unload Me
End Sub

    

Private Sub BUTTON_DECSTOP_Click()
    d3000_decel_stop m_nAxisST, Val(EDIT_DECEL.Text)
    
End Sub

Private Sub BUTTON_OK_Click()
    If d3000_motion_done(m_nAxisST) And 2 Then '指定轴在运行中,则返回
        Return
    End If
    '获取编辑框的数据
    Dim m_nStart, m_nSpeed, m_nPulse As Long
    Dim m_fAccel, m_fDecel, m_fEff As Double
    m_nStart = Val(EDIT_START.Text)
    m_nSpeed = Val(EDIT_SPEED.Text)
    m_nPulse = Val(EDIT_PULSE.Text)
    m_fAccel = Val(EDIT_ACCEL.Text)
    m_fDecel = Val(EDIT_DECEL.Text)
    m_fEff = Val(EDIT_FEFF.Text)
   
    '设定脉冲模式及逻辑方向(此处脉冲模式固定为P+D方向:脉冲+方向)
    If CHECK_LOGIC = True Then
        d3000_set_pls_outmode m_nAxisST, 1
    Else
        d3000_set_pls_outmode m_nAxisST, 0
    End If
    
    If m_nActionST = 0 Then '点动
        '暂使用相对运动函数,若需要绝对,替换相对函数为绝对函数即可,其它可不变
        If m_nSpeedST = 2 Then '?//S形驱动
            d3000_start_s_move m_nAxisST, m_nPulse, m_nStart, m_nSpeed, m_fAccel, m_fEff
        Else
            d3000_start_t_move m_nAxisST, m_nPulse, m_nStart, m_nSpeed, m_fAccel, m_fDecel
        End If 'T形加速,当起始速度与运动速度相等时,即为匀速
    Else '持续驱动
        Dim dir As Integer
        If m_nPulse > 0 Then
            dir = 1
        Else
            dir = -1 '以点动长度,即得运动方向
        End If
       If m_nSpeedST = 2 Then 'S形驱动
            d3000_start_sv_move m_nAxis, m_nStart, m_nSpeed * dir, m_fAccel, m_fEff
        Else
            d3000_start_tv_move m_nAxis, m_nStart, m_nSpeed * dir, m_fAccel
        End If
    End If
    
End Sub

Private Sub CHECK_LOGIC_Click()
    UpdateControl
End Sub



Private Sub CHECK_SYMMETRY_Click()
    Dim m_fAccel, m_fDecel As Double
    m_fAccel = Val(EDIT_ACCEL.Text)
    m_fDecel = Val(EDIT_DECEL.Text)
    
    If CHECK_SYMMETRY = 1 Then
        EDIT_DECEL.Text = EDIT_ACCEL.Text '令减速时间与加速时间相等,即为对称曲线
    Else
         m_fDecel = m_fAccel * 2
         EDIT_DECEL.Text = m_fDecel
         EDIT_ACCEL.Text = m_fAccel
    End If
    UpdateControl
End Sub

Private Sub Form_Load()
    If d3000_board_init() <= 0 Then '控制卡的初始化操作
        MsgBox "初始化DMC3000卡失败!", vbOKOnly, "出错"
    End If
   
'以下显示地址及中断申请号
    Dim nAddress, nChannel As Long
    nAddress = d3000_get_base_addr
    nChannel = d3000_get_irq_channel

    
    EDIT_ADDR.Text = nAddress
    EDIT_CHANNEL.Text = nChannel
    
'初始化值
    CHECK_SYMMETRY = 1
    CHECK_LOGIC = 0
    m_nActionST = 0
    m_nSpeedST = 0

    UpdateControl
End Sub

Private Sub Form_Unload(Cancel As Integer)
    d3000_board_close '非常之重要,释放其占用的系统资源
End Sub

Private Sub RADIO_CMOVE_Click()
    m_nActionST = 1
    UpdateControl
End Sub

Private Sub RADIO_MOVE_Click()
    m_nActionST = 0
    UpdateControl
End Sub

Private Sub RADIO_SPEEDST_Click()
'匀速
    EDIT_SPEED.Text = EDIT_START.Text
    m_nSpeedST = 0
    UpdateControl
End Sub

Private Sub RADIO_SSPEED_Click()
'S形曲线
    Dim m_nStart, m_nSpeed As Integer
    m_nStart = Val(EDIT_START.Text)
    m_nSpeed = Val(EDIT_SPEED.Text)
    If m_nStart = m_nSpeed Then
        m_nSpeed = m_nStart + m_nStart
        EDIT_SPEED.Text = m_nSpeed
    End If
    
    m_nSpeedST = 2
    UpdateControl

End Sub

Private Sub RADIO_TSPEED_Click()
'T形曲线
     Dim m_nStart, m_nSpeed As Integer
    m_nStart = Val(EDIT_START.Text)
    m_nSpeed = Val(EDIT_SPEED.Text)
    If m_nStart = m_nSpeed Then
        m_nSpeed = m_nStart + m_nStart
        EDIT_SPEED.Text = m_nSpeed
    End If
    
   m_nSpeedST = 1
    UpdateControl
End Sub

Private Sub Timer1_Timer()
    EDIT_POSITION.Text = d3000_get_command(m_nAxisST)
    EDIT_STATUS.Text = d3000_motion_done(m_nAxisST)
End Sub
Private Sub UpdateControl()
    If CHECK_LOGIC = False Then
        CHECK_LOGIC.Caption = "逻辑方向:反"
    Else
        CHECK_LOGIC.Caption = "逻辑方向:正"
    End If
    
    If m_nSpeedST = 2 Then
        EDIT_FEFF.Enabled = True
    Else
        EDIT_FEFF.Enabled = False
    End If
    
    If m_nActionST = 1 Then
        EDIT_PULSE.Enabled = True
    Else
        EDIT_PULSE.Enabled = False
    End If
    
    If CHECK_SYMMETRY = 1 Then
        CHECK_SYMMETRY.Caption = "对称曲线"
        
    Else
        CHECK_SYMMETRY.Caption = "非对称曲线"
    End If

End Sub


⌨️ 快捷键说明

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