远程仪器操控_第1页
远程仪器操控_第2页
远程仪器操控_第3页
远程仪器操控_第4页
远程仪器操控_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五篇 远程仪器操控在学习完TCP通信和仪器控制后,将两者结合起来即可实现仪器的远程操控了。将客户端设置为指令输入端,当服务器与客户端成功连接后,服务器接收到客户端的信息,并将此执行指令输入VISA,实现仪器的操控。下面举2个远程操控仪器的例子帮助理解。例1 远程操控发光二级管的亮与灭 要求:当客户端写入“0”指令时,实现开灯操作;当客户端写入“1”时,关灯。客户端建立连接读取指令通过VISA将指令写入串口,依靠单片机完成指令服务器得到反馈,完成操作;关闭与服务器的连接分析:设计思路如图5-1.写入指令图5-1 设计流程图服务器的程序设计:分析:服务器端要实现接收TCP信息(指令)和向VISA

2、写入信息的过程,且为了避免连续发送同一指令给VISA浪费空间,可以将程序设计为2个模块,其一用于接收TCP指令,另一个模块用于向VISA发送指令,且该部分要承担判断指令是否与灯的当前状态一致的责任。例如,客户端向服务器写入“0”指令,即开灯指令,如果当前灯已经是亮的状态(“0”),那便不必向VISA写入该指令,反之则要写入VISA将灯打开。所以,只有当接收到的指令与灯的状态不一致时服务器才向VISA写入指令,操控单片机改变灯的状态。为实现上述功能可将指令接收模块放在平铺式顺序结构内以便区分;写入VISA模块则放入条件选择结构中,当指令与灯的状态一致时(true)不写入,当指令与灯的状态不一致时

3、(false)时执行写入。该判断需借助移位寄存器和反馈节点才能实现。1、新建一个VI,命名为“远程操控服务器.vi”。打开该VI的程序框图,按照常规添加While循环函数。同时,为了实现读取TCP指令和对串口的操作,可添加一个平铺式顺序结构函数和一个条件选择结构函数(具体功能稍后介绍)。这些函数都放在函数选板下的Express/执行程序控制子选板中。具体如图5-2所示。图5-2 此处首次接触平铺式顺序结构和条件结构,可将鼠标移至相应函数,选择即时帮助中的“详细帮助信息”获取更多相关介绍。2、为实现向串口写入操控指令,则需添加“VISA配置”函数、“VISA写入”函数和“关闭VISA”函数。其中

4、“VISA配置”函数和“关闭VISA”函数放在循环外。VISA函数放在函数选板下的仪器I/O /串口 子选板下。详见图5-3。图5-33、为实现从TCP读取指令,则需在While循环内添加“TCP侦听”、“读取TCP数据”和关“闭TCP”函数。在TCP通信学习中介绍过,TCP侦听函数一般放在While循环外,因此此处应再添加一个While 函数。TCP函数放在函数选板的数据通信/协议/TCP协议子选板下。因为是先读取TCP数据再将此信息写入VISA,考虑到这一需求将“读取TCP数据”函数放入平铺式顺序结构中。具体见图5-4。图5-44、考虑到要判断指令与当前灯的状态值是否相同,故应在循环内添加

5、移位寄存器。移位寄存器用来实现读取将前、后状态值,添加比较函数“等于?”以便比较输入的指令与灯的当前状态是否一致(true),如果一致(false)则不改变灯的状态,如果不一致则向VISA写入指令改变灯的状态。这一比较结果的反馈需反馈节点函数才能实现,该函数放在函数选板下的编程/结构子选板中;将鼠标移至循环框边上单击鼠标右键选择“添加移位寄存器”即可创建移位寄存器;比较函数“等于?”放在函数选板下Express/算术与比较/比较子选板下。同时,将条件选择结构改为“假”,将“VISA写入”函数放入其中。这一操作即可实现当指令与灯的状态不同时(比较结果为false),通过VISA写入函数向单片机发

6、送指令。具体参见图5-5。移位寄存器反馈节点比较函数“假”时执行VISA写入图5-55、完成相关函数的输入控件的配置。在VISA资源配置函数的相应接线口创建VISA资源名称、波特率输入控件。在TCP侦听函数的相应接线口创建端口输入控件。控件的创建只需在相应接线口单击鼠标右键,选择“创建/输入控件”即可实现。由于TCP函数只能接收字符串,因此应在写入TCP数据前添加一类型转换函数,此函数在函数选板下编程/数值/数据操作子选板下。最后,在关闭VISA函数后添加简易错误处理函数,单击鼠标右键在对话框与用户界面子选项中选择“简易错误处理”即可。完成后,如图5-6所示。图5-66、完成连线。具体参见图5

7、-7。注意:A、错误输出端从VISA函数到TCP函数首尾串接,以实现错误信息统一输出。B、使移位寄存器右端连接数据,保证数据流的方向是从TCP至VISA,让当前指令与灯的状态进行比较。比较后的结果通过反馈节点连接至条件选择结构的选择器“?”。图5-77、完善。细心的同学会注意到此程序有两个停止按键,此外,通信过程出现的错误信息也未能起到终止循环的作用,使得操作比较繁琐也难以理解,故可将这两个开关与错误信息进行整合。即将错误输出信息捆绑,与开关通过“或”逻辑函数输入While循环的判断端。“按名称解除捆绑”在函数选板下编程/簇、类与变体选板下的子选板中。“或”函数在函数选板下Express/算术

8、与比较/布尔子选板下。如图5-8所示。图5-8 “按名称捆绑”与或“函数”添加完成后,将错误输出端连接至“按名称捆绑”函数,再接入“或”函数,从内循环的循环控制端引出一根接线连至“或”函数,这样,就完成了整个循环的统一控制。到此,设计完成,具体如图5-9。远程操控服务器程序框图条件结构函数为“假”:远程操控服务器程序框图条件结构函数为“真”:图5-9 完成后的服务器程序框图客户端程序设计:分析:与服务器相比较,客户端的程序相对简单,只需向服务器发送指令即可。1、 创建一个新VI,命名为“远程操控客户端.vi”。打开该VI的程序框图,添加Whlie循环函数,在循环外添加“打开TCP”、“关闭TC

9、P”函数,在循环内添加2个“写入TCP数据”函数。相关函数出去前面以讲过,此处不再累述。2、 在打开TCP函数的相应接线端创建地址输入控件和远程端口输入控件,将鼠标移至相应接线端单击鼠标右键在选板下选择“创建/输入控件”即可。在关闭TCP函数后创建简易错误处理函数,创建方法同上。要实现指令的输入,因此需添加指令输入控件。在写入TCP函数数据接线口单击鼠标右键,选择“创建/输入控件”并将其重命名为“输入指令”。完成后如图5-10所示。图5-103、完成连线。注意:TCP函数只接收字符类型数据,且TCP通信时应先写入数据包的长度,再发送数据包,因而应添加“字符串长度”函数来读取指令的长度。该函数在

10、函数选板下的编程/字符串子选板中。为使客户端发送的指令及时送达服务器,又不至于数据溢出,故在循环条件内添加时间等待函数,设置等待时间为100ms。时间等待函数在函数选板下的编程/定时子选板下。具体如图5-11。5-11 字符串长度函数5-11 时间等待函数完成后的客户端程序如图5-12所示。图5-12运行程序检测结果,完成设计。例2 远程操控电容器、电感箱与电阻箱电路元件型号为:“×1000”的电阻箱、“×100”的电阻箱、“×0.1UF”的电容器、“×0.1H”的电感箱分析:要实现远程操控电阻、电感及电容,则应把电阻、电感、电容置于服务器端,当客户端与

11、服务器建立连接后向其发送改变相关电路元件值的请求时,服务器通过VISA写入函数向串口写入相关参数,从而通过单片机改变相关电路元件值。设计思路如图5-13.是开始与客户端建立连接开启TCP侦听否接收电阻、电感、电容初始值发送当前电阻、电感、电容值至VISA实验过程中TCP连接出错?关闭与客户端的连接结束开始与服务器连接是否成功打开TCP连接否发送电阻、电感、电容初始值发送当前电阻、电感、电容值实验过程中TCP连接出错?关闭与服务器的连接结束是是是图5-12 服务器端工作流程图 客户端工作流程图服务器程序设计:在学习了发光二级管的远程操控后,可参考其程序设计思路,将服务器设置为电路元件初始值的设置

12、、TCP信息接收与VISA写入模块。当计算机发出指令后先判断此指令与当前电路元件的值是否相同,如果相同,则不发送指令,如果不相同则发送指令改变电阻/点容/电感值。设计好的程序框图如图5-13所示。5-13 服务器程序框图下面,简单介绍一些函数的使用及功能模块的设计。1、 凭借前面的学习基础,创建新VI,命名为“服务器.vi”。打开该VI的程序框图添加好While循环函数、条件结构函数、层叠式顺序结构函数,并在顺序结构函数添加帧,以便用于对不同电路元件进行操控。添加帧操作:将鼠标移至层叠式顺序结构函数的条件选择框,单击鼠标右键选择“在后面添加帧”,如图5-14。依据需求本函数应设有4帧,分别代表

13、“×1000”的电阻箱、“×100”的电阻箱“×0.1UF”的电容器、“×0.1H”的电感箱。图5-142、 创建好相应流程控制函数后,在While循环外添加“TCP侦听”、“关闭TCP”函数,并在“TCP侦听”函数的相应接线口创建端口输入控件,在“关闭TCP”函数的错误输出端创建简易错误处理函数。根据程序设计需要,在While循环外再添加一个While循环函数,并添加“VISA资源配置”函数、“关闭VISA”函数并在相应接线口创建输入控件。相关函数出处前面的举例中讲过,此处不再累述。3、 电路元件初始化模块的设计:设备的初始化是当程序启动时,客户端发送

14、TCP指令至服务器端,服务器端接收指令写入VISA进行仪器操控,因此设备初始化过程中需添加TCP数据写入函数和VISA写入函数一起放入条件选择结构函数中。首次打开程序(i=0,真),服务器接收客户端的初始化电路元件命令,写入VISA执行操作,之后的调解过程中(i0,假)不用再初始化电路元件,故不写入命令,如图5-15所示。图5-15 设置电路元件初始值4、 操控电路元件当前值。因为串口的写入需判断指令与当前值不一致后才执行,因此还需在层叠式顺序结构内添加一条件选择结构函数,并将VISA写入函数放入其中,这些数据是通过“读取TCP数据”获得的。同时,要在While循环出添加移位寄存器便于读取前后

15、指令。对于电阻箱、电感箱、电容箱的操作都是类似的,其程序如图5-17所示,“0”帧代表分别代表“×1000”的电阻箱、“1”帧代表“×100”的电阻箱、“2”帧代表“×0.1UF”的电容器、“3”帧代表“×0.1H”的电感箱。 图5-17 设置电路元件当前值5、 完成函数的添加后,完成接线。如图5-18所示。注意:移位寄存器和反馈节点的连接要一一对应,分别对应每一帧。数据流接至移位寄存器的右端子。反馈节点移位寄存器读取TCP指令,向VISA写入指令,设置电路元件值设置电路元件初始值图 5-18客户端的程序设计分析:按照前面的分析,客户端程序分为发送初始化

16、电路元件命令和发送当前电路元件值指令2个模块。初始化电路元件用条件结构函数,电路元件当前值发送指令模块用层叠式顺序结构函数,将不同的电路元件输入控件放入不同帧下。客户端向服务器发送电路元件当前值指令,实际上是借助服务器向单片机发送不同命令字改变电路元件的值。即当客户端的电阻箱、电感箱、电容箱虚拟旋钮置于不同档位时,向网络发送不同的命令字。单片机中设置的元件值与命令字的对应关系如下表所示。虚拟旋钮档位作为条件选择结构的条件,结构内对应旋钮的11个(0-10)档位分别放置不同的命令字,这样便实现用户将旋钮旋至不同档位,发送不同的命令字。1、 新建VI,命名为“客户端.vi”。打开该VI的程序框图添

17、加好While循环函数、条件结构函数、层叠式顺序结构函数,并在顺序结构函数添加帧(共需4帧),以便用于对不同电路元件进行操控。2、 在While循环外添加“打开TCP”、“关闭TCP”函数,并在“打开TCP”函数的相应接线口创建服务器地址、端口输入控件,在“关闭TCP”函数的错误输出端创建简易错误处理函数。3、 电路元件初始化。为确保客户端面板上的默认值与电阻电阻等原件实际值一致,程序执行第一次循环时发送命令字“64”,使实验室内电路元件值分别为初始化默认值,即电阻为100、电感为0.1H、电容为0.1UF。因为命令字是ASCII值,故选用“类型转换”函数将ASCII值命令转换为对应的字符,用

18、“写入TCP数据”函数送往服务器。此处应用2个“写入TCP数据”函数将此信息发送至服务器,第一个用于发送字符长度,第二个用于发送字符数据。完成后如图5-19所示。在函数选板的编程/字符串/字符串转换子选板中在函数选板的编程/数值/转换子选板中在函数选板的编程/数组子选板下 图 5-19 发送元件初始化指令对其中的几个函数加以说明: 注意:因为指令是针对不同电路元件的不同参数,是数组型数据,所以要将常数“64”转换为数组。4、 发送电路元件当前值指令。各电路元件的虚拟旋钮档位作为条件选择结构的条件,结构内对应旋钮的11个(0-10)档位分别放置不同的命令字,这样便实现用户将旋钮旋至不同档位,发送不同的命令字。与初始化类似的,命令字是ASCII值,故选用“类型转换”函数将ASCII值命令转换为对应的字符,用“写入TCP数据”函数送往服务器。用2个“写入TCP数据”函数将此信息发送至服务器,第一个用于发送字符长度,第二个用于发送字符数据。下面举例说明电感箱操控程序的设计,其它电路元件与其类似。A、在程序前面板添加转盘输入控件作为电感箱的虚拟旋钮。即在VI前面板单击鼠标右键,在控件选板下的Express/数值输入控件子选板下选择“转盘”。将其重

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论