为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > labview串口

labview串口

2011-10-16 31页 pdf 2MB 55阅读

用户头像

is_618213

暂无简介

举报
labview串口 第第 1133章章 LLaabbVVIIEEWW串串口口通通信信程程序序设设计计 以 PC 作为上位机,以调制解调器(Modem)、串行打印机、各种监控模块、PLC、摄像 头云台、数控机床、单片机及智能设备等作为下位机广泛应用于测控领域。本章举几个典型 实例,详细介绍利用 LabVIEW 实现 PC 与各种下位机设备串口通信的程序设计方法。 13.1 PC与 PC串口通信 当两台串口设备通信距离较近时,可以直接连接,最简单的情况,在通信中只需三根线 (发送线、接收线、信号地线)便可实现全双工异步串行...
labview串口
第第 1133章章 LLaabbVVIIEEWW串串口口通通信信程程序序设设计计 以 PC 作为上位机,以调制解调器(Modem)、串行打印机、各种监控模块、PLC、摄像 头云台、数控机床、单片机及智能设备等作为下位机广泛应用于测控领域。本章举几个典型 实例,详细介绍利用 LabVIEW 实现 PC 与各种下位机设备串口通信的程序设计方法。 13.1 PC与 PC串口通信 当两台串口设备通信距离较近时,可以直接连接,最简单的情况,在通信中只需三根线 (发送线、接收线、信号地线)便可实现全双工异步串行通信。 本设计通过两台 PC 串口三线连接,介绍了串口通信的基本编程方法。 13.1.1 PC与 PC串口通信硬件线路 当两台 RS-232 串口设备通信距离较近时(<15m),可以用电缆线直接将两台设备的 RS-232 端口连接;若通信距离较远(>15m)时,需附加调制解调器(Modem)。 在 RS-232 的应用中,很少严格按照 RS-232 标准。其主要原因是因为许多定义的信号在 大多数的应用中并没有用上。在许多应用中,例如 Modem,只用了 9 个信号(两条数据线、 6 条控制线、一条地线);在其他一些应用中,可能只需要 5 个信号(两条数据线、两条握手 线、一条地线);还有一些应用,可能只需要数据线,而不需要握手线,即只需要 3 个信号线。 因为在控制领域,在近距离通信时常采用 RS-232,所以这里只对近距离通信的线路连接进行 讨论。 当通信距离较近时,通信双方不需要 Modem,可以直接连接,这种情况下,只需使用少 数几根信号线。最简单的情况,在通信中根本不需要 RS-232C 的控制联络信号,只需三根线 (发送线、接收线、信号地线)便可实现全双工异步串行通信。 在实际使用中常使用串口通信线将两个串口设备连接起来。串口线的制作方法非常简 单:准备两个 9 针的串口接线端子(因为计算机上的串口为公头,因此连接线为母头),准备 3 根导线(最好采用 3 芯屏蔽线),按图 13-1 所示将导线焊接到接线端子上。 1 2 3 45 6 7 8 9 1 2 3 45 6 7 8 9 图 13-1 串口通信线的制作 第 13 章 LabVIEW 串口通信程序设计 – 283 – 图 13-2 所示中的 2 号接收脚与 3 号发送脚交叉连接是因为在直连方式时,把通信双方都 当作数据终端设备看待,双方都可发也可收。在这种方式下,通信双方的任何一方,只要请 求发送 RTS 有效和数据终端准备好 DTR 有效就能开始发送和接收。 COM1 串口线 PC机A PC机B COM1 图 13-2 PC 与 PC 串口通信线路 在计算机通电前,按图 13-2 所示将两台 PC 的 COM1 口用串口线连接起来。 连接串口线时,计算机严禁通电,否则极易烧毁串口。 13.1.2 设计任务 利用 LabVIEW 编写程序实现 PC 与 PC 串口通信。 任务要求如下。 两台计算机互发字符并自动接收,如一台计算机输入字符串“收到信息请回字符 abc123”,单击“发送字符”命令,另一台计算机若收到,就输入字符串“收到,abc123”, 单击“发送字符”命令,信息返回到第一组的计算机。 实际上就是编写一个简单的双机聊天程序。 13.1.3 任务实现 1.建立新 VI程序 启动 NI LabVIEW 程序,选择新建(New)选项中的 VI 项,建立一个新 VI 程序。 2.程序前面板设计  在前面板设计区空白处单击鼠标右键,显示控件选板(Controls)。 (1)添加一个字符串输入控件:控件(Controls)→新式(Modern)→字符串与路径(String & Path)→字符串输入控件(String Control),将标签改为“发送区:”。 (2)添加一个字符串显示控件:控件(Controls)→新式(Modern)→字符串与路径(String & Path)→ 字符串显示控件(String Indicator),将标签改为“接收区:”。 (3)添加一个串口资源检测控件:控件(Controls)→新式(Modern)→ I/O →VISA 资 源名称(VISA resource name);单击控件箭头,选择串口号,如 COM1 或 ASRL1:。 (4)添加一个确定(OK)按钮控件:控件(Controls)→新式(Modern)→布尔(Boolean)→ 确定按钮(OK Butoon),将标题改为“发送字符”。 (5)添加一个停止(Stop)按钮控件:控件(Controls)→新式(Modern)→布尔(Boolean)→ LabVIEW 虚拟仪器数据采集与串口通信测控应用实战 – 284 – 停止按钮(Stop Butoon),将标题改为“关闭程序”。 设计的程序前面板,如图 13-3 所示。 3.框图程序设计——添加函数  进入框图程序设计界面,在设计区的空白处单击 鼠标右键,显示函数选板(Functions)。添加的所有函数 及其布置如图 13-4 所示。 详细步骤介绍如下。 (1)添加一个配置串口函数:编程(Programming)→ 仪器 I/O(Instrument I/O)→串口(Serial)→VISA 配置串口(VISA Configure Serial Port)。 图 13-4 框图程序函数添加与布置 (2)添加 4 个数值常量:编程(Programming)→数值(Numeric)→ 数值常量(数值常量 (Numeric Constant),值分别为 9600(波特率)、8(数据位)、0(校验位,无)、1(停止位)。 (3)添加两个关闭串口函数:编程(Programming)→仪器 I/O(Instrument I/O)→串口 (Serial)→VISA 关闭(VISA Close)。 (4)添加一个循环结构:编程(Programming)→结构(Structures)→ While 循环(While Loop)。添加理由:随时监测串口接收缓冲区的数据。 以下添加的函数或结构放置在 While 循环结构框架中。 (5)添加一个时钟函数:编程(Programming)→ 定时(Timing)→ 等待下一个整数倍 毫秒(Wait Until Next ms Multiple)。添加理由:以一定的周期监测串口接收缓冲区的数据。 (6)添加一个数值常量:编程(Programming)→数值(Numeric)→ 数值常量(Numeric Constant),将值改为 500(时钟频率值)。 (7)添加一个 VISA 串口字节数函数:编程(Programming)→仪器 I/O(Instrument I/O)→ 串口(Serial)→ VISA 串口字节数(VISA Bytes at Serial Port),标签为“Property Node”。 (8)添加一个数值常量:编程(Programming)→数值(Numeric)→数值常量(Numeric Constant),将值为 0(比较值)。 (9)添加一个比较函数:编程(Programming)→ 比较(Comparison)→ 不等于?(Not Equal ?)。添加理由:只有当串口接收缓冲区的数据个数不等于 0 时,才将数据读入到接收区。 (10)添加一个布尔函数:编程(Programming)→布尔(Boolean)→非(Not)函数。 添加理由:当关闭程序时,将关闭按钮真(True)变为假(False),退出循环。如果将循 图 13-3 程序前面板 第 13 章 LabVIEW 串口通信程序设计 – 285 – 环结构的条件端子 设置为“真时停止(Stop if True)” ,则不需要添加非(Not)函数。 (11)添加两个条件结构:编程(Programming)→结构(Structures)→ 条件结构(Case Structure)。添加理由:发送字符时,需要单击按钮“发送字符”,因此需要判断是否单击了 发送按钮;接收数据时,需要判断串口接收缓冲区的数据个数是否不为 0。 (12)添加一个串口写入函数:编程(Programming)→仪器 I/O(Instrument I/O)→串 口(Serial)→VISA 写入(VISA Write),并拖入条件结构(上)的真(True)选项框架中。 (13)添加一个串口读取函数:编程(Programming)→ 仪器 I/O(Instrument I/O)→ 串 口(Serial)→VISA 读取(VISA Read),并拖入条件结构(下)的真(True)选项框架中。 (14)将字符输入控件图标(标签为“发送区:”)拖入条件结构(上)的真(True)选项框 架中,将字符显示控件图标(标签为“接收区:”)拖入条件结构(下)的真(True)选项框架中。 (15)分别将确定(OK)按钮控件图标(标签为“确定按钮(OK Button)”)、停止(Stop) 按钮控件图标(标签为“停止按钮(Stop Button)”)拖入循环结构框架中。 4.框图程序设计——连线 使用连线工具,将所有函数连接起来,如图 13-5 所示。 图 13-5 框图程序连线 (1)将 VISA 资源名称(VISA resource name)函数的输出端口分别与串口配置(VISA Configure Serial Port)函数、串口字节数(VISA Bytes at Serial Port)函数、串口写入(VISA Write) 函数、串口读取(VISA Read)函数的输入端口 VISA 资源名称(VISA resource name)相连。 (2)将数值常量 9600、8、0、1 分别与串口配置(VISA Configure Serial Port)函数的输 入端口波特率(baud rate)、数据比特(data bits)、奇偶(parity)、停止位(stop bits)相连。 (3)将数值常量(值为 500)与等待下一个整数倍毫秒(Wait Until Next ms Multiple)函 数的输入端口毫秒倍数(millisecond multiple)相连。 (4)将确定按钮图标“OK Button”与条件结构(上)的选择端子?相连。 (5)将串口字节数(VISA Bytes at Serial Port)函数的输出端口 Number of bytes at Serial port 与不等于?(Not Equal ?)函数的输入端口 x 相连。 将串口字节数(VISA Bytes at Serial Port)函数的输出端口 Number of bytes at Serial port 与串口读取(VISA Read)函数的输入端口字节总数(byte count)相连。 (6)将数值常量(值为 0)与不等于?(Not Equal ?)函数的输入端口 y 相连。 (7)将不等于?(Not Equal ?)函数的输出端口 x != y? 与条件结构(下)的选择端子?相连。 (8)在条件结构(上)中将字符输入控件图标(标签为“发送区:”)与串口写入(VISA LabVIEW 虚拟仪器数据采集与串口通信测控应用实战 – 286 – Write)函数的输入端口写入缓冲区(write buffer)相连。 (9)在条件结构(下)中将串口读取(VISA Read)函数的输出端口读取缓冲区(read buffer) 与字符显示控件图标(标签为“接收区:”)相连。 (10)将停止按钮(Stop Button)函数与非(Not)函数的输入端口 x 相连。 (11)将非(Not)函数的输出端口.not. x ? 与循环结构的条件端子 相连。 (12)在条件结构(上)中将串口写入(VISA Write)函数的输出端口 VISA 资源名称输 出(VISA resource name out)与串口关闭(VISA Close)函数(上)的输入端口 VISA 资源名 称(VISA resource name)相连。 (13)在条件结构(下)中将串口读取(VISA Read)函数的输出端口 VISA 资源名称输 出与关闭串口函数 VISA Close(下)的输入端口 VISA 资源名称相连。 (14)进入两个条件结构的假(False)选项,将 VISA 资源名称函数的输出端口分别与串 口关闭(VISA Close)函数(上、下)的输入端口 VISA 资源名称相连,如图 13-6 所示。 5.运行程序 进入程序前面板,保存设计好的 VI 程序。单击快捷工具栏“运行(Run)”按钮,运行 程序。 两台计算机同时运行本程序。 在一台计算机程序窗体中发送字符区输入要发送的字符,比如“收到信息请回字符 abc123”,单击“发送字符”按钮,发送区的字符串通过 COM1 口发送出去。 如果联网通信的另一台计算机程序收到字符,则返回字符串,如“收到,abc123”;如果 通信正常该字符串将显示在接收区中。 程序运行界面如图 13-7 所示。 图 13-6 框图程序连线 图 13-7 程序运行界面 6.单 PC双串口互通信程序 如果只有一台计算机且具有两个串口,那么可以通过串口线将两个串口直接连接起来, 如图 13-8 所示,编写程序实现双串口互通信。 图 13-9 是单 PC 双串口互通信程序的前面板。 图 13-10 是单 PC 双串口互通信程序的后面板。 第 13 章 LabVIEW 串口通信程序设计 – 287 – 1 2 3 45 6 7 8 9 5 4 3 2 1 6 7 8 9 1 2 3 5 6 7 8 9 COM1 COM2 (a) (b) 4 图 13-8 双串口直接连接 图 13-9 单 PC 双串口互通信程序的前面板 图 13-10 单 PC 双串口互通信程序的后面板 13.2 PC与单片机串口通信程序设计 目前,在许多单片机应用系统中,上、下位机分工明确,作为下位机核心器件的单片机 (a) (b) LabVIEW 虚拟仪器数据采集与串口通信测控应用实战 – 288 – 往往只负责数据的采集和通信,而上位机通常以基于图形界面的 Windows 系统为操作平台。 为便于查询和保存数据,还需要数据库的支持,这种应用的核 心是数据通信,它包括单片机和上位机之间、客户端和服务器 之间以及客户端和客户端之间的通信,而单片机和上位机之间 数据通信则是整个系统的基础。 单片机和 PC 的通信是通过单片机的串口和 PC 串口之间 的硬件连接实现的。 图 13-11 所示是本设计使用的单片机实验板。有关单片机实 验板的详细信息请查询电子开发网 http://www.dzkfw. com/。 13.2.1 PC与单片机串口通信程序设计硬件线路 如图 13-12 所示,数据通信的硬件上采用 3 线制,将单片机和 PC 串口的 3 个引脚(RXD、 TXD、GND)分别连在一起,即将 PC 和单 片机的发送数据线 TXD 与接收数据 RXD 交叉连接,两者的地线 GND 直接相连,而 其他信号线,如握手信号线均不用,采用软 件握手的方式,这样既可以实现预定的任务 又可以简化电路设计。 但由于单片机的 TTL 逻辑电平和 RS-232C 的电气特性完全不同,RS-232C 的逻辑 0 电平规定为+3V~+15V 之间,逻辑 1 电平 为−3V~−15V 之间,因此在将 PC 和单片机的 RXD 和 TXD 交叉连接时必须进行电平转换, 这里使用的是 MAX232 电平转换芯片。 单片机系统有 LED 显示器模块、继电器输出模块、蜂鸣器模块等。 13.2.2 PC与单片机串口通信程序设计任务 利用 Keil C51 和 LabVIEW 编写程序实现 PC 与单片机串口通信。 任务要求有以下几方面。 1.设计任务一 PC 通过串行口将数字(00,01,02,03...,FF,十六进制)发送给单片机,单片机收到 后回传这个数字,PC 接收到回传数据后显示出来,若发送的数据和接收到的数据相等,则串 行通信正确,否则有错误。启始符是数字 00,结束符是数字 FF。 2.设计任务二 (1)测试通信状态。 先在文本框中输入字符串“Hello”,单击“测试”按钮,将字符串“Hello”发送到单片机, 若 PC 与单片机通信正常,在 PC 程序的文本框中显示字符串“OK!”,否则显示字符串“ERROR!”。 (2)循环计数。 单击“开始”按钮,文本框中数字从 0 开始累加,0、1、2、3…,并将此数发送到单片机 图 13-11 单片机实验板 COM1 PC机 GND TXD RXD AT89C51 GND RXD TXDTOUT RIN TIN ROUT MAX232 图 13-12 PC 与单片机串口通信线路 PC 第 13 章 LabVIEW 串口通信程序设计 – 289 – 的显示器上显示。当累加到 10 时,回到 0 重新开始累加,依次循环。任何时候,单击“停止” 按钮,PC 程序中和单片机显示器都停止累加;再单击“开始”按钮,接着停下的数继续累加。 (3)控制指示灯。 在单片机继电器接线端子的两个通道上分别接上两个指示灯,在 PC 程序画面上选择指 示灯号,如 1 号灯,单击画面“打开”按钮,单片机上 1 号灯亮,同时蜂鸣器响;单击画面 “关闭”按钮,1 号灯灭,蜂鸣器停止响,同样控制 2 号灯的亮灭(蜂鸣器同时动作)。 单片机和 PC 通信,在程序设计上涉及两个部分的内容。 一是单片机的 C51 程序,二是 PC 的串口通信程序和界面的编制。 13.2.3 任务实现 13.2.3.1 利用 Keil C51 实现单片机与 PC 串口通信任务一 Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体, 支持汇编、PLM 语言和 C 语言的程序设计,界面友好,易学易用。 启动 Keil C51,出现编辑界面。 1.建立一个新 单击 Project 菜单,在弹出的下拉菜单中选中 New Project 选项,出现 Create New Project 对话框,然后选择要保存的路径、文件夹,输入工程文件的名字,如 pc_com(后缀名默认), 单击“保存”按钮。 这时会弹出一个 “Select Device for Target ‘Target 1’” 对话框,要求用户选择单片机的型号, 可以根据使用的单片机来选择,Keil C51 几乎支持所有的 51 核的单片机。这里选择 Atmel 的 89C51。选择 89C51 之后,右边一栏是对这个单片机的基本的说明,然后单击“确定”按钮。 2.编写程序 单击“File”菜单,再在下拉菜单中单击“New”选项。此时光标在编辑窗口里闪烁,这 时可以键入用户的应用程序了,但建议首先保存该空白的文件。 单击菜单上的“File”项,在下拉菜单中选中“Save As”选项,在“文件名”栏右侧的编辑框 中键入欲使用的文件名,同时,必须键入正确的扩展名,如 pc_com.c,然后单击“保存”按钮。 如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。 回到编辑界面后,单击“Target 1”前面的“+”号,再在“Source Group 1”上单击鼠 标右键,弹出快捷菜单,然后单击“Add File to Group‘Source Group 1’”。 选中 pc_com.c,然后单击“Add ”按钮,再单击“Close ”按钮。此时注意到“Source Group 1”文件夹中多了一个子项“pc_com.c”。子项的多少与所增加的源程序的多少相同。 现在,请输入 C 语言源程序。 在输入程序时,读者可以发现事先保存待编辑的文件的好处,即 Keil C51 会自动识别关 键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。 LabVIEW 虚拟仪器数据采集与串口通信测控应用实战 – 290 – 3.编译程序 单击“Project”菜单,在下拉菜单中选择“Options for Target‘Target 1’”选项,出现对 话框;选择 Output 选项卡,选中“Create HEX Files”项,单击“确定”按钮。 再单击“Project”菜单,在下拉菜单中选择“Built Target”选项(或者使用快捷键 F7), 进行编译。若有错误会在 output 窗口提示,可根据此提示,找出错误并修改,直至编译通过, 如图 13-13 所示。 图 13-13 Keil C51 编译界面 至此,用 Keil C51 上做了一个完整工程,其中,生成一个编程器烧写文件 pc_com.hex。 4.烧录程序 将 AT89C51 芯片安装在编程器插座上,运行编程器程序。 选择单片机芯片类型 AT89C51,读入 Intel Hex 文件 pc_com.hex,执行自动编程指令, 将 pc_com.hex 文件烧录入 AT89C51 芯片中。 将烧录好的 AT89C51 芯片安装到单片机实验板上,就可以用串口调试助手程序对它进行 测试了。 以下是完成单片机与 PC 串口通信任务 1 的 C51 参考程序: # pragma db code # include # define uchar unsigned char void rece(void); void init(void); uchar re[17]; /*主程序*/ void main(void) 第 13 章 LabVIEW 串口通信程序设计 – 291 – { uchar temp; init(); do{ while(RI==0); temp=SBUF; if(temp==0x00) {rece();} else break; }while(1); } /*串口初始化*/ void init(void) { TMOD=0x20; //定时器 1--方式 2 PCON=0x80; //电源控制 SCON=0x50; //方式 1 TL1=0xF3; TH1=0xF3; //22.1184MHz 晶振,波特率为 4800 0xf3 9600 0xfa 19200 0xfd TR1=1; } /*接收返回数据*/ void rece(void) { char i; i=0; do{while(RI==0); re[i]=SBUF; RI=0; SBUF=re[i]; while(TI==0); TI=0; i++; }while(re[i-1]!=255); } 13.2.3.2 利用 LabVIEW 实现 PC 与单片机串口通信任务一 1.建立新 VI程序 启动 NI LabVIEW 程序,选择新建(New)选项中的 VI 项,建立一个新 VI 程序。 LabVIEW 虚拟仪器数据采集与串口通信测控应用实战 – 292 – 2.程序前面板设计  在前面板设计区空白处单击鼠标右键,显示控件选板(Controls)。 (1)添加一个字符串输入控件:控件(Controls)→新式(Modern)→字符串与路径(String & Path)→ 字符串输入控件(String Control),将标签改为“发送数据(十六进制)”,在该 控件上单击鼠标右键,在弹出的快捷菜单中选择“十六进制显示(Hex Display)”。 (2)添加一个字符串显示控件:控件(Controls)→新式(Modern)→字符串与路径(String & Path)→字符串显示控件(String Indicator),将标签改为“返回数据(十六进制)”,在该 控件上单击鼠标右键,在弹出的快捷菜单中选择“十六进制显示(Hex Display)”。 (3)添加一个字符显示控件:控件(Controls)→新式(Modern)→字符串与路径(String & Path)→字符串显示控件(String Indicator),将标签改为“通信状态”。 (4)添加一个串口资源检测控件:控件(Controls)→新式(Modern)→ I/O → VISA 资 源名称(VISA resource name);单击控件箭头,选择串口号,如 ASRL1:或 COM1。 (5)添加一个确定按钮控件:控件(Controls)→新 式(Modern)→布尔(Boolean)→确定按钮(OK Butoon), 将标题改为“发送”。 (6)添加一个停止按钮控件:控件(Controls)→新 式(Modern)→布尔(Boolean)→停止按钮(Stop Butoon), 将标题改为“关闭”。 设计的程序前面板如图 13-14 所示。 3.框图程序设计——添加函数与连线  进入框图程序设计界面,在设计区的空白处单击鼠标右键,显示函数选板(Functions)。 (1)添加一个配置串口函数:编程(Programming)→ 仪器 I/O(Instrument I/O) → 串 口(Serial)→ VISA 配置串口(VISA Configure Serial Port)。 (2)添加 4 个数值常量:编程(Programming)→ 数值(Numeric) → 数值常量(Numeric Constant),值分别为 4800(波特率)、8(数据位)、0(校验位,无)、1(停止位)。 (3)添加一个 While 循环结构:编程(Programming)→ 结构(Structures) → While 循 环(While Loop)。 (4)添加一个关闭串口函数:编程(Programming)→ 仪器 I/O(Instrument I/O) → 串 口(Serial)→ VISA 关闭(VISA Close)。 (5)在 While 循环结构中添加一个条件结构:编程(Programming)→ 结构(Structures)→ 条件结构(Case Structure)。 (6)在条件结构中添加一个顺序结构:编程(Programming)→ 结构(Structures) → 层叠式顺序结构(Stacked Sequence Structure)。 将其帧(Frame)设置为 4 个(序号 0-3)。设置方法:选中 Stacked Sequence Structures 上边框,单击鼠标右键,执行在后面添加帧(Add Frame After)选项 3 次。 (7)在顺序结构的 Frame 0 中添加一个串口写入函数:编程(Programming)→ 仪器 I/O (Instrument I/O)→串口(Serial)→ VISA 写入(VISA Write)。 (8)将控件“发送数据(十六进制)”的图标拖入顺序结构的 Frame 0 中,分别将确定按 图 13-14 程序前面板 第 13 章 LabVIEW 串口通信程序设计 – 293 – 钮(OK Button)、停止按钮(Stop Buffon) 的图标拖入循环结构中。 (9)将 VISA 资源名称(VISA resource name)函数的输出端口分别与串口配置(VISA Configure Serial Port)函数、串口写入(VISA Write)函数(在顺序结构 Frame 0 中)、串口 关闭(VISA Close)函数的输入端口 VISA 资源名称(VISA resource name)相连。 (10)将数值常量 4800、8、0、1 分别与 VISA 配置串口(VISA Configure Serial Port)函 数的输入端口波特率(baud rate)、数据位(data bits)、奇偶(parity)、停止位(stop bits)相连。 (11)右键选择循环结构的条件端子 ,设置为“真时停止(Stop if True)”,图标变为 。 将停止按钮(Stop Buffon)与循环结构的条件端子 相连。 (12)将确定按钮(OK Button)与条件结构的选择端子?相连。 (13)将函数“发送数据(十六进制)”与串口写入(VISA Write)函数的输入端口写入 缓冲区(write buffer)相连。 连接好的框图程序如图 13-15 所示。 (14)在顺序结构的 Frame 1 中添加一个时钟函数:编程(Programming)→定时 (Timing)→ 等待下一个整数倍毫秒(Wait Until Next ms Multiple)。 (15)在顺序结构的 Frame 1 中添加一个数值常量:编程(Programming)→数值 (Numeric)→ 数值常量(Numeric Constant),将值改为 200(时钟频率值)。 (16)在顺序结构的 Frame 1 中将数值常量(值为 200)与等待下一个整数倍毫秒(Wait Until Next ms Multiple)函数的输入端口毫秒倍数(millisecond multiple)相连。 连接好的框图程序如图 13-16 所示。 图 13-15 框图程序连线 1 图 13-16 框图程序连线 2 (17)在顺序结构的 Frame 2 中,添加一个串口字节数函数:编程(Programming) → 仪 器 I/O(Instrument I/O)→串口(Serial)→ VISA 串口字节数(VISA Bytes at Serial Port),标 签为“Property Node”。 (18)在顺序结构的 Frame 2 中,添加一个串口读取函数:编程(Programming)→ 仪器 I/O(Instrument I/O)→串口(Serial)→ VISA 读取(VISA Read)。 (19)将控件“返回数据(十六进制)”的图标拖入顺序结构的 Frame 2 中。 (20)将 VISA 串口字节数(VISA Bytes at Serial Port)函数的输出端口 VISA 资源名称 (VISA resource name)与 VISA 读取(VISA Read)函数的输入端口 VISA 资源名称(VISA resource name)相连。 (21)将 VISA 串口字节数(VISA Bytes at Serial Port)函数的输出端口 Number of bytes at Serial port 与串口读取(VISA Read)函数的输入端口字节总数(byte count)相连。 (22)将 VISA 读取(VISA Read)函数的输出端口读取缓冲区(read buffer)与控件“返 LabVIEW 虚拟仪器数据采集与串口通信测控应用实战 – 294 – 回数据(十六进制)”的输入端口相连。 连接好的框图程序如图 13-17 所示。 图 13-17 框图程序连线 3 (23)在顺序结构的 Frame 3 中,添加两个局部变量:编程(Programming)→ 结构 (Structures)→局部变量(Local Variable)。 选择局部变量,单击鼠标右键,在弹出的快捷菜单的(Select Item)选项下,为局部变 量分别选择对象:“返回数据(十六进制)”和“发送数据(十六进制)”,将其读写属性设置 为“转换为读取(Change To Read)”。 (24)在顺序结构的 Frame 3 中,添加一个比较函数:编程(Programming)→比较 (Comparison)→等于?(Equal ?)。 (25)在顺序结构的 Frame 3 中,添加一个条件结构:编程(Programming)→ 结构 (Structures)→条件结构(Case Structure)。 (26)将局部变量“返回数据(十六进制)”和“发送数据(十六进制)”分别与比较函 数等于?(Equal ?)的输入端口 x 和 y 相连。 (27)将比较函数等于?(Equal ?)的输出端口 x=y?与条件结构的选择端子?相连。 (28)在条件结构的真(True)选项中,添加一个字符串常量:编程(Programming)→ 字 符串(String)→ 字符串常量(String Constant),将其值改为“通信正常!”。 (29)将控件“通信状态”拖入条件结构中。 (30)将字符串常量“通信正常!”与控件“通信状态”的输入端口相连。 (31)在条件结构的假(False)选项中,添加一个字符串常量,将其值改为“通信异常!”。 (32)在条件结构的假(False)选项中,添加一个局部变量,为局部变量选择对象“通 信状态”,属性默认为:“写”。 (33)将字符串常量“通信异常!”与局部变量“通信状态”相连。 连接好的框图程序如图 13-18 所示。 图 13-18 框图程序连线 4 第 13 章 LabVIEW 串口通信程序设计 – 295 – 4.运行程序 进入程序前面板,保存设计好的 VI 程序。单击快捷工具栏中的“运行(Run)”按钮, 运行程序。程序运行界面如图 13-19 所示。 在“发送数据”框中输入两位的十六进制数字(00, 01,02,03...,FF),单击“发送”按钮,将数据发送 给单片机;单片机收到后回传这个数字,PC 接收到回 传数据后在“返回数据”框中显示出来(十六进制), 若发送的数据和接收到的数据相等,则在“通信状态” 框中显示“通信正常!”,否则显示“通信异常!”。 当发送“FF”后,要想继续发送数据,必须先发送“00”。 13.2.3.3 利用 Keil C51 实现单片机与 PC 串口通信任务二 。。。。。。 } 13.2.3.4 利用 LabVIEW 实现 PC 与单片机串口通信任务二 。。。。。。 13.3 PC与智能仪器串口通信案例 目前仪器仪表的智能化程度越来越高,大量的智能仪器都配备了 RS-232 通信接口,并提 供了相应的通信协议,能够将测试、采集的数据传输给计算机等设备,以便进行大量数据的储 存、处理、查询和分析。通常计算机(PC)或工控机(IPC)是智 能仪器上位机的最佳选择,因为 PC 或 IPC 不仅能解决智能仪器(作 为下位机)所不能解决的问题,如数值运算、曲线显示、数据查询、 报表打印等;而且具有丰富和强大的软件开发工具环境。 图 13-23 是 XMT-3000A 型智能仪器示意图(详细信息请查询 网站 http://www.njcy.com/)。 13.3.1 PC与智能仪器串口通信硬件线路 1.线路说明 XMT-3000A 智能仪器采用先进的微电脑芯片、专家 PID 控制算法,具备高准确度的自 整定功能,并可以设置出多种报警方式。 图 13-19 程序运行界面 图 13-23 智能仪器示意图 LabVIEW 虚拟仪器数据采集与串口通信测控应用实战 – 296 – XMT-3000A 智能仪表有多种输入功能,一台仪表可以接热电偶(K、S、Wr、E、J、T、 B、N)、热电阻(Pt100、Cu50)、电压(0~5V、1V~5V)、电流(0~10mA、4mA~20mA) 等不同的输入信号。 XMT-3000A 智能仪表接热电阻输 入时,采用三线制接线,消除了引线带 来的误差;接热电偶输入时,仪表内部 带有冷端补偿部件;接电压/电流输入 时,对应显示的物理量程可任意设定。 在计算机与智能仪器通电前,按图 13-24 所示将热电阻传感器 Cu50、上、 下限报警指示灯与 XMT-3000A 智能仪 器连接。 通过串口线将计算机与智能仪器连 接起来:智能仪器的 14 端子(RXD)与计算机串口 COM1 的 3 脚(TXD)相连;智能仪器 的 15 端子(TXD)与计算机串口 COM1 的 2 脚(RXD)相连;智能仪器的 16 端子(GND) 与计算机串口 COM1 的 5 脚(GND)相连。 连接仪器与计算机串口线时,仪器与计算机严禁通电,否则极易烧毁串口。 本设计用到的硬件为:智能仪器(XMT-3000A 型,需配置 RS-232 通信、上下限控制继 电器、DC24V 电源等模块),串口通信线(三线制),热电阻传感器(Cu50),指示灯 (DC24V)等。 2.XMT-3000A智能仪器的参数设置 XMT-3000A 智能仪器在使用前应对其输入/输出参数进行正确设置,设置好的仪器才能 投入正常使用。 请按表 13-1 设置仪器的主要参数。 TXD RXD GND 20 21 24 25 9 10 12 13 RXD TXD GND 常开 ALM1 AC220V 2 3 4 Cu50 L2 L1 ALM2 RS232 DC24V + - 3 2 5 COM1 PC机 XMT-3000A 常开 14 15 16 图 13-24 PC 与智能仪表串口通信线路 第 13 章 LabVIEW 串口通信程序设计 – 297 – 表 13-1 仪表的主要参数设置 参 数 参 数 含 义 设 置 值 HIiAL 上限绝对值报警值 30 LoAL 下限绝对值报警值 20 Sn 输入规格 传感器为:Cu50,则 Sn=20 diP 小数点位置 要求显示一位小数,则 diP=1 ALP 仪表功能定义 要求上限报警由报警 1 (ALM1)输出,下限报警由报警 2(ALM 2)输出,报警时在下显示器显示报警符号,则 ALP=10 Addr 通信地址 0 baud 通信波特率 4800 3.XMT-3000A智能仪表的通信协议 XMT-3000A 智能仪器使用异步串行通信接口,共有两种通信方式:RS232 和 RS485。接 口电平符合 RS232C 或 RS485 标准中的规定。数据为一个起始位,8 位数据,无校验位, 2 个停止位。通信传输数据的波特率可调为 300~4800 bit/s。 XMT 仪表采用多机通信协议,如果采用 RS485 通信接口,则可将 1~64 台的仪表同时 连接在一个通信接口上;采用 RS232C 通信接口时,一个通信接口只能连接一台仪表。 RS485 通信接口与 RS422 接口的信号电平相同,通信距离长达 1km 以上,优于 RS232C 通信接口。RS422 为全双工工作方式,RS485 为半双工工作方式,RS485 只需两根线就能使 多台 XMT 仪表与计算机进行通信,而 RS422 需要 4 根通信线。由于通信协议的限制,XMT 只能工作在半双工模式,所以 XMT 仪表推荐使用 RS485 接口,以简化通信线路接线。为使 普通计算机作上位机,可使用 RS232C/RS485 型通信接口转换器,将计算机上的 RS232C 通 信口转为 RS485 通信口。 XMT 仪表采用十六进制数据格式来表示各种指令代码及数据。 通信指令只有两条,一条为读指令,一条为写指令。 读指令格式为:地址代号+52H+参数代号。 返回:依次返回为测量值 PV、给定值 SV、输出值 MV+报警状态、所读参数值。 写指令格式:地址指令+43H+参数代号+写入值的低位字节+写入值的高位字节。 返回:测量值 PV、给定值 SV、输出值 MV+报警状态、被写入的参数值。 地址代号:为了在一个通信接口上连接多台 XMT 仪表,需要给每台 XMT 仪表编一个互 不相同的代号,这一代号在本文约定称为通信地址代号(简称地址代号)。XMT 有效的地址 为 0~63。所以一条通信线路上最多可连接 64 台 XMT 仪表。仪表的地址代号由参数 Addr 决定。 XMT 仪表通信协议规定,地址代号为两个字节,其数值范围(十六进制)是 80H~BFH, 两个字节必须相同,数值为:仪表地址+80H。例如,仪表参数 Addr=5(十六进制数为 05H), 05+80H=85H,则该仪表的地址表示为:85H 85H。 参数代号:仪表的参数用一个十六进制数的参数代号来表示。它在指令中表示要读/写的 参数名。表 13-2 列出了 XMT 仪表可读/写的参数代号(部分)。 LabVIEW 虚拟仪器数据采集与串口通信测控应用实战 – 298 – 表 13-2 XMT仪表可读/写的参数代号表 参 数 代 号 参 数 名 含 义 参 数 代 号 参 数 名 含 义 00H SV 给定值 0BH Sn 输入规格 01H HIAL 上限报警值 0CH dIP 小数点位置 02H LoAL 下限报警值 0DH dIL 下限显示值 03H dHAL 正偏差报警 0EH dIH 上限显示值 04H dLAL 负偏差报警 15H baud 通信波特率 05H dF 回差 16H Addr 通信地址 06H CtrL 控制方式 17H dL 数字滤波 如果向仪表读取参数代号在表格中参数以外,则返回参数值为错误信号(两个 7F值)。 返回的测量值数据每两个 8 位数据代表一个 16 位整形数,低位字节在前,高位字节在 后,负温度值采用补码表示,热电偶或热电阻输入时其单位都是 0.1℃,回送的十六进制数据 (两个字节)先转换为十进制数据,然后将十进制数据除以 10 再显示出来。 上位机每次向仪表发一个指令,仪表返回一个数据。编写上位机软件时,注意每条有效 指令,仪表在 0~0.36s 内作出应答,而上位机也必须等仪表返回指令后,才能发新的指令, 否则将引起错误。 4.温度测量与控制 (1)正确设置仪器参数后,仪器 PV 窗显示当前温度测量值。 (2)给传感器升温,当温度测量值大于上限报警值 30℃时,上限指示灯 L2 亮,仪器 SV 窗显示上限报警信息。 (3)给传感器降温,当温度测量值小于上限报警值 30℃,大于下限报警值 20℃时,上 限指示灯 L2 和下限指示灯 L1 均灭。 (4)给传感器继续降温,当温度测量值小于下限报警值 20℃时,下限指示灯 L1 亮,仪 器 SV 窗下限报警信息。 5.串口调试 XMT-3000A 智能仪器使用异步串行通信接口,采用 RS-232 通信方式,其数据格式为: 一个起始位,8 个数据位,无校验位,2 个停止位。 打开“串口调试助手”程序,首先设置串口号 COM1、波特率 4800、校验位 NONE、数 据位 8、停止位 2 等参数(注意:设置的参数必须与仪器设置的一致),选择十六进制显示和 十六进制发送方式,打开串口,如图 13-25 所示。 在“发送的字符/数据”文本框中输入读指令:80 80 52 0C ,单击“手动发送”按钮, 则 PC 向仪器发送一条指令,仪器返回一串数据,如:3D 01 E7 03 64 00 01 00 ,该串数据 在返回信息框内显示。 根据仪器返回数据,可知仪器的当前温度测量值为:01 3D(十六进制,低位字节在前, 高位字节在后),十进制为 31.7℃。 使用说明。 第 13 章 LabVIEW 串口通信程序设计 – 299 – 发送指令 返回信息 图 13-25 串口调试助手 若选择了“手动发送”,每单击一次可以发送一次;若选中了“自动发送”,则每隔设定 的发送周期内发送一次,直到去掉“自动发送”为止。值得注意的一点是:选中“十六进制 发送”后,发送框中所填字符每两个字符之间应有一个空格,如:01 23 00 34 45。还有一些 特殊的字符,如回车换行,则直接敲入回车即可。 6.使用“计算器”实现数制转换 打开 Windows 附件中“计算器”程序,在“查看”菜单下选择“科学型”。 选择“十六进制”,输入仪器当前温度测量值:01 3D(十六进制,0 在最前面不显示), 如图 13-26 所示。 单击“十进制”选项,则十六进制数“013D”转换为十进制数“317”,如图 13-27 所示。 仪器的当前温度测量值为:31.7℃(十进制)。为什么? 图 13-26 在“计算器”中输入十六进制数 图 13-27 十六进制数转十进制数 13.3.2 设计任务 。。。。。。。 LabVIEW 虚拟仪器数据采集与串口通信测控应用实战 – 300 – 13.4 PC与 PLC串口通信案例 可编程序逻辑控制器(简称 PLC)主要是为现场控制而设计的,其人机界面主要是开关、 按钮、指示灯等。其具有良好的适应性和可扩展能力得到越来越广泛的应用。采用 PLC 的控 制系统或装置具有可靠性高、易于控制、系统设计灵活、能模拟现场调试、编程使用简单、 性价比高、有良好的抗干扰能力等特点。但是,PLC 也有不易显示各种实时图表/曲线(趋势 线)和汉字、无良好的用户界面、不便于监控等缺陷。 20 世纪 90 年代后,许多的 PLC 都配备有计算机通信接口,通过总线将一台或多台 PLC 相连接。计算机作为上位机可以提供良好的人机界面,进行系统的监控和管理,进行程序编 制、参数设定和修改、数据采集等,既能保证系统性能,又能使系 统操作简便,便于生产过程的有效监督。而 PLC 作为下位机,执 行可靠有效的分散控制。用一台计算机(上位机)去监控下位机 (PLC),这就要求 PC 与 PLC 之间稳定、可靠的数据通信。 图 13-34 是某型号 PLC 示意图。 13.4.1
/
本文档为【labview串口】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索