时间:2022-10-09 07:19:44
摘 要:本文从实用的角度,以灯光控制为切入点,简要介绍了Neuron C编程语言的应用,探讨了LonWorks在智能楼宇中的应用,旨在给读者在照明设计、Neuron C编程等方面研究提供一些参考。
关键词:Neuron C;网络变量;灯光控制
1、LonWorks与Neuron C概述
LonWorks控制网络是当前最为流行、通信能力较强的一种现场总线,它由美国Echelon公司推出并与Motorola、Toshiba公司共同倡导而形成。该技术包括Echelon公司设计的神经元芯片(内嵌装有LonTalk协议的固件)及相应的收发器、路由器、网络管理工具及开发系统等。①
应用层的软件可在NodeBuilder或LonBuilder开发系统下,采用一种专门的Neuron C编程语言,针对具体控制对象的要求编写应用层的程序代码,然后经过编译再与通信协议代码连接并生成完整的目标代码,一起下载到智能节点的存储器中。②Neuron C以ANSI C为基础,专门为神经元芯片而设计,针对LonWorks环境增加了特定的对象集合及访问这些对象的内部资源,它是开发LonWorks应用程序的强有力工具。
2、我国照明发展现状
随着我国城市化水平的不断提高,能源短缺及环境问题日益突出,节能减排成为了社会的焦点。据统计,我国能源供求紧张主要表现在电力上,而我国电能总消耗量的1/6用于照明。智能化照明控制系统,能够提高系统的管理效率,实现绿色照明、节能照明。③
人们离开办公室或房屋时,时常会由于各种原因忘记关灯,长此以往,会浪费大量的能源。要知道,在我国西部的贫困地区,有些孩子由于家里开不起电灯,只能点着油灯写作业。而我国的发电厂以火电为主,燃煤造成的环境污染已经侵蚀了不少地区的蓝天。总之,人走关灯的习惯养成迫在眉睫。
LonWorks技术可以监测家里或者办公室电灯的开关状态,如忘记关闭了,可以及时提醒,并通过手机APP或电脑上的远程监测平台实施远程控制,关闭电灯,节约能源。下面,以生活中常用的几种灯光开关的智能控制方式为例,体现LonWorks技术在灯光控制中的应用,通过Neuron C编程语言实行控制。
3、灯光的简单智能控制
3.1 一个开关控制一盏本地的灯
(1)控制要求
如图1-1所示,开关Button与灯LED相连,二者均处于离线状态,通过给定Button值,控制灯LED的亮灭。
图1-1
图1-2
(2)控制原理
如图1-2所示,开关Button通过与之相连的Neuron芯片IO_4接口输出ioButton值,通过与灯LED相连的Neuron芯片IO_0接口输入,给灯LED提供控制信号。
(3)控制程序
#pragma enable_io_pullups
#define LED_ON 1
#define LED_OFF 0
#define BUTTON_DOWN 1
#define BUTTON_UP 0
IO_0 output bit ioLED=LED_OFF;
IO_4 input bit ioButton=BUTTON_UP;
when(io_changes(ioButton) to BUTTON_DOWN)
{ io_out(ioLED,( ioButton !=BUTTON_UP)?LED_ON:LED_OFF); }
3.2 一个开关控制一盏总线上的灯
(1)控制要求
如图2-1所示,开关Button与灯LED通过LonWorks总线相连,由开关Button提供控制值,通过LonWorks总线传递给灯LED,远程控制灯LED的亮灭。
图2-1
图2-2
(2)控制原理
如图2-2所示,开关Button通过与之相连的Neuron芯片IO_4接口向LonWorks总线输出开关网络变量nv_switch,转化为灯网络变量nv_lamp,通过与灯LED相连的Neuron芯片IO_0接口输入,给灯LED提供控制信号。
(3)控制程序
开关节点
#pragma enable_io_pullups
#include
network output SNVT_lev_disc nv_switch=ST_OFF;
#define BUTTON_DOWN 1
#define BUTTON_UP 0
IO_4 input bit ioButton=BUTTON_UP;
when(io_changes(ioButton) to BUTTON_DOWN)
{ nv_switch=(nv_switch!=ST_OFF)?ST_OFF:ST_ON; }
灯节点
#include
network input SNVT_lev_disc nv_lamp=ST_ON;
#define LED_ON 1
#define LED_OFF 0
IO_0 output bit ioLED=LED_OFF;
when(nv_update_occurs(nv_lamp))
{ io_out(ioLED,( nv_lamp !=ST_OFF)?LED_ON:LED_OFF); }
4、灯光的综合智能控制
本部分只提供核心控制语句,完整的程序读者可根据上述两个例子进行补充。
4.1 一个本地、一个总线上的开关并联控制一盏灯
(1)控制要求
如图3-1所示,开关Button1与LonWorks总线相连,开关Button2通过灯LED连接到LonWorks总线上,通过总线上的开关Button1或本地的开关Button2实现对灯LED亮灭的控制。
图3-1
图3-2
(2)控制原理
如图3-2所示,开关Button1通过与之相连的Neuron芯片IO_4接口向LonWorks总线输出开关网络变量nv_switch,转化为灯网络变量nv_lamp;开关Button2通过与之相连的Neuron芯片IO_5接口输出控制量ioButton2,与灯LED相连的Neuron芯片IO_0接口接收灯网络变量nv_lamp和开关控制量ioButton2,给灯LED提供控制信号。
(3)控制程序
IO_0 output bit ioLED=LED_OFF;
IO_4 input bit ioButton1=BUTTON_UP;
IO_5 input bit ioButton2=BUTTON_UP;
when(nv_update_occurs(nv_lamp))
{ io_out(ioLED,( nv_lamp !=ST_OFF)?LED_ON:LED_OFF); }
when((io_changes(ioButton1) to BUTTON_DOWN)||(io_changes(ioButton2) to BUTTON_DOWN))
{ if((io_changes(ioButton1) to BUTTON_DOWN)&& !(io_changes(ioButton2) to BUTTON_DOWN))
nv_switch=(nv_switch!=ST_OFF)?ST_OFF:ST_ON;
else
if(! (io_changes(ioButton1) to BUTTON_DOWN)&& (io_changes(ioButton2) to BUTTON_DOWN))
io_out(ioLED,( ioButton2!=BUTTON_UP)?LED_ON:LED_OFF); }
4.2 一个开关分别控制一盏总线上、一盏本地的灯
(1)控制要求
如图4-1所示,开关Button与灯LED1相连,并通过LonWorks总线与灯LED2相连,通过开关Button同时实现对本地的灯LED1与网络上的灯LED2亮灭的控制。
图4-1
图4-2
(2)控制原理
如图4-2所示,开关Button通过与之相连的Neuron芯片IO_4接口向LonWorks总线输出开关网络变量nv_switch,转化为灯网络变量nv_lamp,由与灯LED1相连的Neuron芯片IO_0接口输入,远程控制灯LED1的亮灭。同时,开关Button通过与之相连的Neuron芯片IO_4接口输出开关控制量ioButton,由与灯LED2相连的Neuron芯片IO_1接口输入,控制灯LED2的亮灭。
(3)控制程序
IO_0 output bit ioLED1=LED_OFF;
IO_1 output bit ioLED2=LED_OFF;
IO_4 input bit ioButton=BUTTON_UP;
when(io_changes(ioButton) to BUTTON_DOWN)
{ io_out(ioLED2,( ioButton!=BUTTON_UP)?LED_ON:LED_OFF);
nv_switch=(nv_switch!=ST_OFF)?ST_OFF:ST_ON; }
when(nv_update_occurs(nv_lamp1))
{ io_out(ioLED1,(nv_lamp1!=ST_OFF)?LED_ON:LED_OFF); }
参考文献
[1]张云贵,王丽娜,张声勇.LonWorks总线系统设计与应用[J].中国电力出版社,2010
[2]高安邦,杨帅,陈俊生等.LonWorks技术原理与应用[J].机械工业出版社,2009
[3]胡力勤.浅谈Mini EVK在地下停车库照明节能中的应用[J].计算机时代,2013(4)
[4]高安邦,孙杜文,单洪等.LonWorks技术开发和应用[J].机械工业出版社,2009
[5]凌志浩,翁瑞琴,周振环.Neuron C语言的若干新特征及其应用[J].微计算机应用,1999
[6]Neuron C Reference Guide 2.0[J].Echelon
[7]Neuron C Programmer’s Guide 2.0[J].Echelon