基于Neuron C的灯光控制程序设计

时间:2022-10-09 07:19:44

基于Neuron C的灯光控制程序设计

摘 要:本文从实用的角度,以灯光控制为切入点,简要介绍了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

上一篇:网络广告的法律规制 下一篇:如何在教育工作中运用视频会议系统