现场总线控制系统现场总线应用实例一、分布式热能计量和管理系统系统配置节点安装的完整过程工作方式桥接节点的命令格式和热能仪的数据帧定义桥接节点与热能仪的工作原理和数据结构两个函数定义保证数据准确性的措施更新数据的方法1.系统配置PC机PCNSS网络接口卡热流计1热流计2热流计n......LonWorks网络RS-232接口RS-232接口RS-232接口智能节点1智能节点2智能节点n各组成单元的功能热流计用来采集从现场来的温度、压力、流量、热量等现场信号,这些现场信号经过标度变换和模/数转换后,可以在仪表面板上通过LED显示出来;另外,提供有RS-232通信接口的热流计,可以将各现场物理量发送出去。PC机实现集中监视和管理。PCNSS网络接口卡作为网络与PC的桥梁。智能节点架设热流计与LON网络的桥梁。2.节点安装的完整过程要使一个含Neuron芯片的节点与LON网络连接,并能与网上的其它节点进行通信,除了对此节点设备编写应用程序(包括通信)之外,还必须对此节点进行适当的配置。安装一个网络节点,应遵循下列步骤:装配好整个应用设备的硬件;编译用户的NeuronC应用程序,同时输出设备的外部接口文件以及下载应用程序(.XIF);将设备的外部接口文件拷贝到Profiler的XIF目录下,运行Profiler,输入外部接口文件,创建指定外部接口的应用类型;运行LonMaker,安装并捆绑在Profiler工具中已定义的应用类型的设备。3.工作方式采用主从方式:智能节点为主设备,发出Polling命令;热流计为从设备,响应命令后传送数据。4.桥接节点的约定命令格式占据3个字节:1命令码(“P”的ASCII码)2流水号(自动递增)3回车符(用ASCII码表示)4.热流计的数据帧定义共提供21字节的数据,分别表示为:1流水号2,3温度4,5压力多字节数据按高字节在前、6,7热量低字节在后的顺序排列。8,9流量10,11,12累计热量13,14,15累计流量16,17掉电时间18掉电次数19时20分21校验和5.桥接节点与热流计的工作原理和数据结构桥接节点在需要数据时,向热流计发送命令;热流计利用串口中断方式予以响应,并发送数据;需要用如下语句声明串行口I/O对象,一个为输入对象,另一个为输出对象。IO_8inputserialbaud(4800)serial_in;IO_10outputserialbaud(4800)serial_out;数据结构:命令:OUTBUF[0]←”P”的ASCII码(50H,这利用0X50表示)OUTBUF[1]←流水号(一个递增的正整数)OUTBUF[2]←回车符(ASCII码为0X0D)数据格式:INBUF[0]~INBUF[20]对应21个字节。6.两个函数定义发送命令:unsignedshortOutBuffer[3];//定义发送缓冲区unsignedshortPollCount=0;//定义流水号......voidSendData()//SendData为发送数据的函数{OutBuffer[0]=0x50;//或者=‘P’OutBuffer[1]=PollCount;//发送流水号OutBuffer[2]=0x0D;io_out(serial_out,OutBuffer,sizeof(OutBuffer));//发送命令PollCount++;//改变流水号if(PollCount100)//如果流水号大于100PollCount=0;//流水号置为0}接收数据unsignedshortInBuffer[21];//定义接收缓冲区voidReceiveData()//ReceiveData为接收数据的函数{io_in(serial_in,InBuffer,21);}7.保证数据准确性的措施(1)计算校验和的程序shortGetCheckSum(void){shorti,Result;Result=0;//结果先清零for(i=0;I20;I++)Result+=InBuffer[I];returnResult;}(2)处理程序......if((GetCheckSum()!=InBuffer[21])return;//如果校验和不对,退出if(PollCount!=InBuffer[0])return;//如果流水号不对,退出其一,准确性;其二,可靠性。8.更新数据的方法网络变量方法://对温度网络变量赋值,将高字节乘以256后再加上低字节nvoTemp=InBuffer[1]*256+InBuffer[2];//对压力网络变量赋值,将高字节乘以256后再加上低字节nvoPress=InBuffer[3]*256+InBuffer[4];......注意:下标从0开始计。stimertmPoll;//定义秒定时器对象,名称为tmPollwhen(timer_expires(tmPoll)){SendData();delay(500);ReceiveData();if(GetCheckSum()!=InBuffer[21])return;if(PollCount!=InBuffer[0])return;//数据处理部分tmPoll=1;//重新启动定时器}显式报文方法:msg_out.data[0]……msg_out.data[20]……msg_send()组态时通过DDE方式传递数据填写如下几项:DDEApplication/ServerName:LMSRV1DDETopic(Access)Name:任意如:DDETopic或MsgTagTagName(Item):NodeName.NetVarNamemsg_in_1(1为Code代码)二、采用现场总线与公共电话网的远程监控系统需求:在电力、热能、供水、煤气、污水监控、环境监测等分散目标的监控系统中,需要解决现场装置的实时数据采集、控制和现场信号的网络通信问题。解决方案:远程分布式监控处理系统是一种较为完美的解决方案。用直接嵌入网络通信协议的智能仪表完成现场实时信息的检测、控制和通信任务;现场采用现场总线形式,将分布在各处的智能仪表联网;远程采用公共电话线现存资源联网;真正用网络技术构成监控系统的操作平台,为构成高性能的监控系统提供了保障。1.系统结构智能仪表1…………...FCS网络PC监控机RS-232RS-232RS-232...MODEMMODEM路由器k路由器1MODEM公共电话网智能仪表nFCS网络...智能仪表1智能仪表m可连接到信息网网关2.系统各部分功能要实现监控中心对分布在各区域的现场装置和情况进行远程遥测、遥信、遥控,准确获取各种现场信息,要求系统中的各部件各司其职。各智能仪表负责对现场信号的采集、状态监测和实时控制等,并利用LonWorks技术提供的通信服务,实现复杂分布式的底层应用,并与其它智能仪表和路由器进行对等方式的双向数字通信;作为远程分布式监控系统神经中枢的路由器,利用Neuron芯片的串行I/O对象、MODEM和公共电话网等技术支持和现成资源,承担智能仪表与监控中心主机之间的命令或实时数据的双向传输;监控中心的主机则通过RS-232标准串行接口,直接与MODEM相连,远程通过公用电话网对分布在现场的路由器进行监控,实施对智能仪表的过程组态、维护管理、网络通信、信息处理和动态监控等操作,以及与信息网之间的数据通信。3.主机与路由器的远程通信(1)通信功能需求监控主机与现场路由器均应具有“拨入”和“拨出”功能,以实现互相拨号呼叫和响应。监控中心应能通过程序自动方式或人工命令方式进行拨号,采用“点名”方式与指定FCS的路由器建立链路,待双方的MODEM连接成功后,自动送出命令,要求路由器将各智能仪表的实时检测数据送往监控中心;各智能仪表可根据当时监控设备和现场的实际状况,主动通过路由器以程序自动拨号的方式,请求与监控中心的主机建立链路,及时把现场信息传送给监控主机,以取得其对现场智能仪表的有效管理和操作;当主机与现场路由器间的数据传输完毕后,均能自动实现将双方MODEM拆链、挂机的控制程序,以正常结束一次完整的通信过程。(2)监控主机串行通信口的初始化监控主机PC均配有串行异步通信接口,其接口板上所用的通用异步接收/发送器(UART)是一片可编程8250芯片,内部有用于编程的波特率因子、线路控制、调制解调器控制、中断控制等寄存器。为保障MODEM间的异步串行通信数据的传送格式正确,需对串行通信口和MODEM进行初始化,以正确设定串行通信的波特率、数据传送格式、是否允许中断、发送或接收数据、以及对MODEM的初始化状态设置等。只有按照双方的通信数据格式要求和通信速率等性能,正确设置好初始状态,才能保证通信成功。(3)路由器中Neuron串行I/O对象的编程Neuron芯片和LonTalk协议不仅构成了智能仪表的核心,也构成了路由器的核心。路由器中的Neuron芯片既要像一般智能仪表那样,在网内实现点对点通信;同时还要通过相应的接口对象实施与MODEM的连接与控制,以实现现场FCS与监控主机之间的通信。利用Neuron芯片直接提供的I/O接口、以及所支持的位输出I/O对象和串行I/O对象,通过对I/O对象的定义、编程,可方便地实现与MODEM的接口和基本控制,从而满足远程数据载波方式的异步串行通信功能。下列语句有效定义了MODEM接口所必需的基本控制信号和串行通信接口。#defineBaudRate4800//定义数据传输的波特率IO_3outputbitRTS;//将Neuron芯片的IO_3脚定义为RTS信号的控制引脚IO_8inputserialbaud(BaudRate)Serial_In;//将Neuron芯片的IO_8脚定义为串行输入脚IO_10outputserialbaud(BaudRate)Serial_Out;//将Neuron芯片的IO_10脚定义为串行输出脚(4)MODEM的操作及编程一般的MODEM均提供一组通用的AT命令、S寄存器和结果码集。AT命令可与软件一起用来配置MODEM,实现与远程系统的通信。每一条AT命令都对应MODEM的某种动作。在数据通信前,发送方应以音频或脉冲形式发出拨号命令,其MODEM一直在等待着对方MODEM送来的载波信号,如果未能在规定时间内检测到载波信号,MODEM会自动释放线路并送回结果码“NOCARRIER”;一旦检测到载波信号,MODEM会送回结果码“CONNECT”,表示双方线路连接成功,此时即可与远程系统进行数据通信。发送方在发出AT命令后,可根据其MODEM的返回信息得知AT命令是否执行、电话线路是否空闲、双方MODEM是否正确连接、波特率如何等信息,并据此决定重新呼叫还是进入数据通信阶段。待数据通信完成后,双方MODEM要用“+++”命令拆链挂机,将数据传输状态转换为AT命令状态,此时,可以用“ATH0”命令来实现挂机。NoNo…..YesYes发送方接收方发送“拨号”AT命令字符串“ATDXnnnn”发送“响应”AT命令字符串“ATA”等待对方的“线路连接”状态线路连接成功?等待MODEM的振铃信号有振铃信号?发送数据接收数据挂机挂机…..注:ATD命令中的X为拨号方式(T、P分别代表音频或脉冲方式),nnnn为目的地电话号码按照MODEM的操作规程,对这种需要实现点对点方式通信的远程分布式监控系统,要求发送方在发送数据时,接收方必须处于等待状态,在识别出发送方后应给出应答操作,在接收方应答之后,线路进行连接,发送方与接收方的MODEM同时向双方发出“线路连接”的状态。当收发双方从MODEM中接收到线路连接的信号(即线路连接成功)之后,双方就进入数据传输阶段。在数据传输完毕后双方挂断线路,一次通信过程就此结束。本讲结束