电讯技术
主办单位:中华人民共和国工业和信息化产业部
国际刊号:1001-893X
国内刊号:51-1267/TN
学术数据库优秀期刊 《中文科技期刊数据库》来源期刊
       首 页   |   期刊介绍   |   新闻公告   |   征稿要求   |   期刊订阅   |   留言板   |   联系我们   
  本站业务
  在线期刊
      最新录用
      期刊简明目录
      本刊论文精选
      过刊浏览
      论文下载排行
      论文点击排行
      
 

访问统计

访问总数:37259 人次
 
    本刊论文
利用VB实现上位机与DX中波发射机通讯探析_控件

  论文导读::添加几个label控件。在VB中实现调用EXCEL后台数据库。

  论文关键词:DDE(动态数据交换技术)DX中波发射机,控件,PLCVB,EXCEL

  一、 前 言

  DX系列中波发射机是由美国Harris公司制造的全固态数字调幅发射机,由于其运行稳定、各项指标好、整机效率高等优点,在全国各台站得以广泛应用。我台自1999年起开始使用DX-400发射机,在10年左右的使用与维护工作中我们曾对DX-400发射机进行了两次自动化改造。第一次改造是用OMRON C200H PLC加外围电路来实现对发射机和附属设备进行采样和控制的,但在实际的使用过程中我们发现这样的控制系统有其致命的局限性。因为系统是PLC加外围电路实现的控制系统就决定了系统无法显示机器内部数据的实时状态控件,无法与发射机内部实现直接通讯。因此只有实现了工控机与发射机的控制核心--- PLC(可编程控制器)直接通信才能克服这一局限性,真正实现实时掌握机器内部数据状态和对发射机的直接控制。DX-400发射机控制单元使用的是A-B PLC,这种PLC是Rockwell Automation的专利产品,使得第三方的软件不能很好地与A-B PLC进行连接。在实际改造工作中我们找到了一种采用DDE技术与A-B PLC进行数据交换的方法,能够更好的解决这一瓶颈问题。

  二、 DDE技术的工作机制DDE是动态数据交换技术的缩写,是为在同一台计算机或不同计算机上运行的程序提供动态数据交换的一种新技术,最早由MICROSOFT公司提出的发表论文。动态数据交换(DDE)技术由于其具有实时性好、网络通信连接实现方便等特点,在控制软件与信息网络集成中得到了广泛应用。 动态数据交换基于WIDNOWS消息机制,各应用程序间通过传递消息进行对话交换信息。WINDOWS DDE消息传递采用CLIENT/SERVER模式,客户(CLIENT)是数据的请求和接受者,而服务器(SERVER)是数据的提供者控件,两者之间通过请求、应答、传输三个步骤来完成数据的传送。DDE协议使用服务(SERVICE)、主题(TOPIC)和数据项(ITEM)三级命名来标识DDE所传递的数据单元。一般情况下,服务(SERVICE)就是应用程序的文件名,主题是对服务器有意义的信息单元。每次DDE客户与服务程序之间的对话都是先由客户启动的,所以在每次客户启动之前,DDE服务器应当首先投入运行。当客户程序需要向服务器程序请求数据时,客户程序发送一条WM-DDE-INITEATE消息给当前运行的所有WIDNOWS应用程序,这条消息不但包含了它所需要的服务器名(SERVICE)和主题名(TOPIC),而且指明了它所希望的数据类型,收到WM-DDE-INITEATE消息的应用程序通过判别服务器名和会话主题决定是否应答,一旦DDE服务器响应了这条被传播的消息,DDE会话就开始了。DDE的工作方式有冷连接(COOL LINK)、温连接(WARM LINK)和热连接(HOT LINK)等3种。在冷连接方式下,当SERVER中的数据发生变化后不主动通知CLIENT控件,但CLIENT可以随时从SERVER读写数据;在温连接方式下,当SERVER中的数据发生变化后马上通知CLIENT,CLIENT得到通知后将数据取回;在热连接方式下,当SERVER中的数据发生变化后马上通知CLIENT,同时将变化的数据直接送给CLIENT。

  三、硬件连接与系统配置

  上位机(工控机)与A-B PLC的连接方式有两种:一种是利用厂家提供的DH+485数据线将上位机通讯卡与A-B PLC CPU模块的DH+接口直接连接;一种是通过自制的R232数据线将上位机COM口与A-BPLC CPU模块的RS232接口直接连接。

  (一)、通讯卡连接方式

  1、安装通讯卡并连线。

  将Allen Bradley公司出品的1784-PKTX通讯卡安装到上位机上。安装方法如下:

  请确认已将其中一块通讯卡上的地址跳线帽(JP3)拔掉。

  (1)。打开工控机机箱,将1784-PKTX通讯卡插入PCI插槽内,固定螺丝,盖好盖板。

  (2)。启动工控机,系统检测到硬件。如果用户已经安装RSLogix500软件,则系统将自动检测到驱动。如果用户尚未安装RSLogix500软件,可先安装该软件,软件安装完毕后控件,系统将自动为通讯卡安装驱动程序发表论文

  (3)。用DH+485数据线将上位机(工控机)与PLC连接。

  2、使用RSLinx连接A-B PLC的通讯网络。

  运行RSLinx Classic软件。点击菜单中“通信”选项,在下拉列表中选择“配置驱动程序”,弹出如图1所示页面。

  控件

  图1

  在下拉列表中选择1784-KT/KTX(D)/PKTX(D)/PCMK for DH+/DH485 devices后,单击“新增…”按钮,出现“新增RSLINX CLASSIC驱动程序”对话框,选择系统默认值按“确定”出现“配置 1784-PKTX/PKTXD”对话框,在“值”下拉列表中选择PKTX(D)选项,点击“确定”后,RSLinx配置完成。

  (二)、 R232连接方式

  1.自制编程电缆

  控件

  图2 引自SLC500 AND MICROLOGIX1000指令集参考手册

  按照标准电缆1747 CP3的内部接线图(如图2)自制COM口通信电缆也是能够实现上位机与PLC的通信的,此种电缆的优点:造价低廉、使用方便;缺点:PLC状态需手动切换、组成PLC网络繁琐不易实现多PLC资源共享。

  2.使用RSLinx连接A-B PLC的通讯网络

  配置方式与前相同只是在 进入“配置驱动程序”菜单后选择RS-232 DF1 DEVICES选项,然后点击“新增”按钮会出现“新增RSLINXCLASSIC驱动程序”对话框控件,选择系统默认值按“确定”出现如下对话框(如图3):

  控件

  图3

  点击“自动配置”按钮,系统开始对PLC进行自动配置。以上配置完成后点击“确定”按钮并关闭对话框(此时程序回最小化并没有关闭)。

  (三)、 进行DDE服务的配置

  在菜单栏中打开“DDE/OPC”菜单并选择“主题组态”对话框(如图4):

  图4

  从图左侧我们发现了要找的PLC并在右侧显示了“主题列表”中看到程序名。点开“数据采集”栏在“处理器类型”下拉菜单中选择“SLC-503+”项,这一步很重要只有通过它才能正确的加载驱动程序,为通信打下基础(如图5)。

  图5

  同样点开“高级通信”栏在“通信驱动程序”中选择“ABDF1-1 DH485 工作站”项,点击“完成”,这样在RSLinx软件中对A-B PLC的通信配置就完成了。

  四、利用VB开发DDE 客户端

  VB作为Microsoft 公司软件产品的重要一员,理所当然的对Windows操作系统下的DDE技术给予支持。VB为一些控件提供了用于DDE动态数据交换的linktopic、linkitem、linktimeout、linkmode等属性,以及linkrequest、linkpoke、linkexecute、linksend等方法。其中,linktopic、linkitem两项属性分别对应于DDE通讯架构中的主题名和数据项名,linktimeout、linkmode分别表示DDE 客户端与DDE服务器的尝试连接时间和连接模式(数据交换方式),linkmode有Manual、Notify、Automatic三种方式控件,而Automatic方式最为常用,它主要用于和DDE server建立“热连接(hotlink)”,即在DDE服务器数据发生变化时主动发送数据给客户端。linkrequest、linkpoke分别用于DDE 客户端对DDE服务器数据的读写操作。

  (一)、 在VB中实现与A-B PLC的“热连接”

  在Visual Basi建立一个新工程,添加几个label控件,并建立和RSLinx的DDE通讯连接,使其随上一步所设置好的连接的A-B PLC数据“B01主系统”数值的变化而变化。

  其代码如下:

  PrivateSub Form_Load()

  Label1.LinkTopic= "rslinx|" & "B01主系统"

  Label1.LinkItem= "s:42"

  Label1.LinkMode= 1

  Label1.LinkRequest

  Label3.LinkTopic= "rslinx|" & "B01主系统"

  Label3.LinkItem= "s:41"

  Label3.LinkMode= 1

  Label3.LinkRequest

  Label5.LinkTopic= "rslinx|" & "B01主系统"

  Label5.LinkItem= "s:40"

  Label5.LinkMode= 1

  Label5.LinkRequest

  Label10.LinkTopic= "rslinx|" & "B01主系统"

  Label10.LinkItem= "N60:11"

  Label10.LinkMode= 1

  Label10.LinkRequest

  Label12.LinkTopic= "rslinx|" & "B01主系统"

  Label12.LinkItem= "N60:130"

  Label12.LinkMode= 1

  Label12.LinkRequest

  Label14.LinkTopic= "rslinx|" & "B01主系统"

  Label14.LinkItem= "N60:131"

  Label14.LinkMode= 1

  Label14.LinkRequest

  EndSub

  其中,代码中的“rslinx”和“B01主系统”分别表示应用程序名和主题名,“linkmode”值为1表示连接方式为automatic(即“热连接”)方式发表论文。这样当该应用代码被执行时,label的值便随A-B PLC 内存值的变化而变化。具体执行如图6:

  图6

  (二)、在Excel中实现通过DDE方式访问A-BPLC

  首先必须先安装RSLinx创建DDEtopic.比如我们定义一个topic名叫“B01主系统”打开Excel,创建宏命令,编写VBA脚本如何读取和写入数据控件,从而完成与PLC的数据交换。SubStart()DimlngRowAsLongDimvarCycleAsVariantDimvarLoggingAsVariantDimvarResultsAsVariantOnErrorGoToErrorRSIchan=DDEInitiate("RSLinx"," B01主系统")varLogging=DDERequest(RSIchan,"N60/163")varCycle=DDERequest(RSIchan,"N60/161") l/?

  IfvarCycle(1)="1"AndvarLogging(1)="1"ThenlngRow=3IfRange("INDATA!A3")。Value>3ThenlngRow=Range("INDATA!A3")。ValueEndIfForlngRow=lngRowTo65500IfCells(lngRow,1)=""ThenExitForRange("INDATA!A3")。Value=lngRow+1NextRSIchan=DDEInitiate("RSLinx","N1")f810data=DDERequest(RSIchan,"F8:10")f811data=DDERequest(RSIchan,"F8:11")f812data=DDERequest(RSIchan,"F8:12")f816data=DDERequest(RSIchan,"F8:16")f818data=DDERequest(RSIchan,"F8:18")f817data=DDERequest(RSIchan,"F8:17") f820data=DDERequest(RSIchan,"F8:20")f821data=DDERequest(RSIchan,"F8:21")f822data=DDERequest(RSIchan,"F8:22")f823data=DDERequest(RSIchan,"F8:23")f824data=DDERequest(RSIchan,"F8:24") varResults=DDERequest(RSIchan,"F8:25")DDETerminate(RSIchan)Cells(lngRow,1)。Value=f810dataCells(lngRow,2)。Value=f811dataCells(lngRow,3)。Value=f812dataCells(lngRow,4)。Value=f816dataCells(lngRow,5)。Value=f818dataCells(lngRow,6)。Value=f817dataCells(lngRow,7)。Value=f820dataCells(lngRow,8)。Value=f821dataCells(lngRow,9)。Value=f822dataCells(lngRow,10)。Value=f823dataCells(lngRow,11)。Value=f824dataCells(lngRow,13)。Value=Now()EndIfEndSub

  (三)、 在VB中实现调用EXCEL后台数据库

  因为前期已经实现了VB与PLC的通讯可以实时看到数据的状态了,随后又实现了EXCEL与PLC的通讯也可以实时看到数据的状态,但这两种方法都有其局限性:前者可看、可控但因无数据库无法实现数据的存储,后者可看、可查但因无可执行程序无法实现可控。只有二者结合在一起才能扬长避短充分发挥功效。于是在VB中实现调用EXCEL后台数据库这种方式就应运而生了,这种方式即充分发挥了VB可控的一面又实现了EXCEL对数据的强大处理能力可以说上位机真正实现了对PLC可看、可查、可控的功能。VB与EXCEL的连接方法如下: 1、在工程中引用Microsoft Excel类型库:从"工程"菜单中选择"引用"栏; 选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择"确定"。表示在工程中要引用EXCEL类型库。 2、在通用对象的声明过程中定义EXCEL对象: Dim xlApp As Excel.Application Dim xlBook As Excel.WorkBook Dim xlSheet As Excel.Worksheet  3、在程序中操作EXCEL表常用命令: Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象 Set xlBook = xlApp.Workbooks.Open("文件名") '打开已经存在的EXCEL工件簿文件 xlApp.Visible = True '设置EXCEL对象可见(或不可见) Set xlSheet = xlBook.Worksheets("表名") '设置活动工作表 xlSheet.Cells(row, col) =值 '给单元格(row,col)赋值 xlSheet.PrintOut '打印工作表 xlBook.Close (True) '关闭工作簿 xlApp.Quit '结束EXCEL对象 Set xlApp = Nothing '释放xlApp对象 xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏 xlBook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏利用以上命令可以很轻松的实现VB与EXCEL的连接功能在此不再赘述。

  五、 结束语

  VB因其功能强大、操作简洁近几年在诸多领域得到了广泛的应用,尤其因其对DDE技术的完美支持更凸显出在自动控制方面的优势。通过它我们能很方面的实现上位机与PLC的数据通讯,更能与数据库进行完美对接,真正实现了上控机对DX发射机 可看、可查、可控。希望通过此文对广大一线工作人员有所帮助。

  【参考文献】

  [1]范逸之,陈立元。Visual Basic与RS-232串行通信控制[M].北京:清华大学出版社,2002:92-130

  [2]李玉东,李刚。Visual Basic 6.0中文版控件大全[M].电子工业出版社 ,2008:36-64

  [3]ALLEN-BRADLEY.SLC500 ANDMICROLOGIX1000指令集参考手册[M].ALLEN-BRADLEY公司内部资料 2005

  [4]童爱红。Visual Basic 6.0程序员指南[M].清华大学出版社,2008:35-94

特别说明:本站仅协助已授权的杂志社进行在线杂志订阅,非《电讯技术》杂志官网,直投的朋友请联系杂志社。
版权所有 © 2009-2024《电讯技术》编辑部  (权威发表网)   苏ICP备20026650号-8