发表于:2006/5/16 14:09:00
#0楼
[size=4]我做的是VB下的FX0N与PC的通信,可是在试验中通信失败了
我不知道是那出了问题,请各位大大帮忙看看程序有没有毛病或不足的地方
程序的目的是:实现PLC的数据监视和PLC执行PC的指令[/size]
M SCOM 控件初始化
VB提供了一个MSCOM控件可以为应用程序提供串口通信功能,使用时要进行初始化,
程序如下:
'MSCOM 控件初始化
Private Sub Form_Load()
MSComml.CommPort = 1 '定义COM 1为通信口
MSComml.InBufferSize = 1024 '定义接收队长度为1K
MSComml.OutBufferSize = 1024 '定义发送队列长度为1
MSComml.Settings = "9600,N,8,1" '波特率9 600 b/s,无校验,8位数据位,一个停止位
MSComml.InputLen = 0 '读取整个接收缓冲区内容
MSComml.OutBufferCount = 0 '清除接收缓冲区内容
MSComml.PortOpen = True '打开串行口
End Sub
由于 PL C采用ASCII码方式,所以编写通信程序时要特别注意.下面以上述从D123(寄存器)读取4个字节数据的帧格式为例编写通信程序.
握手程序
Private Sub Command1_Click()
Dim pausetime, starttime
Dim instr As String
Dim i As Integer
MSComml.Output = Chr(5) '发送请求标志,ASCII值为5,V B中以chr(5)表示
pausetime = 5
starttime = Timer
Do While Timer < starttime + pausetime '延时5秒
DoEvents
Loop
If MSComm1.InBufferCount > 0 Then '是否有响应
If Asc(MSComm1.Input) = 6 Then '响应是否为PLC正确响应(ASCII值为 6)
MsgBox (" 握 手 成 功 !")
Else
MsgBox (" 握 手 失 败!")
End If
Else
MsgBox (" 握 手 失 败!")
End If
End Sub
发送控制指令
Private Sub Command2_Click()
Dim outstr, instr As String
MSComml.Output = outstr '发送指令一outstr
Do '接收PLC的应答
DoEvents
Loop Until MSComml.InBufferCount > O
instr = MSComml.Input
MSComml.PortOpen = False
End Sub
程 序 中 outstr为计算机对PLC发送的指令,可以完成对PLC的读、写、强制开和强制关
等操作,视具体情况而定,如上例,outstr应为Chr(2)&"O1OF604"&Chr(3)&-"74".而instr为
PLC的应答信息,对instr分析处理可以得到PLC每个单元的状态.
我不知道是那出了问题,请各位大大帮忙看看程序有没有毛病或不足的地方
程序的目的是:实现PLC的数据监视和PLC执行PC的指令[/size]
M SCOM 控件初始化
VB提供了一个MSCOM控件可以为应用程序提供串口通信功能,使用时要进行初始化,
程序如下:
'MSCOM 控件初始化
Private Sub Form_Load()
MSComml.CommPort = 1 '定义COM 1为通信口
MSComml.InBufferSize = 1024 '定义接收队长度为1K
MSComml.OutBufferSize = 1024 '定义发送队列长度为1
MSComml.Settings = "9600,N,8,1" '波特率9 600 b/s,无校验,8位数据位,一个停止位
MSComml.InputLen = 0 '读取整个接收缓冲区内容
MSComml.OutBufferCount = 0 '清除接收缓冲区内容
MSComml.PortOpen = True '打开串行口
End Sub
由于 PL C采用ASCII码方式,所以编写通信程序时要特别注意.下面以上述从D123(寄存器)读取4个字节数据的帧格式为例编写通信程序.
握手程序
Private Sub Command1_Click()
Dim pausetime, starttime
Dim instr As String
Dim i As Integer
MSComml.Output = Chr(5) '发送请求标志,ASCII值为5,V B中以chr(5)表示
pausetime = 5
starttime = Timer
Do While Timer < starttime + pausetime '延时5秒
DoEvents
Loop
If MSComm1.InBufferCount > 0 Then '是否有响应
If Asc(MSComm1.Input) = 6 Then '响应是否为PLC正确响应(ASCII值为 6)
MsgBox (" 握 手 成 功 !")
Else
MsgBox (" 握 手 失 败!")
End If
Else
MsgBox (" 握 手 失 败!")
End If
End Sub
发送控制指令
Private Sub Command2_Click()
Dim outstr, instr As String
MSComml.Output = outstr '发送指令一outstr
Do '接收PLC的应答
DoEvents
Loop Until MSComml.InBufferCount > O
instr = MSComml.Input
MSComml.PortOpen = False
End Sub
程 序 中 outstr为计算机对PLC发送的指令,可以完成对PLC的读、写、强制开和强制关
等操作,视具体情况而定,如上例,outstr应为Chr(2)&"O1OF604"&Chr(3)&-"74".而instr为
PLC的应答信息,对instr分析处理可以得到PLC每个单元的状态.