发表于:2003/10/28 11:31:00
#0楼
本人用的是三菱PLCf1s
想通過VB讀取D0數據,程序實現如下:
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發出讀取D0數據命令字符串
DoEvents
RdStr$=MSComm1.Input '接收PLC發回數據
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數據
Label1.Caption=RdStr
Msgbox "讀取正確",16
Else
Msgbox "讀取錯誤!",16
End If
End Sub
但不能讀到D0數據,上面程序有錯嗎?或者與PLC命令通信字符有錯嗎?
有些資料書上說還要設置PLC的D8120寄存器,我設了,還是不行.
還請高人指點指點!!
敬上!
其實我對PLC不懂
想通過VB讀取D0數據,程序實現如下:
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發出讀取D0數據命令字符串
DoEvents
RdStr$=MSComm1.Input '接收PLC發回數據
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數據
Label1.Caption=RdStr
Msgbox "讀取正確",16
Else
Msgbox "讀取錯誤!",16
End If
End Sub
但不能讀到D0數據,上面程序有錯嗎?或者與PLC命令通信字符有錯嗎?
有些資料書上說還要設置PLC的D8120寄存器,我設了,還是不行.
還請高人指點指點!!
敬上!
其實我對PLC不懂