📄 module1.bas
字号:
Attribute VB_Name = "Module1"
'串口初始化
Public Sub INIT_comm()
With BLtx.PLCtx
.CommPort = 3 '设置通信端口
.Settings = "9600,E,7,1" '设置通信端口参数 9600赫兹、偶校验、7个数据位、2个停止位.
.InBufferSize = 80 '设置缓冲区接收数据为80字节
.InputLen = 0 '设置Input一次从接收缓冲读取字节数为1
' .RThreshold = 1 '设置接收一个字节就产生OnComm事件
' .RTSEnable = True
End With
End Sub
'PLC读写子程序。RwD1为读写命令。ModBus ASCII形式
Public Sub PLCTXio(ByRef RwD1 As String)
Dim RwD, ReRwD As String
Dim Fcc As String
Dim Tim As Long
RwD = ":" + RwD1 + LRC(RwD1) + vbCr + vbLf
If Not BLtx.PLCtx.PortOpen Then
BLtx.PLCtx.PortOpen = True '打开通信端口
End If
BLtx.PLCtx.InBufferCount = 0
BLtx.PLCtx.OutBufferCount = 0
Tim = Timer
With BLtx.PLCtx
.Output = RwD
Do
DoEvents
Loop Until (.InBufferCount >= 5) Or (Abs(Timer - Tim) > 1) '循环等待接收缓冲区>=5个字节
Call Sleep(100)
If .InBufferCount > 1 Then ReRwD = .Input
If Len(ReRwD) < 1 Then ReRwD = "X"
If Val(Mid(ReRwD, 3, 1)) >= 8 Or ReRwD = "X" Then
If .PortOpen Then .PortOpen = False
Tim = Timer '延时
Do
DoEvents
Loop Until (Abs(Timer - Tim) > 0.6) '循环等待延时
If Not .PortOpen Then .PortOpen = True
.InBufferCount = 0
.OutBufferCount = 0
.Output = RwD
Tim = Timer
Do
DoEvents
Loop Until (.InBufferCount >= 5) Or (Abs(Timer - Tim) > 1) '循环等待接收缓冲区>=5个字节
Call Sleep(100)
If .InBufferCount > 1 Then ReRwD = .Input
End If
End With
If Len(ReRwD) < 1 Then ReRwD = "X"
If Mid(ReRwD, 3, 1) >= 8 Then ReRwD = "X"
RwD1 = ReRwD
BLtx.PLCtx.PortOpen = False '关闭通信端口
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -