您现在所在的是:

三菱Mitsubishi

回帖:0个,阅读:823 [上一页] [1] [下一页]
961
wynewlife
文章数:16
年度积分:50
历史总积分:961
注册时间:2005/6/25
发站内信
发表于: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每个单元的状态.

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

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

46.8003