基于双口RAM的LonWorks智能通信节点设计
2 LonWorks智能通信节点的软件设计
在LON网程序设计中使用Neuron C语言。Neuron C是一种基于ANSI C且带有网络通信和高级硬件设备接口扩展语句的高级不应该。它增加了对I/O、事件处理、消息传递和分散数据目标的支持,扩充了包括软件定时器、网络变量、显示消息、一个多任务调度程序以及其它各具特点的函数等。采用Neuron C语言开发的应用程序,可直接在Lonbuilder神经元仿真器上进行调试,因此应用程序的开发可独立于硬件设计进行。智能节点通信流程如图3所示。
程序中,节点Neuron 3150侧使用显示报文通信,能有效实现智能节点与单片机进行双向通信的功能。用Neuron C语言进行节点设计编程时,必须首先查询IO_6和IO_7的内容。定义两个比特类型的输入变量INTL和BUSYL,通过查询这两个变量的内容来确定程序的运行流程。编程如下:
//*****包含文件*****
#include<string.h>
#include<control.h>
//*****公共变量声明*****
#define Tlon_485 0xd000 //定义从LON网上所接收数据在双口RAM存储单元首址
#defin T485_lon 0xd0200 //定义从单片机侧所接收数据在双口RAM存储单元首址
IO_6 input bit INTL;//定义IO_6,IO_7为比特类型的输入变量
IO_7 input bit BUSYL;
Msg_tag tag_out1; //定义输出消息标签
//****系统主程序********priority when(msg_arrives)//显示网络消息事件
{unsigned int *p; //存储从LON网上接收的数据
int i;
p=(unsigned int*)(Tlon_485);
for(i=0;I<30;i++)
{*p=msg_in.data[i];
p++;
}
}
}
when(io_in(INTL)= =0)//当单片机侧有数据时申请中断
{when(io_in(BUSYL)= =1)
{unsigned int*u;
int j;
u=(unsigned int*)(T485_lon);
《基于双口RAM的LonWorks智能通信节点设计(第2页)》