您现在所在的是:

串口通信

回帖:13个,阅读:4413 [上一页] [1] [2] [下一页]
929
yyhust
文章数:10
年度积分:50
历史总积分:929
注册时间:2004/8/16
发站内信
发表于:2004/8/17 16:27:00
#0楼
本人用松下FP0的PLC传输数据,但用VB却读不出数据来,十分着急!哪位高人看看我的程序,帮帮忙,小弟不胜感激!以下是我的代码
模块:
Option Explicit
----------------------------------------------------------------------------------------
Public Function CalBCC(ByVal CC$) As String
   Dim i As Integer
   Dim tempresult As Byte
   
   CC$ = LTrim(RTrim(CC$))
   tempresult = 0
   For i = 1 To Len(CC$)
    tempresult = tempresult Xor Asc(Mid$(CC$, i, 1))
    Next i
    CalBCC = Right$("0" + Hex$(tempresult), 2)

End Function
----------------------------------------------------------------------------------------------
Public Function Form_Command(ByVal CC$) As String
   Form_Command = LTrim(RTrim(CC$)) + CalBCC(CC$) + Chr$(&HD)

End Function
--------------------------------------------------------------------------------------------
Public Function Decimalstr(ByVal id_str) As Long
   Dim str As String
   Dim d As Integer
   str = Mid$(id_str, 3, 2) + Mid$(id_str, 1, 2)
   Dim i As Integer
   Dim comp As Long
   comp = 0
   For i = 1 To 4 Step 1
    If Mid$(str, i, 1) = "A" Then
    d = 10
   ElseIf Mid$(str, i, 1) = "B" Then
   d = 11
   ElseIf Mid$(str, i, 1) = "C" Then
   d = 12
   ElseIf Mid$(str, i, 1) = "D" Then
   d = 13
   ElseIf Mid$(str, i, 1) = "E" Then
   d = 14
   ElseIf Mid$(str, i, 1) = "F" Then
   d = 15
   Else
   d = Val(Mid$(str, i, 1))
   End If
   comp = comp + d * 16 ^ (4 - i)
   Next i
   Decimalstr = comp
End Function

窗体程序:
   Dim i As Integer
   Dim comm As String
   Dim comm1 As String
   Dim str As String
   Dim bcc As Byte
-----------------------------------------------------------
Private Sub Command1_Click() '打开端口
   MSComm2.PortOpen = True
End Sub
------------------------------------------------------------
Private Sub Command2_Click() '写数据
   If MSComm2.PortOpen = False Then
       MsgBox "端口没有打开!正在打开"
       MSComm2.PortOpen = True
   End If
   comm = "%01#WDD00101002001234"
   MSComm2.Output = Form_Command(comm)
End Sub
-----------------------------------------------------------
Private Sub Command3_Click()
   Unload Me
End Sub
--------------------------------------------------------------------
Private Sub Command4_Click() '读数据
   comm1 = "%01#RDD0010100200"
   MSComm2.Output = Form_Command(comm1)
   leng = MSComm2.InBufferCount
   str = MSComm2.Input
   Text1.Text = Decimalstr(str)
End Sub


表情
2218
上山下乡
文章数:618
年度积分:50
历史总积分:2218
注册时间:2004/5/6
发站内信
发表于:2004/8/17 22:23:00
#1楼
你的串口设置是怎样的?
松下的要设为9600.o.8.1
程序我再细看一下,然后来回复你!
好久没来了、、、、、
929
yyhust
文章数:10
年度积分:50
历史总积分:929
注册时间:2004/8/16
发站内信
发表于:2004/8/18 8:59:00
#2楼
谢谢,我对PLC也不熟,我学计算机的。
一共接入四个模拟量:V0、I0、V2、I2、V4、I4、V6、I6
再次感谢你!
929
yyhust
文章数:10
年度积分:50
历史总积分:929
注册时间:2004/8/16
发站内信
发表于:2004/8/18 20:03:00
#3楼
急死了急死了,哥哥快一点!!!
2399
mike_CHEN
文章数:649
年度积分:50
历史总积分:2399
注册时间:2003/5/7
发站内信
发表于:2004/8/19 13:59:00
#4楼
comm1 = "%01#RDD0010100200"  

   你从DT101读到DT200应该不太可能,据我所知三菱一次读字元件最大长度64个;松下一次读字元件最大长度32个;所以原因之一应该是读字元件长度过大;
原因之二应该串口发松命令后需要等待PLC返回后才能读取数据,我修改如下:
    MSComm2.Output = Form_Command(comm1)
     dim j
for j=1 to  MSComm2.InBufferCount  
      if j=>8 then        'PLC返回字符长度请参考相关资料,假设为8位
   str = MSComm2.Input
   Text1.Text = Decimalstr(str)
        exit for
     end if
 next j

     
E-Mail:mike.chen@163.com
897
wanda
文章数:1
年度积分:50
历史总积分:897
注册时间:2004/8/19
发站内信
发表于:2004/8/19 14:06:00
#5楼

MSComm2.Output = Form_Command(comm1)
     dim j
for j=1 to  MSComm2.InBufferCount  
      if j=>8 then        
   str = MSComm2.Input
   Text1.Text = Decimalstr(str)
        exit for
     end if
 next jtti
这个改法应该没有


小弟才疏学浅,还望多指教
929
yyhust
文章数:10
年度积分:50
历史总积分:929
注册时间:2004/8/16
发站内信
发表于:2004/8/19 16:36:00
#6楼
松下PLC是16位的
不知道什么原因还是没有读出数据
929
yyhust
文章数:10
年度积分:50
历史总积分:929
注册时间:2004/8/16
发站内信
发表于:2004/8/19 16:47:00
#7楼
上山下乡:
我已经把串口设置为9600.o.8.1
但是读出的数据不正确,都是4096

2218
上山下乡
文章数:618
年度积分:50
历史总积分:2218
注册时间:2004/5/6
发站内信
发表于:2004/8/19 16:51:00
#8楼
那你试试发送数据可以吗?说实话,你的程式我还看不太明白!!!!
好久没来了、、、、、
2218
上山下乡
文章数:618
年度积分:50
历史总积分:2218
注册时间:2004/5/6
发站内信
发表于:2004/8/19 16:53:00
#9楼
http://www.gkong.com/gkong_bbs/dispbbs_all.asp?ID=20735
这有一位兄台提供了一些松下PLC与PC 通讯的资料你再好好看看!
好久没来了、、、、、

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

93.6006