基于Vb的控制台达plc实例

时间:2025-04-25

Vb上位机控制台达plc实例

最近有点空余时间,用vb做了一个程序,目的是控制台达的plc,采集数据,最终能达到像触摸屏控制plc一样的效果,产品接近完成,与大家分享一下。

收到后的数据有待处理。 界面部分:

程序部分:

Private Sub Form_Load() Combo1.AddItem "COM1" Combo1.AddItem "COM2" Combo1.AddItem "COM3" Combo1.AddItem "COM4" Combo1.AddItem "COM5" Combo1.AddItem "COM6" Combo1.AddItem "COM7" Combo1.AddItem "COM8" Combo1.AddItem "COM9" Combo1.AddItem "COM10" Combo1.AddItem "COM11"

Combo1.AddItem "COM12" Combo1.AddItem "COM13" Combo1.AddItem "COM14" Combo1.AddItem "COM15" Combo1.AddItem "COM16" Combo2.AddItem "115200" Combo2.AddItem "57600" Combo2.AddItem "38400" Combo2.AddItem "19200" Combo2.AddItem "9600" Combo2.AddItem "4800" Combo3.AddItem "无None" Combo3.AddItem "奇Odd" Combo3.AddItem "偶Even" Combo4.AddItem "6" Combo4.AddItem "7" Combo4.AddItem "8" Combo5.AddItem "1" Combo5.AddItem "2" Combo6.AddItem "RTU" Combo1.ListIndex = 2

'If MSComm1.PortOpen = True Then ' MSComm1.PortOpen = False 'Else 'End If

With MSComm1

.CommPort = Combo1.ListIndex + 1 端口号Integer

.InputMode = 1 进制类型数据

.InputLen = 8 取所有数据(8个字节为一组!!)

.OutBufferSize = 512 发送缓冲区的大小,以字符为单位 Integer .InBufferSize = 1024 收缓冲区的大小,以字符为单位 Integer .InBufferCount = 0 .OutBufferCount = 0 .SThreshold = 0 .RThreshold = 1 OnComm()事件 End With End Sub

'CommPort设置并返回通信 '设置接受数据的类型是二 '一次性从接收缓冲区中读 'OutBufferSize 设置并返回512

'InBufferSize 设置并返回接 '清空接收缓冲区 '清空发送缓冲区

'不触发OnComm()事件 '接收1个字节数据触发 1024

Private Sub Combo1_Click()

If MSComm1.PortOpen = True Then '如果串口打开先关闭后再进行其他操作 MSComm1.PortOpen = False End If

http://www.77cn.com.cnmPort = Combo1.ListIndex + 1 '读取com口号 Command1.Caption = "打开串口" '按钮文字改变 Shape1.FillColor = &H808080 '灯颜色改变 End Sub

Private Sub Command1_Click() If Combo3 = "无None" Then

MSComm1.Settings = Str(Combo2) + "N" + Str(Combo4) + Str(Combo5) 'Settings设置并返回波特率?校验位?数据位?停止位 String "9600,N,8,1" ElseIf Combo3 = "奇Odd" Then

MSComm1.Settings = Str(Combo2) + "O" + Str(Combo4) + Str(Combo5) ElseIf Combo3 = "偶Even" Then

MSComm1.Settings = Str(Combo2) + "E" + Str(Combo4) + Str(Combo5) End If

Label9.Caption = MSComm1.Settings & " com" & Combo1.ListIndex + 1 & " " & MSComm1.PortOpen

On Error GoTo uerror '发现错误跳转到错误处理 If Command1.Caption = "关闭串口" Then MSComm1.PortOpen = False

Command1.Caption = "打开串口" '按钮文字改变 Shape1.FillColor = &H808080 '灯颜色改变 Else

MSComm1.PortOpen = True

Command1.Caption = "关闭串口" 'PortOpen设置并返回端口状态,也可以用于打开和关闭串口 Boolean True Shape1.FillColor = &HFF End If Exit Sub uerror:

msg$ = "无效端口号" '错误显示 Title$ = "串口调试助手"

x = MsgBox(msg$, 49, Title$) '48标示显示警告图标 End Sub

Private Sub Form_Resize() 'If Form1.Width <= 12000 Then 'Form1.Width = 12000 'End If

'If Form1.Height <= 6750 Then

'Form1.Height = 6750 'End If

'Label2.Left = Form1.Width - 1200 'Label1.Top = 50 'Label2.Top = 50 End Sub

''''''''''LRC校验(源码,源码+校验码) Sub lrc(a1 As String, b1 As String)

Dim stra As String, ml As String, Lrcbyte As String Dim checkadd%, AscLrc%, lrc%, zhi1% For i = 1 To (Len(a1) \ 2)

stra = Val("&H" & CStr(Mid(a1, i * 2 - 1, 2))) checkadd = checkadd + Val(stra) Next i

AscLrc = checkadd Mod &H100 '取255的余数 lrc = (&HFF - AscLrc) + 1 '取二次补

If lrc < 16 Then '此段程序是判断Hex(lrc)是否是一位数, Lrcbyte = "0" + CStr(Hex(lrc)) '如果是的话,前面加0;否则不加零 Else

Lrcbyte = CStr(Hex(lrc)) End If

b1 = a1 & Lrcbyte

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Private Sub Timer1_Timer() time1 = Time date1 = Date now1 = Now

Label1.Caption = Year(Date) & "年" & Month(Date) & "月" & Day(Date) & "日" & vbNewLine Label2.Caption = Hour(Time) & "时" & Minute(Time) & "分" & Second(Time) & "秒" & vbNewLine

End Sub

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Sub MSComm1_OnComm()

Dim BytReceived() As Byte, strdata$ Dim strBuff As String

Dim i%

Select Case http://www.77cn.com.cnmEvent '事件发生 Case comEvReceive …… 此处隐藏:6797字,全部文档内容请下载后查看。喜欢就下载吧 ……

基于Vb的控制台达plc实例.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219