基于双口RAM的LonWorks智能通信节点设计

基于双口RAM的LonWorks智能通信节点设计,第1张

基于双口RAM的LonWorks智能通信节点设计

 摘要:介绍一种基于双口RAM的LonWorks现场总线智能通信节点的设计方法,并给出详细的设计步骤、硬件及软件实现。通过此LonWorks智能通信节点,能够完成RS-232-C/RS-485标准与LonTalk协议间的转换提供RS-232-C/RS-485网络到LonWorks网络的接口,因此,具有很高的应用价值。

引言

1 LonWorks智能通信节点的硬件结构

1.1 节点硬件电路设计

智能节点以Neuron神经元处理器芯片为核心,其硬件电路还包括收发器、EEPROM、双口RAM、译码电路和service电路等。以神经元芯片构成网络接口,由它通过LonTalk协议与网上的其它智能节点通信,并通过双口RAM的访问实现与其它网络系统的数据交换。节点中用双口RAM充当不同网络通信过程中现场信息的接收、发送缓冲区,完成最近发送到达的交换数据的存储转发功能,缓解和避免系统缓存紧张和瓶颈的产生。用非易失性存储器EEPROM存放LonTalk网络协议固件、多任务调度程序、网络适配器通信管理程序以及网络配置信息等。节点的硬件组成结构如图1所示。

    智能节点的基本结构可分为两部分:以Neuron 3150神经元芯片主构成的LonWorks现场总线一侧,其基本功能是实现LON网络上的智能节点功能;另一侧是由单片机系统构成的串行通信接口,其功能是实现EIA RS-232-C/RS-485标准的串行通信。在这两部分间采用了双口RAM CY7C130芯片作为数据共享区。CY7C130通信接口电路的左端口与Neuron 3150芯片连接,右端口与8051单片机系统连接,如图2所示。双口RAM的两端都有独立的数据线、地址线和控制线,两端都可对双口RAM的任意单元进行 *** 作。只要两端不同时对同一地址单元进行 *** 作就不会发生冲突。BUSY显示本端口想要存取的地址正在被另一个端口 *** 作,发生硬件冲突时,后 *** 作一端的BUSY信号有效。

在应用中分别对双口RAM 1KB的存储空间进行定义,即CY7C130的同一存储单元对于Neuron3150芯片及8051单片机系统各有一个地址,这样两个系统均能对其进行存取 *** 作。在智能节点中,Neuron3150芯片对1KB空间的地址为D000H~D3FFH。8051单片机系统对它的定义为0000H~03FFH。值得注意的是,CY7C130芯片3FFH和3FEH两个单元被用作固定用途:当左端Neuron3150芯片向3FFH单元写入数据时,将产生中断信号INTR;同理,当右端8051单片机向3FEH单元写入数据时,将产生中断信号INTL。利用这两个信号,可以将系统设置为中断工作方式,达到节省通信时间的目的。由于双向数据信息的交换,可以这样来划分双口RAM存储区间:000H~01FFH单元存入Neuron 3150芯片向8051传送的信息,而200H~3FFH单元存放由8051向Neuron 3150发送的信息,并将同类但不同次的信息放在固定的存储单元,每次都以新的数据覆盖上次的数据。这样就不必进行标志的判断,只需要固定单元取数据就可以进行处理,既节省时间,又安全可靠。

1.2 硬件的抗干扰

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

#include

//*****公共变量声明*****

#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);

msg_out.code=1;

msg_out.tag=tag_out1;

for(j=0;j<30;j++)

{msg_out.data[j]=*u;

u++;

}

msg_send();//向LON网其它相关节点发送数据

}

}

图3

3 结论

实际运用证明,该智能通信节点能实现与其它多种常规智能节点(如模拟量I/O节点、开关量I/O节点等)构成现场总线控制网络,实现了RS-232-C/RS-485到LonWorks网络网关的关键技术,保证了网络接口的高速数据传送。特别在当前楼宇自动化DCS控制系统中,基于控制器串口的小型主从式RS-485控制网络系统仍然应用得相当普遍。将Lonworks和RS-485两种控制网络进行网络集成,就可以充分发挥LonWorks技术在通信上的优势,构成节点的主从式RS-485网络的分级混合控制网络设计方案,因此有很高的推广应用价值。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2419032.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-01
下一篇 2022-08-01

发表评论

登录后才能评论

评论列表(0条)

保存