找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8636|回复: 15
收起左侧

VB开发的串口与三菱FX PLC通讯源码

  [复制链接]
ID:232819 发表于 2017-9-13 10:17 | 显示全部楼层 |阅读模式
VB开发的串口与三菱FX PLC通讯源码
0.png

vb源程序如下:

  1. Private Sub fraComm2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  2.         lblTopic = "设置连接PLC的通信端口以及PLC的站号(应与D8121相同)"
  3. End Sub

  4. Private Sub Frame1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  5.         lblTopic = "实时监控/设置PLC的XYMTCD设备值"
  6. End Sub

  7. Private Sub OptionD_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  8.         lblTopic = "数据以十进制方式返回或设置"
  9. End Sub

  10. Private Sub OptionH_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  11.         lblTopic = "数据以十六进制方式返回或设置"
  12. End Sub

  13. Private Sub SETRST_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  14.         lblTopic = "对位元件(X,Y,M,T,C)线圈置位与复位"
  15. End Sub

  16. Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  17.     SETRST.Enabled = False
  18.     start = False
  19.     fraComm1.Visible = True
  20.     fraComm2.Visible = True
  21. End Sub

  22. Private Sub Text1_KeyPress(KeyAscii As Integer)
  23.     char = Chr(KeyAscii)
  24.     setaddr = Text1.Text
  25.     If Len(setaddr) > 1 Then: setad = Right(setaddr, Len(setaddr) - 1)
  26.     KeyAscii = Asc(UCase(char)) '转换为大写
  27.    
  28.     If KeyAscii = 13 Then '按回车键
  29.         Device = Left(setaddr, 1)
  30.         Text1.SelStart = 0
  31.         Text1.SelLength = Len(setaddr)
  32.         Text2.Enabled = True
  33.         If (Device = "X" Or Device = "Y" And Oct(Val("&o" + setad)) = setad And Val(setad) < 178) Or (Device = "M" And CStr(Val(setad)) = setad And (Val(setad) < 1536 Or Val(setad) > 7999 And Val(setad) < 8256)) Then
  34.             DevAdd = Right(("0000" + setad), 4)
  35.             DevDat = cboStation.Text + "FFBR0" + Device + DevAdd + "01"
  36.             DevType = "XYM"
  37.             Text2.Enabled = False
  38.             SETRST.Enabled = True
  39.             start = True
  40.         End If
  41.         If Device = "D" And CStr(Val(setad)) = setad And (Val(setad) < 1000 Or Val(setad) > 7999 And Val(setad) < 8256) Then
  42.             DevAdd = Right(("0000" + setad), 4)
  43.             If Check1.Value = 0 Then
  44.                 DevDat = cboStation.Text + "FFWR0" + Device + DevAdd + "01" '使用WR命令读16bit数据
  45.                 DevType = "D"
  46.             Else
  47.                 DevDat = cboStation.Text + "FFWR0" + Device + DevAdd + "02" '使用WR命令读32bit数据
  48.                 DevType = "2D"
  49.             End If
  50.             SETRST.Enabled = False
  51.             start = True
  52.         End If
  53.         If Device = "T" And CStr(Val(setad)) = setad And Val(setad) < 256 Then
  54.             DevAdd = Right(("000" + setad), 3)
  55.             DevDatTC = cboStation.Text + "FFBR0" + Device + "S" + DevAdd + "01" 'T的线圈状态
  56.             DevDat = cboStation.Text + "FFWR0" + Device + "N" + DevAdd + "01" 'T的数据值
  57.             DevType = "D"
  58.             SETRST.Enabled = True
  59.             start = True
  60.         End If
  61.         If Device = "C" And CStr(Val(setad)) = setad And Val(setad) < 256 Then
  62.             DevAdd = Right(("000" + setad), 3)
  63.             DevDatTC = cboStation.Text + "FFBR0" + Device + "S" + DevAdd + "01" 'C的线圈状态
  64.             If Val(setad) > 199 Then
  65.                 DevDat = cboStation.Text + "FFWR0" + Device + "N" + DevAdd + "01" 'C200以上的数据值
  66.                 DevType = "2D"
  67.             Else
  68.                 DevDat = cboStation.Text + "FFWR0" + Device + "N" + DevAdd + "01" 'C200以下的数据值
  69.                 DevType = "D"
  70.             End If
  71.             SETRST.Enabled = True
  72.             start = True
  73.         End If
  74.         fraComm1.Visible = False
  75.         fraComm2.Visible = False
  76.     Else
  77.         start = False
  78.         fraComm1.Visible = True
  79.         fraComm2.Visible = True

  80.     End If
  81. End Sub
  82.    
  83. Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  84.         lblTopic = "输入要监控或设置的地址回车确定,如D0,T10,Y7等"
  85. End Sub

  86. Private Sub Text2_KeyDown(KeyCode As Integer, Shift As Integer)
  87.         If KeyCode <> 13 Then
  88.             start = False
  89.         End If
  90. End Sub

  91. Private Sub Text2_KeyPress(KeyAscii As Integer)
  92.     char = Chr(KeyAscii)
  93.     KeyAscii = Asc(UCase(char))
  94.     If Device = "D" And CStr(Val(setad)) = setad And Val(setad) < 1000 Then
  95.         start = False
  96.     End If
  97.     If (Device = "T" Or Device = "C") And CStr(Val(setad)) = setad And Val(setad) < 256 Then
  98.         start = False
  99.     End If
  100.     If KeyAscii = 13 Then
  101.       If Val(DevAdd) > 7999 Then
  102.          If MsgBox("改变系统参数可能对系统造成破坏,是否写入?", vbOKCancel + vbCritical) = vbCancel Then Exit Sub
  103.       ElseIf MsgBox("改变当前值可能对运行造成危险,是否写入?", vbOKCancel + vbExclamation) = vbCancel Then Exit Sub
  104.       End If
  105.             If Device = "D" And Check1.Value = 0 Then
  106.                 DevAdd = Right(("0000" + setad), 4)
  107.             ElseIf Device = "D" And Check1.Value = 1 Then
  108.                 DevAdd = Right(("0000" + setad), 4)
  109.             Else
  110.                 DevAdd = Right(("000" + setad), 3)
  111.             End If
  112.             If OptionD.Value Then '十进制方式
  113.                 If Device = "C" And Val(setad) > 199 Then 'C200以上写入
  114.                     If Val(Text2.Text) > 2847483647# Then: GoTo this
  115.                     DevDat1 = cboStation.Text + "FFWW0" + Device + "N" + DevAdd + "01" + Right("00000000" + Hex(Val(Text2.Text)), 8)
  116.                 ElseIf Device = "D" And Check1.Value = 1 Then '双字节D写入
  117.                     If Val(Text2.Text) > 2847483647# Then: GoTo this
  118.                     DevDat1 = Right("00000000" + Hex(Val(Text2.Text)), 8)
  119.                     DevDat1 = Right(DevDat1, 4) + Left(DevDat1, 4)
  120.                     DevDat1 = cboStation.Text + "FFWW0" + Device + DevAdd + "02" + DevDat1
  121.                 Else
  122.                     If Val(Text2.Text) > 32767 Then: GoTo this
  123.                     If Device = "D" Then '单字节D写入
  124.                         DevDat1 = cboStation.Text + "FFWW0" + Device + DevAdd + "01" + Right("0000" + Hex(Val(Text2.Text)), 4)
  125.                     Else 'C200以下写入
  126.                         DevDat1 = cboStation.Text + "FFWW0" + Device + "N" + DevAdd + "01" + Right("0000" + Hex(Val(Text2.Text)), 4)
  127.                     End If
  128.                 End If
  129.             Else '十六进制方式
  130.                 If Device = "C" And Val(setad) > 199 Then 'C200以上写入
  131.                     If Val("&H" + Text2.Text) > 2847483647# Then: GoTo this
  132.                     DevDat1 = cboStation.Text + "FFWW0" + Device + "N" + DevAdd + "01" + Right("00000000" + Text2.Text, 8)
  133.                 ElseIf Device = "D" And Check1.Value = 1 Then '双字节D写入
  134.                     If Val("&H" + Text2.Text) > 2847483647# Then: GoTo this
  135.                     DevDat1 = Right("00000000" + Text2.Text, 8)
  136.                     DevDat1 = Right(DevDat1, 4) + Left(DevDat1, 4)
  137.                     DevDat1 = cboStation.Text + "FFWW0" + Device + DevAdd + "02" + DevDat1
  138.                 Else
  139.                     If Val("&H" + Text2.Text) > 32767 Then: GoTo this
  140.                     If Device = "D" Then '单字节D写入
  141.                         DevDat1 = cboStation.Text + "FFWW0" + Device + DevAdd + "01" + Right("0000" + Text2.Text, 4)
  142. ……………………

  143. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
VB开发的串口与三菱FX PLC通讯源码.rar (19.54 KB, 下载次数: 139)
回复

使用道具 举报

ID:272098 发表于 2018-1-5 19:48 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

ID:33634 发表于 2018-5-24 21:10 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

ID:219903 发表于 2018-6-20 14:37 | 显示全部楼层
谢谢分享,无远程连接是怎么回事?
回复

使用道具 举报

ID:361620 发表于 2018-7-24 18:17 | 显示全部楼层

感谢楼主分享
回复

使用道具 举报

ID:386518 发表于 2018-8-15 13:40 | 显示全部楼层
楼主高人
回复

使用道具 举报

ID:395920 发表于 2018-9-10 10:50 | 显示全部楼层
支持,支持分享
回复

使用道具 举报

ID:138443 发表于 2018-10-18 23:45 | 显示全部楼层
太好了,谢谢了
回复

使用道具 举报

ID:373838 发表于 2018-10-20 08:42 | 显示全部楼层
太好了,谢谢了!!!
回复

使用道具 举报

ID:23309 发表于 2019-10-29 19:12 | 显示全部楼层

感谢楼主分享
回复

使用道具 举报

ID:646618 发表于 2019-11-21 16:32 | 显示全部楼层


感谢楼主分享  试试看
回复

使用道具 举报

ID:715003 发表于 2020-4-11 21:53 | 显示全部楼层
下载了不是你说的这个呢??
有原件吗发给我好吗?
回复

使用道具 举报

ID:750448 发表于 2020-5-13 03:43 | 显示全部楼层
謝謝分享~剛好可以用來最近在研究的
回复

使用道具 举报

ID:750209 发表于 2020-6-27 17:11 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

ID:47634 发表于 2020-7-6 06:56 | 显示全部楼层
很好很好,感谢楼主的好资料,下载学习了
回复

使用道具 举报

ID:963949 发表于 2021-9-4 08:47 | 显示全部楼层
已下载,多谢楼主分享1~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表