3377体育

您好!接待会见3377体育网站!
全国效劳咨询热线:

18030056903

目今位置:首页 > 技术文章 > 基于Delphi的AI仪表上位机控制软件的体例

基于Delphi的AI仪表上位机控制软件的体例

更新时间:2017-10-09      点击次数:2712

厦门3377体育公司的AI系列仪表在工业现场应用广泛,但关于使用Delphi开发AI仪表的监控软件的资料却很少,本文凭据自己对AI仪表上位机监控软件的开发经历,详细介绍了基于Delphi开发AI仪表通用程序的历程,其中包括关于AI仪表数据的读写的程序介绍以及在数据读写历程应注意的一些问题。

要害词:Delphi AI仪表 串行通讯

    引言:厦门3377体育公司的AI系列仪表具有功效强大,操作简单,控制性能好等特点,并已在工业现场获得了广泛的应用。然而仪表在实际的工业应用中,往往需要利用盘算机对其所收罗的数据进行读取、生存,以及关于仪表自身参数进行读取与设定。为此3377体育公司为用户提供了AI系列仪表的串行通讯接口模块,装置此模块后,用户能够便当地通过盘算机232口实现与仪表的数据交换。本文就AI-708P仪表作为规范,详细介绍如何利用Delphi开发AI系列仪表的上位机监控软件。

1.具体实现

    AI仪表是通过盘算机串口与盘算机连接的,其具有自己的串行通讯协议,软件可以凭据此通讯协议实现对仪表的数据读取与设定,以及对仪表状态的读取与设定。网上关于AI仪表通讯程序的例程多为VB体例,并且程序较为简单,功效较为简单,倒运于二次对仪表进行全面开发。在此笔者自己针对708P型温度控制器体例了一个AI仪表的上位机监控软件以实现盘算机对AI仪表监控。本文凭据自己的开发经历,详细介绍了基于delphi开发AI仪表上位机通用程序的开发全历程,以及在开发历程中所应注意的一些事项。
1.1程序功效介绍
    本软件为AI仪表通用监控软件,其包括以下功效:
1. AI仪表检测与识别
2. AI仪表参数的读取与设定
3. AI仪表的状态读取与设定
在下面将对以上功效的实现作相应介绍。
1.2功效实现
    在开发历程中,为了缩短开发周期,软件中使用了第三方控件SPCOMM实现串行通讯功效,虽然如果读者感兴趣可以自己实验使用WINDOWS API函数自行体例此功效,关于WINDOWS API函数以及控件SPCOMM的使用要领,在本文中不作介绍,读者可以参看相关资料。在介绍程序功效前必须先说明两个历程:
    A. 读仪表参数历程TAI.ReadData(var msg: TMessage)程序代码如下:
var
NO1,NO2,NO3,NO4,NO5,NO6,NO7,NO8:Cardinal;

s : string;
p : PChar;
begin
NO1 := 128 + msg.WParam;//关于读数据历程WParam生存要读仪表的地点
NO2 := NO1;
NO3 := 82;
NO4 := msg.LParam; //关于读数据历程LParam生存要读的参数的参数地点
NO5 := 0;
NO6 := 0;
NO7 := 82 + msg.WParam;
NO8 := msg.LParam; 
s := chr(NO1)+chr(NO2)+chr(NO3)+chr(NO4)+chr(NO5)+chr(NO6)+chr(NO7)+chr(NO8);
p := PChar(s);
Comm1.WriteCommData(p,Length(s));
end;
    B. 写仪表参数历程TAI.SetData(var msg: TMessage) 程序代码如下:
var
NO1,NO2,NO3,NO4,NO5,NO6,NO7,NO8:Integer;

s:string;
p:PChar;
begin
NO1 := 128 + Meter_Addr;// Meter_Addr为全局变量,生存仪表地点
NO2 := NO1;
NO3 := 67;
NO4 := msg.WParam;//关于写历程WParam生存要写参数的参数地点

NO5 := (msg.LParam mod 256);// 关于写历程LParam生存要写参数值
NO6 := (msg.LParam div 256);
NO7 := ((67 + Meter_Addr + msg.LParam + msg.WParam *256) mod 256);
NO8 := ((67 + Meter_Addr + msg.LParam + msg.WParam *256) div 256);
s := chr(NO1)+chr(NO2)+chr(NO3)+chr(NO4)+chr(NO5)+chr(NO6)+chr(NO7)+chr(NO8);
p := PChar(s);
Comm1.WriteCommData(p,Length(s));
end;
    在程序中界说两个消息常量:
WM_Set = WM_USER + 100
WM_Read = WM_USER + 200
    通过发送以上两个消息并附带相应的参数,实现对以上两个历程的挪用,从而实现对消息对仪表数据的读取与设定。以上两个历程凭据AI仪表通讯协议,盘算出每一位发送的数据,然后组合成字符串,一次性发送给仪表。每个参数代表的意义见程序解释。
1.2.1 AI仪表检测
    在实际应用中,盘算机往往不止连接一个仪表,所以需要对差别地点仪表进行检索和识别:
    关于仪表检索是通过对地点的辨识实现的,利用AI通讯协议的读行动读取差别地点的仪表的地点参数,如果此时会返回值,并且其读回的数据与发送所设定的地点变量值相等,则确定检索到此地点的仪表,并添加到仪表行列中。
    关于仪表的识别即对已保存的仪表的识别的,即仪表必须有其明确且独立的地点。识别仪表要害在识别仪表的段数(单段或多段),关于差别段数的仪表,其某些参数地点所对应的参数意义有所差别。在软件中是通过读取一个牢固参数地点的数据实现的,好比说:关于多段仪表来说,读取某一段的数据时(其参数地点通常都会大于25),仪表会返回相应参数地点的返回值,然而关于单段仪表,向该地点发送数据仪表并不会作任何反应。
1.2.2 AI仪表参数读取
    软件能够读取仪表内所有可读取的数据,包括收罗的数据、控制数据以及对仪表的设定。自动识别小数点位数,按仪表表盘显示花样显示读取的数据。关于仪表的读取历程实现可以参看以上的ReadData历程以及3377体育的仪表通讯协议。需要指出的是在读取历程中需要注意对某些特殊数据的处理,其中包括小数点的处理以及负数的处理。
A. 小数点的处理
    在仪表数据的读取历程中,当你获得了仪表的返回数据后,必须凭据AI通讯协议对返回的数据进行剖析和盘算。其中保存一个问题,通过盘算后有的数据可能是实际数据的10倍,而有的数据可能与实际数据相同。凭据笔者的视察,在仪表说明书中允许带小数点的数据都需要进行10倍处理,即将返回数据盘算获得的结果真后作除10盘算才华获得正确的数据。
B. 负数的处理
    在仪表数据的读取历程中,往往会碰到负数的问题,此时凭据AI通讯协议盘算获得的数据往往会很大并且数值与实际数值不符。关于这种小于零的数据需要进行负数处理。可是如何识别一个负数呢?其实关于负数而言,当其被读取时其高位往往大于127,于是我们可以通过判断高位来识别负数。当识别到负数后,我们要显示正确的数据就保存一个转换,从二进制的角度剖析可知仪表返回的数据的高位的zui高位为标记位,当其为0时代表正数,当其为1时代表负数。凭据以上剖析,如果我们需要获得负数的数值,只需将盘算出来的数据减去65536即可。
    以下是接收历程中的一些处理程序:
    接收历程:
var
p : PChar;
begin
p := Buffer;
buffer为SPCOMM的接收历程中所接收到的数据。
    负数处理历程: 
if (p7>127 then
ReData:=((p6+p7*256)-65536)/10
else
ReData := (p6+p7*256)/10;
p6、p7是接收到数据的第7位和第8位的转化为整数后的值,可以通过p6:=ord(p[6])(p为接收历程中的p)获得。凭据以上历程获得的数据ReData再经过小数点剖析及即可获得与仪表一致的数据。
1.2.3 状态的读取
    仪表的状态包括运行状态及报警状态,可以通过读取仪表的第21号参数同时获取。
    读取21号参数时,仪表返回的参数值是系统仪表的运行状态值,由于各个位代表的仪表运行状态差别,所以需要对其进行剖析。返回数据的第3位代表停止位,第2位代表暂停位,其余的0位和1位代表运行位。只要2和3位不为1即代表仪表处于运行状态。所以当我们检测仪表的运行状态时,我们只需要对这些位进行识别即可。
    读取21号参数时,仪表同时会返回报警状态,通过对报警状态位的识别,可以获取仪表的报警状态。MV值的0、1、2、3位划分代表仪表的上限报警、下限报警、正偏差报警、负偏差报警状态,其为1有效。
1.2.4 参数设定
    关于参数的设定可以参考仪表通讯协议以及历程SetData,其需要注意的是其数据的盘算、小数点处理以及负数的处理。其处理方法与数据的读取基内幕同,在此不再详细讲叙。

2.结语

    通过以上要领可以实现仪表与盘算机的数据交换,并且具有程序简单、模块化、运行可靠、功效全面等特点。该程序源代码已被本公司广泛应用于AI仪表的工业应用软件中。

3377体育
地点:福建省厦门市火炬高新区火炬北路17号3377体育科技大厦
邮箱:2484289854@qq.com
传真:86-0592-5651630转115
关注我们
接待您关注我们的微信民众号了解更多信息:
接待您关注我们的微信民众号
了解更多信息
网站地图