注册名:

密码:

个人注册

企业注册

商务申请

商务管理平台

企业管理平台

个人管理平台

我的工控博客

中国工控网www.chinakong.com

首页 | 新闻中心 | 工控论坛 | 经验视点 | 工控商务 | 电气手册 | 工控博客 | 招聘求职 | 网上调查 | 企业中心 | 供求信息 | 资料中心 | 工控书店

所在位置:工控论坛 -- PLC论坛 -- OMRON PLC论坛 -- PLC网络通信

中国工控网搜索:

 登陆:密码:  注册  密码

搜索:

发表人:cyu_swau 发表时间:2005/4/12 20:15:00  

 

 本栏论题: 有谁用过vb和plc通信的吗?  [11143]

    我现在在做一个温室的控制系统!!!,pc机作为上位机,PLC(OMRON的)是下位机!!我现在对vb还不是很熟悉!!谁能帮帮我!!给我一个比较详细的通信的例子!!!万分感谢!!!!

以下是关于《有谁用过vb和plc通信的吗?》论题的回复(共14篇)

回复人:newchp 

 回复时间:2006/11/7 22:06:00

支持(786) | 反对(1101)

 

    回复:有谁用过vb和plc通信的吗?

    谢谢楼主的帖子。
    大家有VB与PLC串行通讯方面的资料吗,给我一份,好吗?希望我们共同学习,共同提高!

回复人:昆仑一号 

 回复时间:2005/12/19 11:06:00

支持(859) | 反对(894)

 

    回复:关键是VB通信控件和plc自由口通信功能的利用

    关键是VB通信控件和plc自由口通信功能的利用

回复人:有机物 

 回复时间:2005/4/26 23:11:00

支持(851) | 反对(816)

 

    回复:这篇文章挺好的!

    http://www.chinakong.com/article/disp.asp?owner=3&ID=47
   
   

回复人:pengjun 

 回复时间:2005/4/25 14:16:00

支持(1233) | 反对(770)

 

    回复:参考一下

    基于VB的分布式监控系统通信设计
   
    郭爱文 王静(武汉大学)
   
    摘 要:本文介绍了利用VB的多种通信手段实现分布式监控系统的多种通信功能,对每一种通信手段给出其原理和应用实例。
   
    关键词:VB 通信 串行口 控件 DDE API
   
    一、概论
   
    分布式监控系统已在工业领域得到广泛应用,许多企业对于中小规模的设备,如中小型热电厂和水电站,出于硬件软件投资利润率和性能价格比的考虑,常常是自行开发或参与开发本企业的监控系统。而许多企业在成套引进大型DCS系统后,也常因实际情况而需要自行开发或改进其监控系统。
   
    分布式监控系统以微机为基础,用数据通信将微机连在一起实现数据共享,从而对工业过程进行集中监视管理和分散控制。因此,分布式监控系统中通信的设计与实现是至关重要的环节。Visual Basic开发语言具有简洁明了、编程效率高、开发周期短的特点,利用VB中的多种通信手段,可实现分布式监控系统的多种通信功能。
   
    二、与下位机的通信
   
    分布式监控系统的数据采集站可直接与现场带有标准RS-232C接口的智能仪表、PLC和单片机等链接,并可通过扩展控制卡形成一个数据采集子网,以高速准确地获取数据。VB的MSCOMM通信控件具有完善的串口数据发送和接受功能,利用它可以屏蔽对硬件的操作,简易快捷地进行串行通信编程。
   
    本文的实例为上位机与OMRON 200HG系列PLC的1:N链接通信。带有RS-485接口通信板的PLC直接挂在RS-485总线上,上位机通过RS-232C /RS-485转换器与总线相连,这样即构成数据采集子网,甚至可以是一个独立的小型分布式监控系统。其它仪器仪表设备,只要是标准串口都可以类似方式直接或间接与上位机链接。
   
    关于VB的MSCOMM控件可参考相关资料。本例通信程序摘要如下:
   
    (1)初始化程序
   
    Mscomm1.Commport=2 ' 选择COM2
   
    Mscomm1.Settings="9600,N,8,2" ' 设置通信参数
   
    Mscomm1.Inputlen=0 ' 读入接收缓冲区全部字符
   
    Mscomm1.OutbufferSize=256 ' 设置发送缓冲区大小
   
    Mscomm1.InbufferSize=512 ' 设置接收缓冲区大小
   
    Mscomm1.PortOpen=True '打开COM2
   
    (2)发送命令程序
   
    比如读取节点号03的PLC中IR000到IR009的内容,并放到tag1字符串变量中,此时有:
   
    Dim Command, node, begin, number as string
   
    Dim Answerlen as integer node="03" '节点号
   
    Command="RR" '命令为读IR区
   
    begin="0000" '从IR000开始
   
    number=10 '读取长度
   
    Answerlen=51 '计算接收字符串长度
   
    进行命令发送和接收应答处理:
   
    Dim FCS, I as integer
   
    Dim s ,f as string
   
    s="@"+node+Commad+begin+number
   
    FCS=0
   
    For i=1 to Len(s)
   
    FCS=FCS xor Asc(Mid$(s,i,1) ) '帧校验码FCS
   
    Next i
   
    f=Hex$(FCS)
   
    If Len(f)=1 Then f="0"+f
   
    Commfrm.MSComm1.Output=s + f + "*" + CHR$(13) '命令帧发送
   
    Do
   
    Dummy=DoEvents()
   
    Loop Untill Commfrm.MSComm1.InbufferCount >= Answerlen '等待应答帧
   
    Do tag1= Commfrm.MSComm1.Input
   
    Loop Untill Commfrm.MSComm1.InbufferCount=0 '读完应答帧
   
    上述程序具有相当的通用性,对于其它设备不同的只是各自的数据帧格式,因而只需做相应少量修改即可。
   
    三、节点自身的"通信"
   
    节点自身的"通信"是一种形象的说法,严格说来应是VB应用程序利用DDE技术与本节点其它Windows应用程序进行数据交换。DDE(Dynamic Data Exchange)即动态数据交换,它是Windows支持的三种内部通信机制之一,是应用程序间通过共享内存进行进程间通信的一种形式。应用程序间进行数据交换称为"会话"(Conversation),申请会话端叫客户(Client),响应申请端叫服务器(Server)。一旦客户与服务器间建立起DDE所需的数据链路就可自动进行数据交换。
   
    在监控系统开发中,工控组态软件以其功能强大、使用方便等特点得到广泛应用,但在处理复杂数据时其计算功能受到一定限制,而VB可以较好地弥补这一不足,并且还能承担数据采集、报表打印等功能。这就需要在VB应用程序与组态软件应用程序间进行动态数据交换。
   
    VB中只有TextBox、PictureBox、Label和Form可以与其它应用程序进行动态数据交换,控件用于DDE的属性项有LinkTopic(连接主题)、LinkItem(连接项)、LinkMode(连接模式)和LinkTimeout(连接等待时间)。
   
    这里以本实验室的小型分布式监控实验系统为例,介绍一个VB应用程序与组态王5.0应用程序间实现DDE的实例。
   
    1、VB作为Server,组态王作为Client
   
    当有些参数需要从VB应用程序传输到组态王应用程序,如VB从PLC采集水位值参数至程序Ser.vbp的Text1,再将数据动态传递给组态王的I/O变量SW,这时VB作为Server,组态王作为Client。
   
    VB程序Ser.vbp 中属性设置如下(Form1为Text1所在窗体):
   
    Form1.LinkTopic = "water" 数据交换的话题
   
    Form1.LinkMode = 1 作为服务器
   
    组态王的设置如下:
   
    新建一个名为vbdde的DDE设备,服务程序名Ser,话题名water,数据交换方式为标准WINDOWS项目交换。新建一个名为SW的I/O变量,连接设备设为vbdde,项目名设为Text1。
   
    2、组态王作为Server,VB作为Client
   
    当有些参数需要从组态王传输到VB,如为了提高变频器电压以提升泵速,可在组态王应用程序中改变I/O变量BS值并动态传递给VB的Text2,VB接收到数据后经处理再传递给PLC相应继电器区。这时组态王作为Server,VB作为Client。
   
    组态王设置如下:
   
    新建一个名为BS的I/O变量,连接设备设为已建立的vbdde设备,项目名设为bengsu。
   
    VB程序Ser.vbp中设置如下:
   
    Text2.LinkTopic = "view|tagname"
   
    Text2.LinkItem = "bengsu"
   
    Text2.LinkMode = 1
   
    TextBox控件有无连接、自动式连接、被动式连接和通知式连接四种连接模式,可依据实际情况灵活运用。
   
    四、网络通信
   
    VB6.0与旧版本相比较,最明显的特点是增加了强大的网络功能,将其用于分布式监控系统中可以轻松地实现远程通信。VB的WINSOCK控件有效屏蔽了对WINDOWS套接字的低层操作,可方便地建立起网络中任意两个具有唯一IP地址节点间的连接,并通过UDP或TCP协议进行数据交换,可用于创建Client/Server应用程序。
   
    本文举分布式监控系统中节点间通信的实例,其中节点A(IP地址202.114.102.134)作为服务器负责某一区域的数据采集与处理,程序内有一名为TCPServer的Winsock控件;节点B(IP地址202.114.102.135)是同级或上一级的某一节点,作为客户机,其程序内有一名为TCPClient的Winsock控件。
   
    节点A服务器核心程序如下:
   
    (1)初始化程序
   
    tcpserver(0).RemoteHostIP = 202.114.102.135
   
    tcpserver(0).LocalPort = 1001 'tcpserver(0)专用于侦听
   
    tcpserver(0).Listen
   
    (2)发送数据程序
   
    tcpserver(Index).SendData Text1.Text
   
    (3)处理客户机连接请求程序
   
    Private Sub TCPServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)
   
    Load tcpserver(Index)
   
    tcpserver(Index).Accept requestID
   
    End Sub
   
    (4)客户机数据到达处理程序
   
    Private Sub TCPServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
   
    Dim RD As String
   
    tcpserver(Index).GetData RD, vbString
   
    txtRD.text=RD
   
    tcpserver(Index).SendData RD
   
    End Sub
   
    (5)关闭连接程序
   
    Private Sub TCPServer_Close(Index As Integer)
   
    tcpserver(Index).Close
   
    Unload tcpserver(Index)
   
    End Sub
   
    以上程序着重说明Winsock控件的主要属性、方法和事件,如要实现多进程(多个客户程序同时运行),可应用创建控件数组来代表已连接的控件实例的方法处理。
   
    节点B客户机核心程序如下:
   
    Private ConnectFlag As Boolean '设置判断是否连接标志
   
    (1)初始化程序
   
    TCPClient.RemoteHost IP= 202.114.102.134 '远程计算机IP地址
   
    TCPClient.RemotePort = 1001 '远程计算机端口
   
    ConnectFlag = False
   
    (2)申请连接程序
   
    If Not ConnectFlag Then
   
    TCPClient.Close
   
    TCPClient.Connect
   
    Do
   
    DoEvents
   
    Loop Until TCPClient.State = sckConnected
   
    ConnectFlag = True
   
    End Sub
   
    (3)数据到达处理程序
   
    Private Sub TCPClient_DataArrival(ByVal bytesTotal As Long)
   
    Dim RD As String
   
    TCPClient.GetData RD, vbString
   
    txtRD.text = RD
   
    End Sub
   
    (4)发送数据程序
   
    TCPClient.SendData txtSD.Text
   
    (5)关闭连接程序
   
    Private Sub TCPClient_Close()
   
    TCPClient.Close
   
    Do
   
    DoEvents
   
    Loop Until TCPClient.State = sckClosed
   
    ConnectFlag = False
   
    End Sub
   
    五、远程通信
   
    当监控系统的一些重要信息,如严重事故,需要及时通知有关部门即实现远程通信时,可以利用网络中某一连接至Internet的带有MODEM的节点,通过MODEM自动拨打电话,将信息及时地送达有关部门。
   
    应用VB的MSCOMM控件可实现这一功能,基本方法与下位机通信类似。这里介绍调用API函数直接写I/O端口,使用设备控制块DCB的方法拨打电话并挂起MODEM。
   
    首先利用VB的API Viewer浏览器在module1模块中声明对以下函数、数据类型和常量的引用:
   
    CreateFile 函数
   
    CloseHandle 函数
   
    BuildCommDCB 函数
   
    SetCommState 函数
   
    DCB数据类型
   
    GENERIC_READ常量
   
    GENERIC_WRITE 常量
   
    OPEN_EXISTING 常量
   
    (1)MODEM设置子程序
   
    Public Function ModemSetup( ) As Boolean
   
    Dim lResult As Long
   
    Dim lCommHandle As Long
   
    Dim DCB_Comm As DCB
   
    Dim tDCBConfig As String
   
    ModemSetup = True '指定lCommHandle为通信源对象的句柄
   
    lCommHandle = CreateFile(COM2,GENERIC_READ Or GENERIC_WRITE, _ 0&, 0&, OPEN_EXISTING, 0&, 0&)
   
    '构造DCB对象的初始化字符串
   
    tDCBConfig = "baud=9600" & "parity=NONE" & "data=8" & "stops=1"'用初始化字

回复人:titi 

 回复时间:2005/7/21 11:15:00

支持(803) | 反对(775)

 

    回复:谢谢!

    谢谢!

回复人:smart 

 回复时间:2005/4/22 10:16:00

支持(1763) | 反对(833)

 

    回复:你好

    你也是在做温控啊.找到好的资料别忘了给我也看看

回复人:cyu_swau 

 回复时间:2005/4/25 16:17:00

支持(1049) | 反对(746)

 

    回复:现在都还没的完啊!!你有什么好的没有啊!!!

    我的邮箱:gpking0829@yahoo.com.cn

回复人:duzeng 

 回复时间:2007/11/9 0:27:00

支持(1412) | 反对(829)

 

    学习了

回复人:95020576 

 回复时间:2009/2/23 8:49:00

支持(964) | 反对(861)

 

    学习了,好东东

回复人:向天再借五百年 

 回复时间:2009/4/6 15:53:00

支持(1050) | 反对(642)

 

    学习了

回复人:havegood 

 回复时间:2010/1/21 22:38:00

支持(827) | 反对(637)

 

    需要通讯资料的朋友可直接到 www.lflzdh.cn 下载,谢谢!

回复人:sybtgs 

 回复时间:2010/2/25 21:41:00

支持(746) | 反对(734)

 

    学习了

回复人:casarliu 

 回复时间:2010/10/29 14:58:00

支持(609) | 反对(1133)

 

    学习了

回复人:xyshi 

 回复时间:2011/12/15 9:11:00

支持(622) | 反对(729)

 

    OMRON的目前还没有试过,三菱的FX系列正常使用。网上有很多现成的例子。

如果要回复本栏论题,请首先中国工控网www.chinakong.com

·如果你已经是中国工控网www.chinakong.com成员,请直接登录。

·如果你还不是中国工控网www.chinakong.com成员,请首先注册,注册为免费!

注册名:

密  码:

           注册中国工控网www.chinakong.com
           忘记密码

关闭该窗口

关于我们     免责声明     服务项目     广告联系     友情链接     联系方式     意见反馈     设为首页     加入收藏

 ©2023-2025 中国工控网(www.chinakong.com) 版权所有 豫ICP备17046657号

管理员信箱:chinakong98@163.com  服务热线:13525974529

洛阳博德工控自动化技术有限公司

中国    洛阳