各位大哥,谁呢帮我看看为什么,这个VB程序联不上PLC进行通讯?! 点击:390 | 回复:12



lxhhl258

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 35回
  • 年度积分:0
  • 历史总积分:117
  • 注册:2008年11月16日
发表于:2009-08-14 12:47:11
楼主

Public CmdLenth As Integer
Public HiByte As String
Public LoByte As String

Private Sub Form_Load()
‘1. 通讯口初始化:
MSComm1.Settings = "4800,n,8,1"
MSComm1.CommPort = 3
MSComm1.SThreshold = 0
MSComm1.PortOpen = True
End Sub
‘2. CRC 校验码的计算方法,如以下函数,可以得到字节数组变量cmdstring 指向的字符串的CRC
‘校验码?
Function crc16(ByRef cmdstring() As Byte, ByVal j As Integer)
Dim data As Integer
Dim i As Integer
Addressreg_crc = &HFFFF
For i = 0 To j
Addressreg_crc = Addressreg_crc Xor cmdstring(i)
For j = 0 To 7
data = Addressreg_crc And &H1
If data Then
Addressreg_crc = Int(Addressreg_crc / 2)
Addressreg_crc = Addressreg_crc And &H7FFF
Addressreg_crc = Addressreg_crc Xor &HA001
Else
Addressreg_crc = Addressreg_crc / 2
Addressreg_crc = Addressreg_crc And &H7FFF
End If
Next j
Next i
If Addressreg_crc < 0 Then
Addressreg_crc = Addressreg_crc - &HFFFF0000
End If
HiByte = Addressreg_crc And &HFF
LoByte = (Addressreg_crc And &HFF00) / &H100
End Function



Private Sub Command1_Click()
‘4. 写多个字的命令(本例是写2 号站%MW20 起始的3 个字):
Dim WriteStr() As Byte
k = 6 ‘写6 个字节
ReDim WriteStr(8 + k)
WriteStr(0) = 2 ‘从站号是2
WriteStr(1) = &H10 ‘写多个字的命令代码
WriteStr(2) = 0 ‘起始地址高字节
WriteStr(3) = 20 ‘起始地址低字节
WriteStr(4) = &H0 ‘数据长度高字节<字的个数>
WriteStr(5) = k / 2 ‘数据长度低字节<字的个数>
WriteStr(6) = k ‘数据长度<字节的个数>
WriteStr(7) = &H12 ‘写的第1 个字的高字节
WriteStr(8) = &H34 ‘写的第1 个字的低字节
WriteStr(9) = &H56 ‘写的第2 个字的高字节
WriteStr(10) = &H78 ‘写的第2 个字的低字节
WriteStr(11) = &H9A ‘写的第3 个字的高字节
WriteStr(12) = &HBC ‘写的第3 个字的低字节
Call crc16(WriteStr(), 6 + k)
WriteStr(9 + (k / 2 - 1) * 2) = HiByte
WriteStr(10 + (k / 2 - 1) * 2) = LoByte
Text2.Text = HiByte
Text3.Text = LoByte
MSComm1.InBufferCount = 0
MSComm1.Output = WriteStr
‘写命令发送后,当接收到8 个字节时中断
CmdLenth = 8
MSComm1.RThreshold = CmdLenth
End Sub

‘5. 通讯事件中断产生时的数据处理:
Private Sub MSComm1_OnComm()
Dim inx() As Byte
Select Case MSComm1.CommEvent
Case comEvReceive ‘判断为接收事件
MSComm1.InputLen = CmdLenth ‘接收数据的长度
inx = MSComm1.Input ‘接收数据
MSComm1.InBufferCount = 0
For k = 3 To CmdLenth - 3
tmpstr = tmpstr & "/" & Hex(inx(k))
Next
Text1.Text = tmpstr ‘以十六进制显示所接收长度的数据
Beep
Endselect
End Sub

 

点击按钮Command1时,PLC上的通讯灯com会一亮,一亮的,可就是数据发不过去,不知为何?!

小弟在此跪谢了!!!




lxhhl258

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 35回
  • 年度积分:0
  • 历史总积分:117
  • 注册:2008年11月16日
发表于:2009-08-20 07:47:34
1楼
                      怎么没有人回复?!

humdinger

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 24回
  • 年度积分:0
  • 历史总积分:22
  • 注册:2006年4月24日
发表于:2009-08-21 16:58:27
2楼

你先确保你的电脑能不能用施耐德的软件连接PLC,如果没有问题,说明你的硬件没有。在看MD的协议。

lxhhl258

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 35回
  • 年度积分:0
  • 历史总积分:117
  • 注册:2008年11月16日
发表于:2009-08-22 06:41:28
3楼
回复内容:
对:humdinger 关于

你先确保你的电脑能不能用施耐德的软件连接PLC,如果没有问题,说明你的硬件没有。在看MD的协议。

内容的回复:多谢您的回复!我用编程软件可以连接PLC的,MODBUS 协议也没问题,但不知你说的“硬件没有”指的是什么,小弟愚钝,还请指教。多射!!!


lxhhl258

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 35回
  • 年度积分:0
  • 历史总积分:117
  • 注册:2008年11月16日
发表于:2009-08-23 07:00:06
4楼
不知道是不是通讯线的问题,我电脑用的是USB接口,PLC用的是485接口。是不是这样不能连接呢?

[明月夜]

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2009-08-23 08:49:40
5楼

你的USB线是 USB/232线 还是 PLC专用的线?

这要搞清楚

pqsh

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 291回
  • 年度积分:0
  • 历史总积分:432
  • 注册:2006年9月20日
发表于:2009-08-23 09:26:35
6楼
如果编程和modbus协议没有问题,连接线应该就没问题.
如果写不进去,你可以试试读,或者用别的modbus测试程序试试.
还可以从485连接第三个设备,用来监测通讯或报文的状态,确定你所需要的报文正确无误.

lxhhl258

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 35回
  • 年度积分:0
  • 历史总积分:117
  • 注册:2008年11月16日
发表于:2009-08-24 06:35:26
7楼
我用的是PLC专用的USB-485的编程电缆

lxhhl258

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 35回
  • 年度积分:0
  • 历史总积分:117
  • 注册:2008年11月16日
发表于:2009-08-24 06:36:35
8楼

读也试过了,结果是一样的

 

[明月夜]

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2009-08-24 08:14:48
9楼

很可能发送的MODBUS串有问题,发送前用调试语句把

要发送的内容显示出来分析一下。特殊注意校验码是否正确。

我搞过MODBUS通迅,用的是MSCOMM32。OCX,语言

是C++BUILDER6。

 

lxhhl258

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 35回
  • 年度积分:0
  • 历史总积分:117
  • 注册:2008年11月16日
发表于:2009-08-24 13:02:58
10楼
多谢各位兄弟的帮忙 ,问题已解决人,

lxhhl258

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 35回
  • 年度积分:0
  • 历史总积分:117
  • 注册:2008年11月16日
发表于:2009-08-24 13:03:59
11楼
是接线和CRC都有问题,

lxhhl258

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 35回
  • 年度积分:0
  • 历史总积分:117
  • 注册:2008年11月16日
发表于:2009-08-24 13:10:05
12楼

在此特别要感谢 明月夜 是你启发了我的思路,,多谢了!!!

小弟不才,以后有什么用得到小弟的地方尽管来找我!!!

 

e-mail:lxhhl258@sina.com

qq:79888046


热门招聘
相关主题

官方公众号

智造工程师