EDA远端测控模块的Delphi串口通信-PLC技术网(www.plcjs.com)-可编程控制器技术门户


EDA远端测控模块的Delphi串口通信

 (点击题目可以在互联网中搜索该题目的相关内容)
日期:2006-4-25 0:05:06     来源:本文摘自《PLC&FA》   作者: 点击:
点击【 大  中  小 】,可以选择字体的大小,以便你阅读.

1  EDA远端测控模块指令介绍
    EDA9033模块是一智能型电参数数据采集模块,可测量三相三线制或三相四线制电路中的三相电流、电压的真有效值、功率、功率因素和电度数。当主机发送读数据命令,模块便将采集的数据回送主机(其它模块也是根据上位机所发送的不同的指令提供不同的数据给上位机)。它有2种通信协议:ASCII码协议和十六进制LC-01协议。下面介绍ASCII码协议的读数据指令,指令的格式如下:
    *命令:#(Addr)A     (注:为回车键)
    *响应:>(Data Ua) (Data Ia) (Data Ub) (Data Ib) (Data Uc) (Data Ic)
    (Data P) (Data Q) (Data COSФ)
    *Data:其数值为标称满量程的百分数,例如电流标称满量程为5A,若输出数据为+0.8000,则实际电流值=+0.8000×5A=+4.0000A。
下面举一个具体的例子,设标称电流量程I0=5A,电压量程U0=100V。
    *命令:#01A    
    *响应:>+1.0000+0.6000+1.0000+0.6000+1.0000+  0.6000+0.6000+0.0000+1.0000
则测量的数值分别为:
Ua=Ub=Uc=+1.0000×U0=100.00V,
Ia=Ib=Ic=+0.6000×I0=3.0000A,
P=+900.00W,Q=0Var,COSФ=+1.0000。
其它的EDA测控模块的工作方式和指令格式与EDA9033模块类似。   

2  Delphi串口通信简介
    要用Delphi编写串口通信程序,需要借助各种通信控件,MSComm通信控件就是其中之一。Microsoft Communication Control(简称为MSComm)是Microsoft公司提供的Windows下的串口通信编程的ActiveX控件。MSComm通信控件具有丰富的与串口通信密切相关的属性及事件,提供了一系列标准通信命令的接口,可以用它创建全双工的、事件驱动的、高效实用的通信程序。
    MSComm通信控件提供下列两种处理通信的方式:
    (1) 事件驱动通信是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在Carrier Detect(CD)或Request To Send(RTS)信号线上一个字符到达或一个变化发生时。在这些情况下,可以利用MSComm控件的OnComm事件捕获并处理这些通信事件。OnComm事件还可以检查和处理通信错误。
    (2) 在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。它没有对每接收一个字符都产生事件,这种方法有时是更可取的。下面都采用这种处理通信的方式。

3  串口通信中出现的问题及其解决方案
    下面只是对EDA远端测控模块的Delphi串口通信中出现的问题给予总结、归纳,并给出其解决方案。至于EDA远端测控模块串口通信的应用可参考文献[3]。
3.1 问题一及其解决方案
    (1) 问题一:EDA9050模块的读数据指令$046有时出现乱码,得不到期望的数据。简单地说,该模块有时能得到期望的数据,有时得不到。
    (2) 问题一的分析:给EDA9050模块发读数据指令$046时,期望得到的数据是:!007F00,感叹号后两位00是EDA9050的输出状态,接下来的两位7F是其输入状态,其它的位是固定的。图1是EDA模块的测试软件界面,从图1中我们可以发现这样一条规律:当收到的数据正确时,后面的2个零都存在。


    (3) 问题一的解决方案:从上面的分析我们知道关键点是后面的2个零。一收到数据,我便把中间的六位数保存在数组A504中,通过判断数组A504的最后两位是否同时为零,如果最后两位同时为零,说明收到的数据是正确的,这时可以根据数据中间的两位状态进入相应的处理程序。否则说明收到的数据是错误的,这时必须重发一条EDA9050模块的读数据指令$046

本新闻共3页,当前在第11 2  3  

上一篇: 基于Winsock的网络通信程序设计
下一: 用VB实现PLC与计算机间的串行通信