超碰偷拍宾馆情侣:用vb怎样读出PLC指令实现通讯

来源:百度文库 编辑:中科新闻网 时间:2024/05/09 01:42:37
我用的台达PLC,不知那位高手知道用VB与PLC进行通讯,我现在是想用VB读出PLC的指令,希望得到帮助.PLC通讯协议我可以提供.谢谢
我知道可以用串口通信控件MSComm来进行通信编程,但是不知到VB的指令怎样编程.
以下程序我试了还是试不出来.望高手指点

想通过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
Loop Until MSComm1.InBufferCount>=9
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

关于VB与PLC通讯事宜我建议你到工控论坛上去看看.另外关键你还是要到PLC厂家去了解相关信息,实际上PLC主要是将譬如XO的状态MOV到D10或其他的上面.VB通过控件读取D10的信息即可进行判断

利用串口或并口应该比较简单一些,vb可以通过第三方控件或者api操作串口或并口。
不清楚你用的plc,单从你这个vb程序来看,有几个地方错误。
1、MSComm1.ComPort=1应是MSComm1.CommPort=1
2、 DoEvents
Loop Until MSComm1.InBufferCount>=9
RdStr$=MSComm1.Input '接收PLC发回数据
这个地方不对,首先有loop没do构不成循环,其次判断条件不对,我想你的意思是判断vb接到9个字符吧,如果是这样,不能判断MSComm1.InBufferCount,应该判断len(RdStr)>=9.
3、RdStr$=MSComm1.Input应为RdStr$=RdStr$+MSComm1.Input,原来的写法只能得到最后一个字符。
有什么问题再联系。

网上有很多中间件。

qq 3694826

建议找个控件用,这样比较方便.