第十一章通信编程11.1串行通信11.2DataSocket通信技术11.3TCP通信第十一章通信编程第十一章通信编程11.1串行通信早期的仪器、单片机、PLC等均使用串口与计算机进行通信,RS-232协议是一种通用的串行通信总线。目前,RS-232总线仍然是虚拟仪器的构成方式之一。第十一章通信编程GPIBSerialDAQProcessorUnitUnderTestVXIImageAcquisitionMotionControlPXIApplicationSoftwareHardware&DriverSoftware•LabWindows/CVI•LabVIEW虚拟仪器系统构成第十一章通信编程11.1.1串行通信模板及节点LabVIEW共有8个串行通信节点,分别实现串口设置、串口写、串口读、关闭串口及检测串口缓存、中断等功能。模板及图标如下:第十一章通信编程11.1.2串行通信节点的使用方法①初始化串口(SerialPortInit.VI)该节点用于设置串口号、波特率、数据位、停止位、奇偶校验、缓冲区大小及流量控制等参数。第十一章通信编程②串口写(SerialPortWrite.VI)对串口进行写操作,端口设置为:VISAresourcename:设置串口号;writebuffer:写入串口缓冲区的字符。Returncount:返回写入串口的字符数。第十一章通信编程③串口读(SerialPortRead.VI)对串口进行读操作,端口设置为:VISAresourcename:设置串口号;bytecount:读取字符数;Readbuffer:从串口读到的字符;Returncount:返回实际读取字符数。第十一章通信编程④关闭串口(SerialPortClose.VI)对打开的串口进行关闭操作。VISAresourcename:设置串口号;第十一章通信编程⑤串口检测(BytesofSerialPort.VI)检测当前串口输入缓冲区中的字节数。用在Read节点读串口前。第十一章通信编程⑥串口中断(SerialPortBreak.VI)将串口中断至少250ms。第十一章通信编程11.1.3串行通信应用实例例13.1用LabVIEW实现双机串行通讯。本例使用两台计算机进行通讯,一台计算机作为服务器,通过串口向外发送数据,另一台计算机作为客户机,接收由服务器发送过来的数据。两台计算机串口的连线如下图:PIN1PIN2PIN3PIN4PIN5PIN6PIN7PIN8PIN9PIN1PIN2PIN3PIN4PIN5PIN6PIN7PIN8PIN9第十一章通信编程服务器框图程序第十一章通信编程服务器前面板第十一章通信编程客户机框图程序第十一章通信编程客户机前面板第十一章通信编程由一个程序进行串口的读写第十一章通信编程前面板。第十一章通信编程下面是一个通用串口通讯程序的界面。第十一章通信编程11.2DataSocket通信技术DataSocket是NI公司提供的一种网络测控系统开发工具,以实现不同的应用程序和数据源之间的数据共享。DataSocket用类似于Web中的统一资源定位器(URL)定位数据,URL不同的前缀表示了不同的数据类型:FILE-本地文件;HTTP-超文本传输数据;FTP-文件传输协议;OPC-OPC资源;DSTP-DataSocket服务器传输的数据。第十一章通信编程LabVIEW中还提供了以下3个工具:·DataSocketActiveX控件:利用ActiveX容器开发共享数据应用。·DataSocket服务器管理程序:它是一个配置和管理工具,具有负责确定DataSocket服务的最大连接数,设置服务控制等网络功能。·DataSocket服务器:利用DSTP协议在应用程序间交换数据。第十一章通信编程11.2.1DataSocket管理器在LabVIEW安装后,会出现DataSocketSever和DataSocketSevserManager应用程序。第十一章通信编程启动DataSocketSevserManager后对话框如下:第十一章通信编程11.2.2DataSocket服务器启动DataSocketSevser后对话框如下:第十一章通信编程11.2.3DataSocket子模板介绍DataSocket子模板调用路径为FunctionsDataCommunicationDataSocket第十一章通信编程①打开一个连接·URL:欲访问的网上用户地址。·mode:网络中用户连接的模式。第十一章通信编程②向打开的连接写数据·Data:表示向DataSocket服务器写入的数据。第十一章通信编程③向打开的连接读数据·Data:表示从DataSocket服务器读出的数据。第十一章通信编程④关闭打开的连接第十一章通信编程⑤选择Datasocket的URL显示一个对话框供用户选择URL。第十一章通信编程DataSocket的前面板对象链接是一种不需要任何编程的网络数据传输方法。通过DataSocket将两个程序的前面板对象链接起来,一个发送数据,另一个接收数据,就可以实现对程序的远程控制、数据的远程采集等多种功能。建立前面板对象链接的方法如下:·在需链接的前面板对象上单击右键,选择弹出菜单中DataOperationsDataSocketConnection,如下图:11.2.4使用DataSocket链接前面板对象第十一章通信编程第十一章通信编程弹出以下对话框:ConnectTo:不论发布数据还是接收数据的机器中,都填写发布数据机器的URL。ConnectionsType:发布数据选择Publish;接收数据选择Subscribe。第十一章通信编程选中Enable选项。完成设置后,前面板对象右上角出现一个链接指示灯。运行后指示灯亮。注意:在上述程序运行前,必须先从Windows程序菜单中打开DataSocketSever。第十一章通信编程发送数据前面板及框图程序:第十一章通信编程接收数据前面板及框图程序:第十一章通信编程11.2.5使用DataSocket传输数据①向DataSocket写数据向指定的URL:dstp://202.197.33.63/dssine写数据。数据是一个周期的正弦波,其幅值可用amplitude调节。用errorout作为while循环结束条件,即出错即停止。第十一章通信编程向DataSocket写数据的前面板:第十一章通信编程②从DataSocket读数据从指定的URL:dstp://202.197.33.63/dssine中读数据。其幅值受写DataSocket中amplitude的调节。用errorout作为while循环结束条件。另外用TickCount测试循环时间。第十一章通信编程从DataSocket读数据的前面板:第十一章通信编程注意:在上述程序运行前,必须先从Windows程序菜单中打开DataSocketSever。第十一章通信编程11.2.6基于DataSocket的OPC数据传输LabVIEW中DataSocket提供了OPC数据传输功能。OPC(OLEforProcessControl)借用Microsoft的OLE和COM/DCOM技术,为异构设备、软件的通讯提供了有效的解决方法,是实现控制系统现场设备级与过程管理级信息交互和控制系统开放性的关键技术。第十一章通信编程LabVIEW中可通过DataSocketVI来支持OPC应用。在LabVIEW中同一个OPC服务器建立连接,通过调用Open.VI节点实现。OPCURL的基本结构为:opc://主机名//OPC服务器名/数据项目下面以SLC500PLC为例,介绍LabVIEW与PLC基于DataSocket的数据通信方法。第十一章通信编程第十一章通信编程第十一章通信编程第十一章通信编程①RSLinx与其它软件的通信RSLinx通讯软件是用于A-B可编程控制器的服务器软件,为A-B的PLC处理器与Rockwell公司及其他公司(如微软)的许多软件产品提供了通信连接,如下图。DDE或OPC方式连接RSlogixRSLinxMicrosoftRSView32直接驱动连接其它应用软件第十一章通信编程②RSLinxOPC服务器的设置在使用RSLinxOPC服务器时,先要进行配置和组态。Step1配置通信设备。在启动RSLinx后,点击CommunicationsConfigureDrivers,添加一个新设备(driver),选择“1784-KT/KTX(D)/PKTX(O)/PCMKforDH+/DH-485devices”,并确定新添加的设备无错误,设备状态显示“正在运行”(Running)。第十一章通信编程第十一章通信编程Step2建立OPC主题(Topic)。在RSWho对话框下,找到相应的PLC,右击PLC图标,选择“ConfigureNewDDE/OPCTopic”,建立一个Topic。第十一章通信编程Step3测试OPC服务器。应用OPCTools中的OPCTestClient可对Step2中建立的MyTopic主题进行测试。第十一章通信编程③OPC读PLC数据在设置好RSLinxOPC服务器后,LabVIEW通过DataSocket的OPC层与RSLinxOPC服务器进行通信。下图是进行读操作的数据流图。第十一章通信编程第十一章通信编程从图中可以看出读数据流图由个4个功能块组成:a)构建读数据项目数组。对要读取的OPC服务器数据项目的URL,用数组的形式表示。b)建立与读数据项目的连接。c)项目数据更新与显示。d)关闭与项目的连接。第十一章通信编程④写PLC数据LabVIEW通过RSLinxOPC服务器对SLC500PLC进行写操作的数据流图如下。第十一章通信编程系统前面板如下:第十一章通信编程11.3TCP通信TCP/IP协议是Internet最基本的协议,它由低层的IP协议和TCP协议组成。LabVIEW中,可以采用TCP/IP节点来实现局域网通讯。11.3.1TCP/IP节点介绍LabVIEW中,TCP/IP节点在FunctionsDataCommunicationProtocolsTCP子模板中。第十一章通信编程第十一章通信编程①TCPListen.VI创建一个听着,并在指定的端口等待客户端的TCP连接请求。port:端口号;connectionID:TCP连接的标识号;remoteaddress:显示和TCP连接的远程计算机的IP地址;注意:该节点只能应用于服务器。第十一章通信编程②TCPOpen.VI用指定的计算机和端口打开以TCP连接。address:远端服务器地址;remoteport:用户欲创建的TCP连接的端口号;注意:该节点只能应用于客户机服务器。第十一章通信编程③TCPRead.VI从指定的TCP连接中读数据。mode:读数据模式;bytestoread:从指定的TCP端口中读取的最多的字节数;dataout:从TCP端口读取的数据;第十一章通信编程④TCPWrite.VI向打开的TCP端口写入数据。Datain:向TCP端口要写的数据;第十一章通信编程⑤TCPClose.VI关闭指定的TCP端口。⑥TCPCreateListener.VI创建一个TCP连接的听者。第十一章通信编程⑦TCPWaitonListener.VI在指定的端口上等待TCP连接请求。⑧IPtoString.VI及StringtoIP第十一章通信编程11.3.2基于C/S模式的网络通讯采用C/S模式是LabVIEW进行网络通讯的最基本结构。在本例中由服务器产生一组随机波形,通过局域网送至客户机进行显示。通讯流程如下。服务器程序初始化产生波形连接服务器客户机程序关闭连接写出数据读入数据显示波形关闭连接退出循环退出循环NNYY建立连接传送数据第十一章通信编程①服务器程序设计第十一章通信编程②客户机程序设计前面板如下:第十一章通信编程客户机框图程序如下:框图程序中,打开TCP函数按照给定的IP地址和端