⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 globalvardefs.pas

📁 基于高速铁路周边电动势计算的关键
💻 PAS
字号:
unit GlobalVarDefs;

interface

uses
  SysUtils, Math;
type

//电子表格操作相关参数
 TPara = record
    SingTral: 					Boolean;               //单轨为1 双轨为0
    RunState:           Boolean;               //正常状态为1 短路状态为0
    rat     :           Integer;               //频率
  end;

//电动势测量点相关数据
 TDDSInfo = record
    PointX     : 	  array of Single;   //线段左端点垂直距离
    PointY     :    array of Single;   //线段左端点垂直距离
    Num        :    Integer;           //点数=段数+1
  end;

  
//大地导电率相关数据
 TDDLInfo = record
    AreaPoint   : 	 array of Single;   //导电率测点公里数
    DDL_Forty   :    array of Single;   //50Hz导电率值
    DDL_Eighty  :    array of Single;   //80Hz导电率值
    Num         :    Integer;           //测点个数
  end;


//牵引变电所相关数据
 TBDSInfo = record
    beginPoint  : 	 array of Single;   //起始牵引变电所公里数
    EndPoint    :    array of Single;   //终点牵引变电所公里数
    GDB_I       :    array of Single;   //供电臂电流
    GDB_Is      :    array of Single;   //供电臂短路电流
    AveDDL      :    array of Single;   //平均大地导电率
    Num         :    Integer;           //变电所段数/供电臂的段数
  end;

 //通信线路上纵电动势参数
 TE_Infor = record
    E_w   : 					Integer;               //接触网角频率
    E_M   :           Single ;               //互感系数
    E_l   :           Single ;               //接近段长度
    E_I   :           Single ;               //接触网等效牵引电流
    E_r   :           Single ;               //供电臂的钢轨屏蔽系数
    E_K   :           Single ;               //接近段内磁综合屏蔽系数
  end;

 //根据供电臂区域和线路重新分段
 TNew_Infor = record
    StratX   : 			array of Single ;               //第一点横坐标
    StratY   :      array of Single ;               //第一点纵坐标
    EndX     :      array of Single ;               //第二点横坐标
    EndY     :      array of Single ;               //第二点纵坐标
    Lengthl  :      array of Single ;               //投影长度
    AveDDL   :      array of Single ;               //平均大地导电率
    Id       :      array of Single ;               //供电臂牵引电流
    GDB_Is   :      array of Single ;               //供电臂短路电流
    DDS_E    :      array of Single ;               //磁感应电动势
    Num      :      Integer         ;               //段数
  end;
var

 rE_Infor    : TE_Infor   ;
 rDDSInfo    : TDDSInfo   ;
 rDDLInfo    : TDDLInfo   ;
 rBDSInfo    : TBDSInfo   ;
 rNew_Infor  : TNew_Infor ;
 rPara       : TPara      ;

 MainLogoPic :string;
 AddRed:Boolean=False;//需要变红曲线标示
 StrXUnite:string;//横坐标单位CK DK AK
 AddRedValue:Integer; //电动势大于多少时变红


 DDSStr : array[1..9] of string = (  //命令名称
    '第一点横坐标',
    '第一点纵坐标',
    '第二点横坐标',
    '第二点纵坐标',
    '投影长度',
    '平均大地导电率',
    '供电臂牵引电流',
    '供电臂短路电流',
    '磁感应电动势'
 );


 //Excel模板字段
 ModeExcel : array[1..11] of string = (  //命令名称
    '起点公里数',
    '起点垂直距离',
    '终点垂直距离',
    '线路投影长度',
    '大地导电率测点里程',
    '导电率50Hz',
    '导电率800Hz',
    '起始牵引变电所',
    '终点牵引变电所',
    '供电臂电流',
    '供电臂短路电流'

);




Function Get_M1_Data(f:Integer;b:Single;a:Single) :Single;
Function Get_M2_Data(f:Integer;b:Single;a1:Single;a2:Single) :Single;
Function Get_M3_Data(f:Integer;b:Single;a1:Single;a2:Single) :Single;

function Get_I_Single_Data(oj:Single):Single;//单线钢轨屏蔽系数
function Get_I_double_Data(oj:Single):Single;//复线钢轨屏蔽系数

//第j个供区域)内电臂区域(两个牵引变电所之间的的平均大地导电率
function Get_oj_Data(li:array of Single;oi:array of Single;n:Integer):Single;

function Get_PointY(x1:Single;y1:Single;x2:Single;y2:Single;x3:Single):Single;
function Get_PointRedX(x1:Single;y1:Single;x3:Single;y3:Single):Single;

implementation
//(参数1)E_w 在ini中取

//(参数2)==通信线与接触网平行接近时50Hz和80Hz的互感系数___M==
Function Get_M1_Data(f:Integer;b:Single;a:Single) :Single;
Begin  Result := 100*ln(1+(600000)/(f*b*a*a));end;

//(参数2)==斜接近时___互感系数___M==
Function Get_M2_Data(f:Integer;b:Single;a1:Single;a2:Single) :Single;
var
  x1,x2:Single;
  s1,s2:Single;
Begin  x1:=8.89/100000*sqrt(f*b)*abs(a1);  x2:=8.89/100000*sqrt(f*b)*abs(a2);  s1:=98*(x1*ln(1+1922/x1)+4*62*arctan(x1/62));  s2:=98*(x2*ln(1+1922/x2)+4*62*arctan(x2/62));  Result := (s1-s2)/(x1-x2);end;


//(参数2)==交越时___互感系数___M==
Function Get_M3_Data(f:Integer;b:Single;a1:Single;a2:Single) :Single;
var
  x1,x2:Single;
  s1,s2:Single;
Begin  x1:=8.89/100000*sqrt(f*b)*abs(a1);  x2:=8.89/100000*sqrt(f*b)*abs(a2);  s1:=98*((x1)*ln(1+1922/(x1))+4*62*arctan((x1)/62));  s2:=98*((x2)*ln(1+1922/(x2))+4*62*arctan((x2)/62));  Result := (s1+s2)/(x1+x2);end;
//(参数3从Excel中取,有可能要根据大地导电率等进行分段)


//单线钢轨屏蔽系数 λ
function Get_I_Single_Data(oj:Single):Single;
  begin
    Result:=0.388+0.0435*log10(oj)+0.0075*power(Log10(oj),2);
   end;

//复线钢轨屏蔽系数 λ
function Get_I_double_Data(oj:Single):Single;//复线钢轨屏蔽系数
  begin
    Result:=0.286+0.0355*log10(oj)+0.0085*power(Log10(oj),2);
   end;



//σj第j个供电臂区域(两个牵引变电所之间的区域)内的平均大地导电率
function Get_oj_Data(li:array of Single;oi:array of Single;n:Integer):Single;
 var
   SumLiOi:Single;
   SumOi  :Single;
   i    :Integer;
 begin
    SumLiOi:=0;
    SumOi  :=0;
    if n=1 then
     begin
        Result := oi[0];
        Exit;
       end;
    for i:=1 to n-1 do //从1开始是因为要抛弃一点,第一点没有距离值
        begin
           SumLiOi :=SumLiOi+li[i]*log10(oi[i])/1000;
           SumOi   :=SumOi+li[i]/1000;
         end;
       Result :=power(10,SumLiOi/SumOi);
   end;

 // (参数5 Id)接触网等效牵引电流, 在excel中已给出一个供电臂一个
 // 短路状态下 短路电流不需计算,在excel中已给出

 //K为接近段内磁综合屏蔽系数(所需参数在ini文件中)
function Get_PointY(x1:Single;y1:Single;x2:Single;y2:Single;x3:Single):Single;
 var
   y3:Single;
  begin
    y3:=(x3-x1)*(y2-y1)/(x2-x1)+y1;
    Result := y3;
  end;

function Get_PointRedX(x1:Single;y1:Single;x3:Single;y3:Single):Single;
 var
   x2:Single;
  begin
    x2:=x3-(y3-AddRedValue)*(x3-x1)/(y3-y1);
    Result := x2;
  end;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -