当前位置:
文档之家› 现场总线_现场总线应用实例.
现场总线_现场总线应用实例.
3. 工作方式
采用主从方式:
智能节点为主设备,发出Polling命令; 热流计为从设备,响应命令后传送数据。
4. 桥接节点的约定命令格式
占据3个字节:
1 2 3 命令码(“P”的ASCII码) 流水号(自动递增) 回车符(用ASCII码表示)
4. 热流计的数据帧定义
共提供21字节的数据,分别表示为:
接收数据
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; }
智能节点 1 RS-232 接口
智能节点 2 RS-232 接口
......
智能节点 n RS-232 接口
热流计 1
热流计 2
热流计 n
各组成单元的功能
热流计用来采集从现场来的温度、压力、流量、 热量等现场信号,这些现场信号经过标度变换 和模/数转换后,可以在仪表面板上通过LED 显示出来;另外,提供有RS-232通信接口的热 流计,可以将各现场物理量发送出去。 PC机实现集中监视和管理。 PCNSS网络接口卡作为网络与PC的桥梁。 智能节点架设热流计与LON网络的桥梁。
2.节点安装的完整过程
要使一个含Neuron芯片的节点与LON网络连接,并能与网上的其 它节点进行通信,除了对此节点设备编写应用程序(包括通信)之 外,还必须对此节点进行适当的配置。 安装一个网络节点,应遵循下列步骤: 装配好整个应用设备的硬件; 编译用户的Neuron C应用程序,同时输出设备的外部接口文件以及 下载应用程序(.XIF); 将设备的外部接口文件拷贝到Profiler的XIF目录下,运行Profiler, 输入外部接口文件,创建指定外部接口的应用类型; 运行LonMaker,安装并捆绑在Profiler工具中已定义的应用类型的 设备。
stimer tmPoll;
//定义秒定时器对象,名称为tmPoll
when(timer_expires(tmPoll)) { SendData(); delay(500); ReceiveData(); if(GetCheckSum() != InBuffer[21]) return; if(PollCount != InBuffer[0]) return; //数据处理部分 tmPoll = 1; //重新启动定时器 }
命令: 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为发送数据的函数 { OutBufቤተ መጻሕፍቲ ባይዱer[0] = 0x50; //或者 = ‘P’ OutBuffer[1] = PollCount; //发送流水号 OutBuffer[2] = 0x0D; io_out(serial_out, OutBuffer, sizeof(OutBuffer));//发送命令 PollCount++; //改变流水号 if(PollCount > 100) //如果流水号大于100 PollCount = 0; //流水号置为0 }
现场总线控制系统
现场总线应用实例
一、分布式热能计量和管理系统
系统配置 节点安装的完整过程 工作方式 桥接节点的命令格式和热能仪的数据帧定义 桥接节点与热能仪的工作原理和数据结构 两个函数定义 保证数据准确性的措施 更新数据的方法
1. 系统配置
PCNSS 网络接口卡 PC 机 LonWorks 网络
1 流水号 2,3 温度 4,5 压力 6,7 热量 8,9 流量 10,11,12 累计热量 13,14,15 累计流量 16,17 掉电时间 18 掉电次数 19 时 20 分 21 校验和
多字节数据按高字节在前、 低字节在后的顺序排列。
5. 桥接节点与热流计的 工作原理和数据结构
//对温度网络变量赋值,将高字节乘以256后再加上低字节 nvoTemp = InBuffer[1] * 256 + InBuffer[2]; //对压力网络变量赋值,将高字节乘以256后再加上低字节 nvoPress = InBuffer[3] * 256 + InBuffer[4]; ...... 注意:下标从0开始计。
桥接节点在需要数据时,向热流计发送命令; 热流计利用串口中断方式予以响应,并发送数据; 需要用如下语句声明串行口I/O对象,一个为输入对 象,另一个为输出对象。 IO_8 input serial baud(4800) serial_in; IO_10 output serial baud(4800) serial_out; 数据结构:
显式报文方法: msg_out.data[0] …… msg_out.data[20] ……
(2) 处理程序 ...... if((GetCheckSum() != InBuffer[21]) return; //如果校验和不对,退出 if(PollCount != InBuffer[0]) return; //如果流水号不对,退出 其一,准确性; 其二,可靠性。
8. 更新数据的方法
网络变量方法: