现场总线水轮机组状态监测系统
显示报文的初始化和发送部分的实现程序如下:
初始化节点地址
#include所需头文件
#include
#include
domain_structmydomain;//定义域结构
mydomain=*(access_domain(0));//读节点域表
mydomain.subnet=0;//设置节点子网号
mydomain.node=5;//设置节点号
update_damain(mydomain,0);//写节点域表
发送数据报文
msg_tagtest_out;//声明报文标签
msg_out.tag=test_out;//传递报文标签
msg_out.dest_addr.snode.node=0;//定义目的地址节点号
msg_out.dest_addr.snode.subnet=0;//定义目的地址子网号
msg_out.code=0x0c;//定义报文码
msg_out.service=ACKD;//定义报文服务类型
msg_out.dest_addr.snode.type=1;//定义目的节点类型
memcpy(msg_out.data,a0,nLength);//填充报文内容
msg_send();//发送报文
在初始化程序中,用数据结构domain_struct定义节点的子网号、节点号,即设置节点在LON总线上的地址。在发送程序中利用msg_out结构构造报文,其中,目的地址指向适配器。显示报文的接收程序与发送部分类似,不再多述。
3.2上位机通信程序
上位机与现场节点通讯的数据通过适配器转发,适配器的IP必须事先指定。上位机利用msg_out变量(如前所述)创建显示报文,将目标节点的地址、需要改变的参数或要下达的命令填充到该变量中,然后用UDP封装该变量,通过以太网发往适配器;适配器解析上位机发来的数据包,得到显示报文,将该显示报文直接向相应的节点发送。同样,适配器也将现场节点发来的显示报文通过UDP封装后发往上位机,上位机解包后根据节点等信息将数据存入相应的数据库,等待后后续的信号处理模块和故障诊断模块调用
评论