- 技术文章
宇电AI仪表上位机控制软件的编制
2020-07-28 17:27:29 来源:厦门宇电自动化科技有限公司基于Delphi的AI仪表上位机控制软件的编制
来源:中南大学信息科学与工程学院 作者:熊俊摘要:厦门宇电公司的AI系列仪表在工业现场应用广泛,但关于使用Delphi开发AI仪表的监控软件的资料却很少,本文根据自己对AI仪表上位机监控软件的开发经历,详细介绍了基于Delphi开发AI仪表通用程序的过程,其中包括对于AI仪表数据的读写的程序介绍以及在数据读写过程应注意的一些问题。
关键词:Delphi AI仪表 串行通讯
引言:厦门宇电公司的AI系列仪表具有功能强大,操作简单,控制性能好等特点,并已在工业现场得到了广泛的应用。然而仪表在实际的工业应用中,往往需要利用计算机对其所采集的数据进行读取、保存,以及对于仪表自身参数进行读取与设定。为此宇电公司为用户提供了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;
{NO1,NO2,NO3,NO4,NO5,NO6,NO7,NO8分别对应要发送的8个数据}
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;
{NO1,NO2,NO3,NO4,NO5,NO6,NO7,NO8分别对应要发送的1~8位}
s:string;
p:PChar;
begin
NO1 := 128 + Meter_Addr;// Meter_Addr为全局变量,保存仪表地址
NO2 := NO1;
NO3 := 67;
NO4 := msg.WParam;//对于写过程WParam保存要写参数的参数地址
{按协议要求,计算出NO5、NO6、NO7以及NO8的值}
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过程以及宇电的仪表通讯协议。需要指出的是在读取过程中需要注意对某些特殊数据的处理,其中包括小数点的处理以及负数的处理。
A. 小数点的处理
在仪表数据的读取过程中,当你获得了仪表的返回数据后,必须按照AI通讯协议对返回的数据进行分析和计算。其中存在一个问题,通过计算后有的数据可能是实际数据的10倍,而有的数据可能与实际数据相同。根据笔者的观察,在仪表说明书中允许带小数点的数据都需要进行10倍处理,即将返回数据计算得到的结果然后作除10计算才能得到正确的数据。
B. 负数的处理
在仪表数据的读取过程中,往往会碰到负数的问题,此时按照AI通讯协议计算得到的数据往往会很大并且数值与实际数值不符。对于这种小于零的数据需要进行负数处理。但是如何识别一个负数呢?其实对于负数而言,当其被读取时其高位往往大于127,于是我们可以通过判断高位来识别负数。当识别到负数后,我们要显示正确的数据就存在一个转换,从二进制的角度分析可知仪表返回的数据的高位为标志位,当其为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仪表的工业应用软件中。
-
产品搜索
-
产品分类
-
AI-8x48系列高性能4路测量及控制仪表
-
AI-8x29系列双路光伏行业串级控制仪表
-
AI-8X88型 8 回路测量及控制仪表
-
AI-7xx8系列经济型多回路测量及控制仪表
-
AI-9系列单回路高性能人工智能工业调节器
-
AI-8系列单回路人工智能调节器/温控器
-
APLC系列可编程通信控制器
-
显示控制仪表
-
固态、触发器、调功器
-
AI-TCP多功能通信控制器
-
AI-9系列组合式多路AI人工智能温控器
-
AI-9*8系列高性能人工智能工业调节器
-
AI-8*8系列高性能多功能调节器
-
AI-8*9系列高性能多功能调节器
-
AI大屏智能温控器/调节器
-
AI大屏多路显示报警仪表
-
测量显示报警仪表
-
控制柜、PLC、安全栅
-
AI分体式无纸记录仪
-
经济型智能温控器/调节器
-
多路PID温度控制器
-
可编程温度变送器
-
行业专用温控仪表
-
电力测量仪表
-
AIDCS智能分布式控制系统
-
电炉控制柜
-
-
公司相册
-
电商图片
110张图片 -
AI-8系列*新产品图片
126张图片 -
导轨安装型温控模块
96张图片 -
企业荣誉证书
122张图片 -
*新高精度智能PID图片
65张图片 -
电力测量仪表
55张图片 -
控制柜
11张图片 -
宇电主营*新产品图片
73张图片 -
无纸记录仪触摸屏
25张图片 -
宇电信号隔离器、变送器、安全栅
15张图片
-