📄 ad_da.frm
字号:
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Index = 9
Left = 150
TabIndex = 20
Top = 1080
Width = 915
End
Begin VB.Label Label1
Alignment = 2 'Center
Caption = "设定值:"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Index = 2
Left = 90
TabIndex = 19
Top = 720
Width = 915
End
Begin VB.Label Label1
Alignment = 2 'Center
Caption = "通道号:"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Index = 1
Left = 90
TabIndex = 18
Top = 390
Width = 915
End
End
Begin VB.Frame Frame1
Caption = "单通道控制(设定值必须为4位数,单位为V)"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H00FF0000&
Height = 1395
Index = 0
Left = 210
TabIndex = 0
Top = 390
Width = 6165
Begin VB.CommandButton Command1
Caption = "发 送"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 525
Index = 0
Left = 4920
TabIndex = 7
Top = 420
Width = 1155
End
Begin VB.CheckBox Check1
Caption = "输出x2"
Enabled = 0 'False
Height = 315
Index = 0
Left = 960
TabIndex = 6
Top = 960
Width = 915
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 345
Index = 1
Left = 960
TabIndex = 2
Text = "1.100"
Top = 600
Width = 945
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 345
Index = 0
Left = 960
TabIndex = 1
Text = "0"
Top = 270
Width = 945
End
Begin VB.Label Label1
Caption = "增益:"
Enabled = 0 'False
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Index = 8
Left = 150
TabIndex = 5
Top = 990
Width = 915
End
Begin VB.Label Label1
Alignment = 2 'Center
Caption = "设定值:"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Index = 3
Left = 90
TabIndex = 4
Top = 660
Width = 915
End
Begin VB.Label Label1
Caption = "通道号:"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Index = 0
Left = 120
TabIndex = 3
Top = 330
Width = 1245
End
End
Begin VB.Menu HELP
Caption = "帮助"
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Command1_Click(Index As Integer)
'方式0 (单通道控制):
'DA转换: 功能号 , 板号, 通道号, 增益, 1, 0.1, 0.01, 0.001, 99999999999999
'功能号:单通道方式为0
'板号:地址编号。用于同一个串口控制多块D/A转换板,单板为0;
'增益:为0输出电压等于设定电压,为1输出电压2倍于设定电压;
'通道号:0-7对应0号到7号8个D/A转换通道;
'1:设定输出电压个位; 0.1:设定输出电压0.1位 0.01:设定输出电压0.01位; 0.001:设定输出电压0.001位;
'999999999999999:保留位
Dim func_num '控制功能号,0是转速控制,2是步进控制
Dim board_num '控制板编号,代表指令发送给哪个控制板,用于扩充一个串口带多个控制板
Dim chan_num '通道号
Dim app_num '增益
Dim vol_val '设定电压
func_num = "0"
board_num = "0"
chan_num = Trim(Text1(0))
If Check1(0).Value = 1 Then
app_num = "1"
Else
app_num = "0"
End If
vol_val = Text1(1).Text * 1000
'vol_val = Left$(vol_val, 4)
Select Case Len(vol_val)
Case 1
vol_val = "000" & vol_val
Case 2
vol_val = "00" & vol_val
Case 3
vol_val = "0" & vol_val
End Select
Text1(26).Text = func_num & board_num & chan_num & app_num & vol_val & "99999999999999"
MSComm1.Output = Trim(Text1(26).Text) 'func_num & board_num & bit_direc & bit_free & "0" & freq & "9" '第5位是保留位,固定为“0”;最后一位是保留位,固定为“9”。
End Sub
Private Sub Command2_Click()
Dim func_num '控制功能号,0是转速控制,2是步进控制
Dim board_num '控制板编号,代表指令发送给哪个控制板,用于扩充一个串口带多个控制板
Dim chan_num0, chan_num1, chan_num2, chan_num3 '通道号
Dim app_num0, app_num1, app_num2, app_num3 '增益
Dim vol_val0, vol_val1, vol_val2, vol_val3 '设定电压
func_num = "1"
board_num = "0"
chan_num0 = Trim(Text1(2))
chan_num1 = Trim(Text1(3))
chan_num2 = Trim(Text1(4))
chan_num3 = Trim(Text1(5))
If Check1(1).Value = 1 Then
app_num0 = "1"
Else
app_num0 = "0"
End If
If Check1(2).Value = 1 Then
app_num1 = "1"
Else
app_num1 = "0"
End If
If Check1(3).Value = 1 Then
app_num2 = "1"
Else
app_num2 = "0"
End If
If Check1(4).Value = 1 Then
app_num3 = "1"
Else
app_num3 = "0"
End If
vol_val0 = Text1(6).Text * 100
Select Case Len(vol_val0)
Case 1
vol_val0 = "00" & vol_val0
Case 2
vol_val0 = "0" & vol_val0
End Select
vol_val1 = Text1(7).Text * 100
Select Case Len(vol_val1)
Case 1
vol_val1 = "00" & vol_val1
Case 2
vol_val1 = "0" & vol_val1
End Select
vol_val2 = Text1(8).Text * 100
Select Case Len(vol_val2)
Case 1
vol_val2 = "00" & vol_val2
Case 2
vol_val2 = "0" & vol_val2
End Select
vol_val3 = Text1(9).Text * 100
Select Case Len(vol_val3)
Case 1
vol_val3 = "00" & vol_val3
Case 2
vol_val3 = "0" & vol_val3
End Select
Text1(26).Text = func_num & board_num & chan_num0 & app_num0 & vol_val0 & chan_num1 & app_num1 & vol_val1 & chan_num2 & app_num2 & vol_val2 & chan_num3 & app_num3 & vol_val3 ' & "99999999999999"
MSComm1.Output = Trim(Text1(26).Text) 'func_num & board_num &
End Sub
Private Sub Command3_Click()
'方式2(8通道控制):
'DA转换:功能号,板号,增益0,设定值0,增益1,设定值1,增益2,设定值2,增益3,设定值3,增益4,设定值4,增益5,设定值5,增益6,设定值6,增益7,设定值7,9999
'功能号:2; 板号:单板为0
'增益0 , 设定值0: 通道0的增益和设定输出电压值,其他7个通道以此类推
'9999 为保留位
Dim command_str(21) As Byte '
command_str(0) = Asc("2") '功能号,8通道模式为“2”
command_str(1) = Asc("0") '板号,单板固定为“0”
command_str(2) = Asc("1") '0号通道增益,这里所有通道固定为“1”
command_str(3) = Val(Text1(14).Text) '1号通道设定值,以下7通道与此相同
command_str(4) = Asc("1") '1号通道
command_str(5) = Val(Text1(15).Text)
command_str(6) = Asc("1") '2号通道
command_str(7) = Val(Text1(16).Text)
command_str(8) = Asc("1") '1号通道
command_str(9) = Val(Text1(17).Text)
command_str(10) = Asc("1") '1号通道
command_str(11) = Val(Text1(22).Text)
command_str(12) = Asc("1") '1号通道
command_str(13) = Val(Text1(23).Text)
command_str(14) = Asc("1") '1号通道
command_str(15) = Val(Text1(24).Text)
command_str(16) = Asc("1") '1号通道
command_str(17) = Val(Text1(25).Text)
command_str(18) = Asc("9") '保留位
command_str(19) = Asc("9") '保留位
command_str(20) = Asc("9") '保留位
command_str(21) = Asc("9") '保留位
MSComm1.Output = command_str '保留位
'Text1(26).Text = command_str
End Sub
Private Sub Command4_Click()
MSComm1.Output = "U"
End Sub
Private Sub Form_Load()
'串口输入数据格式如下:(每条指令固定长度为22位)
'方式0 (单通道控制):
'DA转换: 功能号 , 板号, 通道号, 增益, 1, 0.1, 0.01, 0.001, 99999999999999
'功能号:单通道方式为0
'板号:地址编号。用于同一个串口控制多块D/A转换板,单板为0;
'增益:为0输出电压等于设定电压,为1输出电压2倍于设定电压;
'通道号:0-7对应0号到7号8个D/A转换通道;
'1:设定输出电压个位; 0.1:设定输出电压0.1位 0.01:设定输出电压0.01位; 0.001:设定输出电压0.001位;
'999999999999999:保留位
'方式1(4通道控制):
'DA转换:功能号,板号,通道号,增益,1,0.1,0.01,通道号,增益,1,0.1,0.01,通道号,增益,1,0.1,0.01,通道号,增益,1,0.1,0.01
'功能号:1; 板号:单板为0
'通道号,增益,1,0.1,0.01:分别为一条指令改变输出电压的4个通道对应设定值
'方式2(8通道控制):
'DA转换:功能号,板号,增益0,设定值0,增益1,设定值1,增益2,设定值2,增益3,设定值3,增益4,设定值4,增益5,设定值5,增益6,设定值6,增益7,设定值7,9999
'功能号:2; 板号:单板为0
'增益0 , 设定值0: 通道0的增益和设定输出电压值,其他7个通道以此类推
'9999 为保留位
Dim cur_state
' 使用 COM1。
MSComm1.CommPort = 1 ' 9600 波特,无奇偶校验,8 位数据,一个停止位。
MSComm1.Settings = "9600,N,8,1"
On Error GoTo change_com
MSComm1.PortOpen = True
cur_state = "ok"
change_com:
If cur_state = "ok" Then
Exit Sub
Else
MSComm1.CommPort = 2 ' 9600 波特,无奇偶校验,8 位数据,一个停止位。
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
End If
End Sub
Private Sub HELP_Click()
MsgBox ("本控制板带有8路8位D/A转换专用芯片和精密电压基准,控制输出电压精度误差不大于0.01V。通过电脑串口(或其他具有串口的单片机、PLC、DSP)发个简单的指令,便可以方便地控制8个数模转换通道输出设定的电压值。输出电压范围:0-5V(指令控制)。波特率9600,也可按用户要求定制。广泛用于通过电压控制的各个工控领域,如电机调速、压控振荡、伺服控制等。工作方式有3种:1、 单通道控制模式:通过串口发送一条指令,一次控制一个数模转换通道输出设定的电压值。2、 4通道控制模式:串口发送一条指令,一次可以控制四个数模转换通道分别输出各自设定的电压值。同于同步设定4路输出电压。3、 8通道控制模式:串口发送一条指令,一次可以控制八个数模转换通道分别输出各自设定的电压值。同于同步设定8路输出电压。 所有模数转换输出通道均带有射极跟随缓冲。其中有2路带有可调运算放大器,输出电压可以按要求进行放大(比如放大倍数调为2倍的话,则输出电压可以在1-10V之间进行变化)。随板带有VB演示源代码。用户稍微进行修改即可用于各种复杂的实际控制中。.帮你在VB下轻松搞定自动化控制。联系电话:05522055903 http://www.lcwin5888.com.cn/ 商务QQ:965042285.技术:415810948")
End Sub
Private Sub MSComm1_OnComm()
Dim d
d = 1
d = 2
Select Case MSComm1.CommEvent '串口事件
Case comEvReceive '接收到数据
Dim Buffer As Variant '存储数据的缓冲区
Dim StringBuf(21) As String '数据数组
Buffer = MSComm1.Input '
Text1(27).Text = Buffer
'If Text4(0).Text = "UUUUUUUUUUUU" Then
' Label7.Caption = "复位情况:" & "成功"
'End If
End Select
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -