工业自动化网络技术工业自动化网络技术

上传人:f****u 文档编号:123458417 上传时间:2020-03-09 格式:DOC 页数:13 大小:476.50KB
返回 下载 相关 举报
工业自动化网络技术工业自动化网络技术_第1页
第1页 / 共13页
工业自动化网络技术工业自动化网络技术_第2页
第2页 / 共13页
工业自动化网络技术工业自动化网络技术_第3页
第3页 / 共13页
工业自动化网络技术工业自动化网络技术_第4页
第4页 / 共13页
工业自动化网络技术工业自动化网络技术_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《工业自动化网络技术工业自动化网络技术》由会员分享,可在线阅读,更多相关《工业自动化网络技术工业自动化网络技术(13页珍藏版)》请在金锄头文库上搜索。

1、一、课程设计目的1、熟悉LonWorks节点开发工具NodeBuilder3.0软件;2、认识和熟悉NodeBuilder编程语言NeuronC;3、掌握用NodeBuilder软件来创建设备。二、所需设备计算机一台 NodeBuilder3.0软件 Lonmaker3软件 PCLTA-20网卡 GIZMO4(带TP/FT-10F闪控模块)3、 设计步骤1创建LonMaker网络网络名称为本组学生姓名的汉语拼音 2创建NodeBuilder工程3创建NodeBuilder设备模板 将开发和发布构造硬件模板均选为:TPFT-10F 64k Control module 4自动产生Neuron C

2、代码5编辑Neuron C代码6编译、构造和下载应用程序7测试设备界面8调试设备应用程序9在网络中安装和测试设备 4、 设计内容1、发板 Lonworks作业简单例子:点亮开上的灯 用LTM10A(Nodebuilder 仿真器)和Gizmo4作为最简单LonWorks网络的节点,使用安装LNS和FT10(包含在PCLTA-21上)网卡作为网络适配器 连接成一个最简单的LonWorks网络。LTM-10A和Gizmo4的功能是:设置两个功能模块:SPFTOpenLoopSensor和SPFTOpenLoopActuator,分别控制IO_6按钮输入(改变输出网络变量nvoValue)、控制IO

3、_0引脚输出电压(输入网络变量nviValue),使用LM4W绑定:nvoValuenviValue。 具体实现NeuronC 语言为:(1)、修改头文件:为用户设备的I/O口管脚声名,通过修改switch1.h(添加IO_6 input bit ioswitch;)和修改led.h(添加IO_0 output bit ioled=1;)文件来完成;(2)、修改实现文件:为完成用户设备的I/O功能,通过修改switch1.nc(添加when(io_changes(ioswitch) switch1:nvoValue.state=!input_value; switch1:nvoValue.va

4、lue=input_value?(short)200:0;)和修改led.nc(添加io_out(ioled,!(nviValue.value&led:nviValue.state);)来完成。 通过初次实验,我们发现灯是低电平亮的,所以在实验的基础上修改了一点:修改switch1.nc时的语句switch1:nvoValue.state=input_value;改成switch1:nvoValue.state=!input_value;通过加了个!取反,最后实现按下按键灯亮,放手灯灭。2、拓展设计:设计1、让灯实现再按下按键后能够常亮常灭。编辑Neuron C代码之前的设计步骤和指导书简单例

5、子一样,Neuron C代码如下:switch1.hIO_6 input bit ioswitch;switch1.ncwhen(io_changes(ioswitch)switch1:nvoValue.state = !input_value;switch1:nvoValue.value = input_value ? (short) 0:100; led.hIO_0 output bit ioled1=1;led.ncint f=0;void led1processNV(void)if(led:nviValue.value&led: nviValue.state)f=!f;io_out(i

6、oled1,!f); /也就是通过定义一个中间变量,将按键按下时,对应变量的瞬时变化赋值给中间变量,利用中间变量控制led灯的亮灭设计2、点亮两个灯(按下按键,led1亮,led2灭;再按下按键,led1灭,led2亮,再次按下按键,led1亮,led2灭,如此循环下去)插入功能模块编写过程的图片,也即是led模块的形成。添加一个led1的functionblock,添加一个led2的functionblock,按下ok后,出现以下选项:选择是(Y),led的functionblock以矩阵的形式存在,里面包含led1和led2。Neuron C代码如下:switch1.hIO_6 input

7、 bit ioswitch;switch1.ncwhen(io_changes(ioswitch)switch1:nvoValue.state = !input_value;switch1:nvoValue.value = input_value ? (short) 0:100; led.hIO_0 output bit ioled1=1;IO_1 output bit ioled2=0; led.ncint f=0;void led1processNV(void)io_out(ioled1,!f);io_out(ioled2,f); if(led10:nviValue.value&led11

8、:nviValue.value) f=!f;需要特别注意的是if语句中条件的两个变量改变。当是一个灯的时候,前后两个变量分别为同一个变量的两个属性,当是两个灯的时候,前后两个变量必须是对应的两个灯变量的同一属性。在网络中安装和测试设备的最终界面:当按下按钮的时候:显示模块都连接上了。设计3、采用一个定时器,让led灯在按下按键时开始亮,并在灯亮的同时让定时器开始计时,2s后灯灭。 由此实现对灯亮时间长短的控制。Neuron C代码如下:switch1.hIO_6 input bit ioswitch;switch1.ncwhen(io_changes(ioswitch)switch1:nvoV

9、alue.state = !input_value;switch1:nvoValue.value = input_value ? (short) 0:100; led.hIO_0 output bit ioled1=1;led.ncstimer repeating t1;void led1processNV(void)while(led:nviValue.value&led: nviValue.state)io_out(ioled,0);t1 =2;while (timer_expires(t1)io_out(ioled,1);t1 =0;在编写程序的过程中,出现条件词when,if,whil

10、e的使用问题。一开始的时候该程序中的led.nc文件中采用的两个条件词分别为if和when,但在编译过程一再出现错误显示为when该词的使用错误;为此我们将两个条件词都改为if,尽管这次在编译过程并没有出现任何错误,但在连接运行时却发现定时器并未工作;最后经过多次尝试,最终我们将两个条件词都改为while,在此基础上正常实现定时功能。设计4一开始的时候,蜂鸣器不发声;第奇次按下按键,蜂鸣器响,与蜂鸣器同为IO_0端口的led灯亮;第偶次按下按键,蜂鸣器不响,与蜂鸣器同为IO_0端口的led灯灭。Neuron C代码如下:switch1.hIO_7 input bit ioswitch;swit

11、ch1.ncwhen(io_changes(ioswitch)switch1:nvoValue.state = !input_value;switch1:nvoValue.value = input_value ? (short) 0:100; buzze.hIO_0 output frequency ioBuzz;buzze.ncint f;if(buzze:nviValue.value&buzze:nviValue.state)f=!f;if(f)io_out(ioBuzz,2500);elseio_out(iobuzz,0);需要注意的是:我们这个设计和设计1的区别是在定义I/0口声名的

12、时候是用IO_0 output frequency ioBuzz;语句,并且通过改变它的频率(io_out(ioBuzz,2500);)来控制蜂鸣器的开关,这里我们是当频率为2500khz时蜂鸣器响,当频率为0时蜂鸣器停止发声。设计5让led灯循环亮灭Neuron C代码如下:通过声明两个定时器来分别控制led灯亮灭的时间。当按下按键时,led灯亮同时定时器t1开始工作。当定时器t1定时完毕后,led灭,与此同时定时器t2开始定时,关闭定时器t1。当定时器t2定时完毕后,led又再次亮,定时器t1又开始定时,如此循环led灯等亮灭。当再次按下按键的时候,led灯灭,定时器t1和t2都关闭。sw

13、itch1.hIO_6 input bit ioswitch;switch1.ncwhen(io_changes(ioswitch)switch1:nvoValue.state = !input_value;switch1:nvoValue.value = input_value ? (short) 0:100; led.hIO_0 output bit ioled1=1;led.ncstimer repeating t1;mtimer repeating t2;int f=0;while(led:nviValue.value&led: nviValue.state)f=!f;if(f) io

14、_out(ioled,0);t1=2;t2=0;else io_out(ioled,1);t1=0;t2=0;while (timer_expires(t1)io_out(ioled,1);t1 =0;t2=1;while (timer_expires(t2)io_out(ioled,0);t1 =2;t2=0;基于前后曾经出现的问题考虑,试着将if改为while,但依旧没有什么改变。if(led:nviValue.value&led: nviValue.state)f=!f;while(f)io_out(ioled,0);t1=2;t2=0;while(!f)io_out(ioled,1);t1=0;t2=0;while (timer_expires(t1)io_out(ioled,1);t1 =0;t2=1000;while (timer_expires(t2)io_out(ioled,0);t1 =2;t2=0;又再次退而求其次,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号