📄 module4.bas
字号:
Attribute VB_Name = "modIO"
Public IONumber As Integer
Public USTimer As Integer '时间精度
'开关等级指示灯
Public Sub Led(Grade As String)
Select Case Grade
Case "合格品"
'合格品灯亮
IONumber = inportb(BaseAddrIO)
IONumber = IONumber And &H1F '关掉其他灯00011111
IONumber = IONumber Or &H10 '打开合格品灯00010000
Call outportb(BaseAddrIO, IONumber)
Case "一级处理品"
'处理品灯亮
IONumber = inportb(BaseAddrIO)
IONumber = IONumber And &H2F '关掉其他灯00101111
IONumber = IONumber Or &H20 '打开处理灯00100000
Call outportb(BaseAddrIO, IONumber)
Case "二级处理品"
'处理品灯亮
IONumber = inportb(BaseAddrIO)
IONumber = IONumber And &H2F '关掉其他灯00101111
IONumber = IONumber Or &H20 '打开处理灯00100000
Call outportb(BaseAddrIO, IONumber)
Case "返修品"
'返修品灯亮
IONumber = inportb(BaseAddrIO)
IONumber = IONumber And &H4F '关掉其他灯01001111
IONumber = IONumber Or &H40 '打开返修灯01000000
Call outportb(BaseAddrIO, IONumber)
Case "废品"
'废品灯亮
IONumber = inportb(BaseAddrIO)
IONumber = IONumber And &H8F '关掉其他灯10001111
IONumber = IONumber Or &H80 '打开废品灯10000000
Call outportb(BaseAddrIO, IONumber)
Case Else
'关掉所有灯
IONumber = inportb(BaseAddrIO)
IONumber = IONumber And &HF '关掉所有灯00001111
Call outportb(BaseAddrIO, IONumber)
End Select
End Sub
'主轴停转
Public Sub StopAxis()
'Call outportb(BaseAddrIO + 1, &HFF)
Call outportb(BaseBujin, &H0) 'b00000000
End Sub
'主轴走一步
Public Sub StartAxis(ByVal plus As Integer)
'IONumber = inportb(BaseAddrIO + 1)
'IONumber = IONumber Or &H1 '打开主轴启动00000001
'Call outportb(BaseAddrIO + 1, IONumber)
Dim plus1 As Single
Dim plus0 As Single
plus1 = ParaPlus1 '调整正脉冲宽度
plus0 = plus - plus1
Call outportb(BaseBujin, &HD) '开始输出脉冲高电平'b00001101
Call USdelay(plus1)
Call outportb(BaseBujin, &HC) '开始输出脉冲低电平'b00001100
Call USdelay(plus0)
End Sub
'测头退出
Public Sub QuitExam()
IONumber = inportb(BaseAddrIO)
IONumber = IONumber And &HFB '关掉测头前进11111011
IONumber = IONumber Or &H8 '打开测头后退00001000
Call outportb(BaseAddrIO, IONumber)
End Sub
'测头前进
Public Sub ForwardExam()
IONumber = inportb(BaseAddrIO)
IONumber = IONumber And &HF7 '关掉测头后退11110111
IONumber = IONumber Or &H4 '打开测头前进00000100
Call outportb(BaseAddrIO, IONumber)
End Sub
'测头停止
Public Sub StopExam()
IONumber = inportb(BaseAddrIO)
IONumber = IONumber And &HF3 '测头停止11110011
Call outportb(BaseAddrIO, IONumber)
End Sub
'夹紧夹紧
Public Sub Clamp()
IONumber = inportb(BaseAddrIO)
IONumber = IONumber And &HFD '关掉松开11111101
IONumber = IONumber Or &H1 '打开夹紧00000001
Call outportb(BaseAddrIO, IONumber)
End Sub
'夹具松开
Public Sub Loosen()
IONumber = inportb(BaseAddrIO)
IONumber = IONumber And &HFE '关掉夹具夹紧11111110
IONumber = IONumber Or &H2 '打开夹具松开00000010
Call outportb(BaseAddrIO, IONumber)
End Sub
'停止夹紧
Public Sub StopClamp()
IONumber = inportb(BaseAddrIO)
IONumber = IONumber And &HFC '停止夹紧11111100
Call outportb(BaseAddrIO, IONumber)
End Sub
'读启动按纽
Public Function IsStart() As Integer
IsStart = inportb(BaseAddrIO + 2)
IsStart = IsStart And &H1 '00000001
End Function
'读夹紧到位行程开关
Public Function IsClamp() As Integer
IsClamp = inportb(BaseAddrIO + 2)
IsClamp = IsClamp And &H2 '00000010
End Function
'读测头到位行程开关
Public Function IsForwardExam() As Integer
IsForwardExam = inportb(BaseAddrIO + 2)
IsForwardExam = IsForwardExam And &H4 '00000100
End Function
'读零位开关
Public Function IsZero() As Integer
IsZero = inportb(BaseAddrIO + 2)
IsZero = IsZero And &H8 '00001000
End Function
'毫秒延时
Public Sub USdelay(ByVal m As Single) '微秒级延时
Dim i As Long
m = m * 1000
For i = m To 1 Step -1
For ii = USTimer To 1 Step -1
Next ii
Next i
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -