OMRON_CP1H串口通信六自由度油缸比例阀电压控制(7.18)

Dim a(5), b(5), c(5), X(5), Y(5) As Integer
Dim d As Integer

Dim Data_Code, Data, Data1, outdata, Add_Code As String

Dim u(5) As Integer
 
Private Sub Command1_Click() '按钮OK

    For n = 0 To 5
        Timer2(n).Interval = Y(n) '在Timer3的事件中计算获得Y(n)
        Timer2(n).Enabled = True
    Next n
    
    Timer4.Enabled = True
    d = 0

End Sub

Private Sub Command2_Click() '按钮Reset

    For n = 0 To 5
        Text1(n).Text = 0
        Text2(n).Text = 0
        Text3(n).Text = 0
    Next n
    
    d = 0
End Sub

Private Sub Command3_Click() '按钮 All +10V
    
    For n = 0 To 5
        Text1(n).Text = 10
    Next n

End Sub

Private Sub Command4_Click() '按钮 All -10V
    For n = 0 To 5
        Text1(n).Text = -10
    Next n
    
End Sub

Private Sub Command5_Click() '按钮 All +5V
    For n = 0 To 5
        Text1(n).Text = 5
    Next n

End Sub

Private Sub Command6_Click() '按钮 All -5V
    For n = 0 To 5
        Text1(n).Text = -5
    Next n
End Sub

Private Sub Command7_Click()
     
    For n = 0 To 5
        Text1(n).Text = 10
        u(n) = Val(Text3(n).Text) * 1000
        Timer5(n).Interval = u(n)
        Timer5(n).Enabled = True
    Next n
    
    Timer4.Enabled = True
    d = 0
     
End Sub

Private Sub Command8_Click()

    For n = 0 To 5
        Text1(n).Text = -10
        u(n) = Val(Text3(n).Text) * 1000
        Timer5(n).Interval = u(n)
        Timer5(n).Enabled = True
    Next n
    
    Timer4.Enabled = True
    d = 0

End Sub

Private Sub Form_Load()
    
    'SkinH_Attach '加载皮肤
    'SkinHme
    MSComm1.InBufferSize = 1024
    MSComm1.CommPort = 1                '此处应根据计算机的实际串口号来设置,6是家里本本的虚拟串口号
    MSComm1.Settings = "115200,e,7,2"
    MSComm1.PortOpen = True
    MSComm1.InputLen = 0
    MSComm1.InputMode = comInputModeText
    MSComm1.Handshaking = comNone
    
    Command1.Caption = "OK"
    Label4.Caption = "请输入约定时间"
    Label5.Caption = "使用时间"
    
    For n = 0 To 5
        Text1(n).Text = 0
        Text2(n).Text = 0
        Text3(n).Text = 0
        'Label6(n).Caption = ""
        Label6(n).Caption = "Err"
        Label6(n).BackColor = &HFF&
    Next n
    Text4.Text = 0
    
    Timer4.Enabled = False
    Check1.Value = Checked  '时间一致 选项
End Sub

Private Sub Form_Unload(Cancel As Integer)
    MSComm1.PortOpen = False
    End
End Sub

Private Sub Text1_Change(Index As Integer)
    
    If Text1(Index).Text = "-" Then Text1(Index).Text = 0
    If Text1(Index).Text = "" Then Text1(Index).Text = 0
    If Text1(Index).Text = "1-0" Then Text1(Index).Text = 0
    If Text1(Index).Text > 10 Then Text1(Index).Text = 0
    If Text1(Index).Text < -10 Then Text1(Index).Text = 0
    
    VScroll1(Index).Value = Text1(Index).Text * 300
End Sub

Private Sub Timer1_Timer() '通信定时器
    
    Dim Head_Code, Data1, outdata As String
    
    Head_Code = "@00WD020"
    
    For j = 0 To 5
       
        Add_Code = Trim(Str(VScroll1(j).Index))
        Data_Code = VScroll1(j).Value
        Data = Hex(Data_Code)
        
        Amo = Len(Data)
        If Amo = 3 Then
            Data1 = "0" + Data
        Else
            If Amo = 2 Then
                Data1 = "00" + Data
            Else
                If Amo = 1 Then
                    Data1 = "000" + Data
                Else
                    Data1 = Data
                End If
            End If
        End If
           
    outdata = Head_Code + Add_Code + Data1
        
    Label1(j).Caption = Data '显示十六进制值
    Text1(j).Text = Data_Code / 300
    Label3(j).Caption = Add_Code '显示地址值
    
    L = Len(outdata)
    fcs1 = 0
    For i = 1 To L
        fcs1 = fcs1 Xor Asc(Mid(outdata, i, 1))
    Next i
    FCS = Hex(fcs1)
    
    Dim Instring As String
    MSComm1.Output = outdata + FCS + "*" + Chr$(13)
    Do
    DoEvents
    Loop Until MSComm1.InBufferCount >= 10
    Instring = MSComm1.Input

    If Mid(Instring, Len(Instring) - 1, 1) <> "*" Then
        Label2(j).Caption = "通讯出错"
        Label6(j).Caption = "Err"
        Label6(j).BackColor = &HFF&
    Else
        fcs2 = 0
        
        For i = 1 To Len(Instring) - 4
            fcs2 = fcs2 Xor Asc(Mid(Instring, i, 1))
        Next i
        
        fcs3 = Hex(fcs2)
    
        If fcs3 = Mid(Instring, Len(Instring) - 3, 2) Then
            Label2(j).Caption = "通讯有效"
            Label6(j).Caption = "Ok"
            Label6(j).BackColor = &HFF00&
        Else
            Label2(j).Caption = "通讯出错"
            Label6(j).Caption = "Err"
            Label6(j).BackColor = &HFF&
        End If
    End If
    Next j
End Sub

Private Sub Timer2_Timer(Index As Integer)

    If a(Index) < b(Index) Then     'a(index)是当前实际值,b(index)是设定值
        a(Index) = a(Index) + 0.1
    Else
        If a(Index) > b(Index) Then
            a(Index) = a(Index) - 0.1
        Else
            If b(Index) = a(Index) Then
                Timer2(Index).Enabled = False
                Timer4.Enabled = False
            End If
        End If
    End If
    Text1(Index) = a(Index)
End Sub

Private Sub Timer3_Timer()

    Dim z As String
    z = Text3(0).Text
    
    For k = 0 To 5
        
        a(k) = Val(Text1(k).Text) '当前实际值
        b(k) = Val(Text2(k).Text) '设定值
        c(k) = Val(Text3(k).Text) '约定时间值
        X(k) = Abs((b(k) - a(k)) / 0.1) '限定了最大变化时间间隔
        
        If X(k) = 0 Then
            Y(k) = 0
        Else
            Y(k) = c(k) * 1000 / X(k)
        End If
        
        If Check1.Value = Checked Then
           Text3(k).Text = z
        End If
                
    Next k
    
    Text4.Text = d

End Sub

Private Sub Timer4_Timer()

    d = d + 1
End Sub

Private Sub Timer5_Timer(Index As Integer)
    
    Text1(Index).Text = 0
    Timer5(Index).Enabled = False
    Timer4.Enabled = False
       
End Sub

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值