280 likes | 428 Views
现场总线控制系统. 第 5 讲 现场总线应用实例. 信息学院自动化系 凌志浩. 一、分布式热能计量和管理系统. 系统配置 节点安装的完整过程 工作方式 桥接节点的命令格式和热能仪的数据帧定义 桥接节点与热能仪的工作原理和数据结构 两个函数定义 保证数据准确性的措施 更新数据的方法. 1. 系统配置. 各组成单元的功能. 热流计用来采集从现场来的温度、压力、流量、热量等现场信号,这些现场信号经过标度变换和模/数转换后,可以在仪表面板上通过 LED 显示出来;另外,提供有 RS-232 通信接口的热流计,可以将各现场物理量发送出去。
E N D
现场总线控制系统 第5讲 现场总线应用实例 信息学院自动化系 凌志浩
一、分布式热能计量和管理系统 • 系统配置 • 节点安装的完整过程 • 工作方式 • 桥接节点的命令格式和热能仪的数据帧定义 • 桥接节点与热能仪的工作原理和数据结构 • 两个函数定义 • 保证数据准确性的措施 • 更新数据的方法
各组成单元的功能 • 热流计用来采集从现场来的温度、压力、流量、热量等现场信号,这些现场信号经过标度变换和模/数转换后,可以在仪表面板上通过LED显示出来;另外,提供有RS-232通信接口的热流计,可以将各现场物理量发送出去。 • PC机实现集中监视和管理。 • PCNSS网络接口卡作为网络与PC的桥梁。 • 智能节点架设热流计与LON网络的桥梁。
2.节点安装的完整过程 要使一个含Neuron芯片的节点与LON网络连接,并能与网上的其它节点进行通信,除了对此节点设备编写应用程序(包括通信)之外,还必须对此节点进行适当的配置。 安装一个网络节点,应遵循下列步骤: • 装配好整个应用设备的硬件; • 编译用户的Neuron C应用程序,同时输出设备的外部接口文件以及下载应用程序(.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_8 input serial baud(4800) serial_in;IO_10 output serial baud(4800) serial_out; • 数据结构: 命令: OUTBUF[0]←”P”的ASCII码(50H,这利用0X50表示) OUTBUF[1]←流水号(一个递增的正整数) OUTBUF[2]←回车符( ASCII码为0X0D) 数据格式:INBUF[0]~INBUF[20]对应21个字节。
6.两个函数定义 发送命令: unsigned short OutBuffer[3]; //定义发送缓冲区unsigned short PollCount = 0; //定义流水号......void SendData()//SendData为发送数据的函数{ OutBuffer[0] = 0x50; //或者= ‘P’ OutBuffer[1] = PollCount; //发送流水号OutBuffer[2] = 0x0D; io_out(serial_out, OutBuffer, sizeof(OutBuffer));//发送命令PollCount++; //改变流水号if(PollCount > 100) //如果流水号大于100 PollCount = 0; //流水号置为0}
接收数据 unsigned short InBuffer[21]; //定义接收缓冲区 void ReceiveData() //ReceiveData为接收数据的函数{ io_in(serial_in, InBuffer, 21);}
7. 保证数据准确性的措施 (1) 计算校验和的程序 short GetCheckSum(void){ short i, Result; Result = 0; //结果先清零for(i = 0; I < 20; I++) Result += InBuffer[I]; return Result;}
(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开始计。
stimer tmPoll; //定义秒定时器对象,名称为tmPoll when(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()显式报文方法:msg_out.data[0]……msg_out.data[20]……msg_send()
组态时通过DDE方式传递数据 填写如下几项: DDE Application/Server Name:LMSRV1 DDETopic(Access) Name:任意 如:DDETopic或 MsgTag TagName(Item):NodeName.NetVarName msg_in_1 (1为Code代码)
二、采用现场总线与公共 电话网的远程监控系统 需求:在电力、热能、供水、煤气、污水监控、环境监测等分散目标的监控系统中,需要解决现场装置的实时数据采集、控制和现场信号的网络通信问题。 解决方案: 远程分布式监控处理系统是一种较为完美的解决方案。 • 用直接嵌入网络通信协议的智能仪表完成现场实时信息的检测、控制和通信任务; • 现场采用现场总线形式,将分布在各处的智能仪表联网; • 远程采用公共电话线现存资源联网; • 真正用网络技术构成监控系统的操作平台,为构成高性 能的监控系统提供了保障。
智能仪表1 FCS网络 . . . … MODEM 智能仪表n 可连接到信息网 RS-232 网关 … 路由器1 . . . RS-232 MODEM 智能仪表1 PC监控机 FCS网络 . . . … 公共电话网 智能仪表m MODEM … RS-232 路由器k 1.系统结构
2.系统各部分功能 要实现监控中心对分布在各区域的现场装置和情况进行远程遥测、遥信、遥控,准确获取各种现场信息,要求系统中的各部件各司其职。 • 各智能仪表负责对现场信号的采集、状态监测和实时控制等,并利用LonWorks技术提供的通信服务,实现复杂分布式的底层应用,并与其它智能仪表和路由器进行对等方式的双向数字通信; • 作为远程分布式监控系统神经中枢的路由器,利用Neuron芯片的串行I/O对象、MODEM和公共电话网等技术支持和现成资源,承担智能仪表与监控中心主机之间的命令或实时数据的双向传输; • 监控中心的主机则通过RS-232标准串行接口,直接与MODEM相连,远程通过公用电话网对分布在现场的路由器进行监控,实施对智能仪表的过程组态、维护管理、网络通信、信息处理和动态监控等操作,以及与信息网之间的数据通信。
3.主机与路由器的远程通信 • 通信功能需求 监控主机与现场路由器均应具有“拨入”和“拨出”功能,以实现互相拨号呼叫和响应。 监控中心应能通过程序自动方式或人工命令方式进行拨号,采用“点名”方式与指定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接口所必需的基本控制信号和串行通信接口。 #define BaudRate 4800 //定义数据传输的波特率 IO_3 output bit RTS; //将Neuron芯片的IO_3脚定义为RTS信号的控制引脚 IO_8 input serial baud(BaudRate) Serial_In; //将Neuron芯片的IO_8脚定义为 串行输入脚 IO_10 output serial baud(BaudRate) Serial_Out; //将Neuron芯片的IO_10脚定 义为串行输出脚
(4) MODEM的操作及编程 一般的MODEM均提供一组通用的AT命令、S寄存器和结果码集。 • AT命令可与软件一起用来配置MODEM,实现与远程系统的通信。每一条AT命令都对应MODEM的某种动作。 • 在数据通信前,发送方应以音频或脉冲形式发出拨号命令,其MODEM一直在等待着对方MODEM送来的载波信号,如果未能在规定时间内检测到载波信号,MODEM会自动释放线路并送回结果码“NO CARRIER”;一旦检测到载波信号,MODEM会送回结果码“CONNECT”,表示双方线路连接成功,此时即可与远程系统进行数据通信。 • 发送方在发出AT命令后,可根据其MODEM的返回信息得知AT命令是否执行、电话线路是否空闲、双方MODEM是否正确连接、波特率如何等信息,并据此决定重新呼叫还是进入数据通信阶段。 • 待数据通信完成后,双方MODEM要用“+++”命令拆链挂机,将数据传输状态转换为AT命令状态,此时,可以用“ATH0”命令来实现挂机。
接收方 发送方 发送“拨号”AT命令字符串 “ATDXnnnn” 等待MODEM的振铃信号 No 有振铃信号? 等待对方的“线路连接”状态 Yes No 线路连接成功? 发送“响应”AT命令字符串 “ATA” Yes 发送数据 接收数据 挂机 挂机 ….. ….. 注:ATD命令中的X为拨号方式(T、P分别代表音频或脉冲方式),nnnn为目的地电话号码
按照MODEM的操作规程,对这种需要实现点对点方式通信的远程分布式监控系统,要求发送方在发送数据时,接收方必须处于等待状态,在识别出发送方后应给出应答操作,在接收方应答之后,线路进行连接,发送方与接收方的MODEM同时向双方发出“线路连接”的状态。当收发双方从MODEM中接收到线路连接的信号(即线路连接成功)之后,双方就进入数据传输阶段。在数据传输完毕后双方挂断线路,一次通信过程就此结束。按照MODEM的操作规程,对这种需要实现点对点方式通信的远程分布式监控系统,要求发送方在发送数据时,接收方必须处于等待状态,在识别出发送方后应给出应答操作,在接收方应答之后,线路进行连接,发送方与接收方的MODEM同时向双方发出“线路连接”的状态。当收发双方从MODEM中接收到线路连接的信号(即线路连接成功)之后,双方就进入数据传输阶段。在数据传输完毕后双方挂断线路,一次通信过程就此结束。