您現(xiàn)在所在的是:

PLC論壇

回帖:13個,閱讀:19210 [上一頁] [1] [2] [下一頁]
1245
comszmz
文章數(shù):114
年度積分:50
歷史總積分:1245
注冊時間:2003/8/29
發(fā)站內(nèi)信
發(fā)表于:2003/10/28 11:10:00
#0樓
本人用的是三菱PLCf1s
想通過VB讀取D0數(shù)據(jù),程序?qū)崿F(xiàn)如下:
 Private Sub Form_Load()
   MSComm1.ComPort=1
   MSComm1.Settings="9600,N,8,1"
 End Sub

 Private Sub Command1_Click()
   MSComm1.PortOpen=True
   MSComm1.Inputlen=0
   SendCom$=Chr(5)+"01FFWR0D000001"+Chr(13)+Chr(10)
   MSComm1.Output=SendCom  '向PLC發(fā)出讀取D0數(shù)據(jù)命令字符串
   DoEvents
   RdStr$=MSComm1.Input    '接收PLC發(fā)回數(shù)據(jù)
   Rvd$=Mid(RdStr,1,5)    
   If Rvd=Chr(2)+"01FF" Then '是否接收到
      ACKStr$=Chr(6)+"01FF"
      MSComm1.Output=ACKStr
      RdStr=Val("&H"+Trim(Mid(RdStr,6,4))) '取出D0數(shù)據(jù)
      Label1.Caption=RdStr
      Msgbox "讀取正確",16
   Else
      Msgbox "讀取錯誤!",16
   End If
 End Sub
但不能讀到D0數(shù)據(jù),上面程序有錯嗎?或者與PLC命令通信字符有錯嗎?
有些資料書上說還要設(shè)置PLC的D8120寄存器,我設(shè)了,還是不行.
還請高人指點指點!!
  敬上!
921
pooboy
文章數(shù):9
年度積分:50
歷史總積分:921
注冊時間:2003/10/28
發(fā)站內(nèi)信
發(fā)表于:2003/10/28 13:39:00
#1樓
在DoEvents處使用一段延時程序試試,再看看PLC上設(shè)定的響應(yīng)時間是多少,我記得好像是100ms,如果不行那檢查PLC中的通訊錯誤繼存器是否有輸出,如有則說明程序中的協(xié)議有錯。
921
pooboy
文章數(shù):9
年度積分:50
歷史總積分:921
注冊時間:2003/10/28
發(fā)站內(nèi)信
發(fā)表于:2003/10/28 13:41:00
#2樓
程序中是否加入了校驗和?
921
pooboy
文章數(shù):9
年度積分:50
歷史總積分:921
注冊時間:2003/10/28
發(fā)站內(nèi)信
發(fā)表于:2003/10/28 13:42:00
#3樓
參照一下下面的程序。
921
pooboy
文章數(shù):9
年度積分:50
歷史總積分:921
注冊時間:2003/10/28
發(fā)站內(nèi)信
發(fā)表于:2003/10/28 13:47:00
#4樓

''ReadWordA(串行控件,站號,數(shù)據(jù)地址,要讀取的長度)
''例:ReadWordA comm,"01","D0001"

Public Function ReadWordA(comm As MSComm, StNo As String, Address As String, WordLen As String) As Long
   Dim strT As String
On Error Resume Next
   strT = chr(&h05) & StNo & "FF" & "WR" & "A" & Address & WordLen
   strT = strT & Sumcheck(strT) ''
comm.OutBufferCount = 0
comm.RThreshold = Val(WordLen) * 4 + 8
comm.Output = strT
End Function

Public Function Sumcheck(chstr As String) As String ''計算校驗和
Dim hexl As Long
Dim i As Long
   For i = 2 To Len(chstr)
       hexl = hexl + Asc(Mid(chstr, i, 1))
   Next i
   Sumcheck = Right(Hex(hexl), 2)
End Function



[此貼子已經(jīng)被作者于2003-10-28 13:49:28編輯過]
1245
comszmz
文章數(shù):114
年度積分:50
歷史總積分:1245
注冊時間:2003/8/29
發(fā)站內(nèi)信
發(fā)表于:2003/10/28 14:10:00
#5樓
謝謝各位高人,但不知PLC中D8120用不用設(shè)置呢?
921
pooboy
文章數(shù):9
年度積分:50
歷史總積分:921
注冊時間:2003/10/28
發(fā)站內(nèi)信
發(fā)表于:2003/11/1 18:58:00
#6樓
D8120是對內(nèi)部的通訊口設(shè)定參數(shù),你可根據(jù)PLC的參數(shù)來設(shè)定VB程序中串行控件的參數(shù),或者反過來也行。
1245
comszmz
文章數(shù):114
年度積分:50
歷史總積分:1245
注冊時間:2003/8/29
發(fā)站內(nèi)信
發(fā)表于:2003/11/2 20:48:00
#7樓
好像不行哦,只收到組同樣的中文亂碼,我都不會打出來
好像不行,收到一組亂碼,碼文我不會打出來!
為什么會這樣呢?
922
zzg94
文章數(shù):2
年度積分:50
歷史總積分:922
注冊時間:2004/9/23
發(fā)站內(nèi)信
發(fā)表于:2004/9/23 11:47:00
#8樓
我先問一下,你是不是直接用通訊電纜與它的編程口連接?如果是這樣的話,它的通訊格式就變了
908
zengqh312
文章數(shù):2
年度積分:50
歷史總積分:908
注冊時間:2004/3/18
發(fā)站內(nèi)信
發(fā)表于:2004/9/24 15:59:00
#9樓
通訊參數(shù)是否正確,如比特率,校驗位等?

關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 本站動態(tài) | 友情鏈接 | 法律聲明 | 非法和不良信息舉報

工控網(wǎng)客服熱線:0755-86369299
版權(quán)所有 工控網(wǎng) Copyright©2024 Gkong.com, All Rights Reserved

78.0005