📄 demo.frm
字号:
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 + -