Commit 8692c7b7 authored by 潘栩锋's avatar 潘栩锋 🚴

添加 AD盒模拟器,吹膜 3d旋转模拟

parent 57a29c0d
......@@ -6,11 +6,11 @@ using System.ComponentModel;
using System.Collections.ObjectModel;
using System.IO;
using Newtonsoft.Json;
using AutoMapper;
namespace FLY.Simulation.Blowing
{
[JsonObject(MemberSerialization.OptIn)]
public class Blowing:INotifyPropertyChanged
{
#region 参数
......@@ -18,7 +18,6 @@ namespace FLY.Simulation.Blowing
/// <summary>
/// 360° 连续旋转
/// </summary>
[JsonProperty]
public bool Is360 { get; set; }
/// <summary>
/// 正向旋转
......@@ -43,44 +42,37 @@ namespace FLY.Simulation.Blowing
/// <summary>
/// 1圈总脉冲
/// </summary>
[JsonProperty]
public double PosOfR { get; set; }
/// <summary>
/// 两个限位间的角度范围 != 旋转的总角度,限位值 °
/// </summary>
[JsonProperty]
public double AngleRange { get; set; }
/// <summary>
/// 复位信号角度范围°
/// </summary>
[JsonProperty]
public double OrgAngleRange { get; set; }
/// <summary>
/// 旋转的速度, min/R 1R = 360°
/// </summary>
[JsonProperty]
public double AngleVelocity { get; set; }
/// <summary>
/// 加速时间 单位 s
/// </summary>
[JsonProperty]
public double AngleAccTime { get; set; }
/// <summary>
/// 减速时间 单位 s
/// </summary>
[JsonProperty]
public double AngleDecTime { get; set; }
/// <summary>
/// 换方向冷却时间 单位s
/// </summary>
[JsonProperty]
public double AngleCoolTime { get; set; }
#endregion
......@@ -95,14 +87,17 @@ namespace FLY.Simulation.Blowing
/// <summary>
/// 膜走带速度, m/min
/// </summary>
[JsonProperty]
public double FilmVelocity { get; set; }
/// <summary>
/// 人字架到测厚仪的距离 23m
/// </summary>
[JsonProperty]
public double FilmDistance { get; set; }
/// <summary>
/// FilmDistance+mFilmLength3D[CurrAngle]
/// </summary>
public double CurrFilmDistance { get; set; }
public bool Is3D { get; set; }
/// <summary>
/// 辊轴承,单位mm
......@@ -113,7 +108,6 @@ namespace FLY.Simulation.Blowing
/// <summary>
/// 测辊信号,信号长,单位mm
/// </summary>
[JsonProperty]
public double RollSignLength { get; set; }
#endregion
......@@ -121,16 +115,11 @@ namespace FLY.Simulation.Blowing
/// <summary>
/// 加热棒数量
/// </summary>
[JsonProperty]
public int ChannelCnt { get; set; }
///// <summary>
///// 加热功率, 1~100
///// </summary>
//public int[] Heats;
/// <summary>
/// 第1根加热棒对应角度
/// </summary>
[JsonProperty]
public double Channel1stAngle { get; set; }
///// <summary>
///// 温度影响厚度变化比例, 1厚度,对应多少加热
......@@ -168,10 +157,16 @@ namespace FLY.Simulation.Blowing
/// 当前已经走到长度, 通过编码器获取 单位 m
/// </summary>
public double CurrFilmLength { get; private set; }
/// <summary>
/// 当前线速度 m/min
/// </summary>
public double CurrFilmVelocity { get; private set; }
#endregion
public HMI mHMI;
public int Avg { get; set; }
public double[] mFilmLength3D;
double lastFilmDistance;
/// <summary>
/// 原始数据
/// </summary>
......@@ -190,9 +185,27 @@ namespace FLY.Simulation.Blowing
class PositionAngleInfo
{
/// <summary>
/// 时间点
/// </summary>
public DateTime dt;
/// <summary>
/// 测厚仪所在位置 已经跑了的膜长度位置
/// </summary>
public double position;
/// <summary>
/// 这个时刻的角度
/// </summary>
public double angle;
/// <summary>
/// 膜距离,应该找为N米前 PositionAngleInfo.angle 得出厚度信息
/// </summary>
public double filmDistance;
/// <summary>
/// position+filmDistance
/// </summary>
public double pos24m => position + filmDistance;
}
......@@ -240,6 +253,9 @@ namespace FLY.Simulation.Blowing
BeforeDatas2.Add(datas[i]);//系统扰动后数据
AfterDatas.Add(datas[i]);//系统扰动后 再 加热数据
}
//3d膜距离
mFilmLength3D = FilmLength3D.GetData();
mAirRing = new AirRing(ChannelCnt);//88支加热棒
mAirRing.Init(BeforeDatas, BeforeDatas2, 0);
......@@ -465,6 +481,49 @@ namespace FLY.Simulation.Blowing
}
/// <summary>
/// 找到一个时间点,它的位置+膜距离=输入的纵向位置, 返回对应的时间点的角度
/// </summary>
/// <param name="position"></param>
/// <param name="angle"></param>
/// <returns></returns>
bool SearchAngleFromPositionList24m(double position, out double angle)
{
for (int i = 1; i < mPositionAngleList.Count; i++)
{
int idx1 = i;
int idx0 = i - 1;
double pos24m1 = mPositionAngleList[idx1].pos24m;
double pos24m0 = mPositionAngleList[idx0].pos24m;
double angle1 = mPositionAngleList[idx1].angle;
double angle0 = mPositionAngleList[idx0].angle;
if (pos24m1 >= position )
{
//刚过了,就是它与上一个之间的值
double percent = (position - pos24m0) / (pos24m1 - pos24m0);
if (percent < 0)
{
angle = 0;
return true;
}
//找到了
angle = (angle1 - angle0) * percent + angle0;
return true;
}
}
angle = 0;
return true;
}
/// <summary>
/// 通过纵向位置,查找角度
/// </summary>
/// <param name="position"></param>
/// <param name="angle"></param>
/// <returns></returns>
bool SearchAngleFromPositionList(double position, out double angle)
{
for (int i = 1; i < mPositionAngleList.Count; i++)
......@@ -488,16 +547,24 @@ namespace FLY.Simulation.Blowing
angle = 0;
return true;
}
public FilmData GetData(double position)
/// <summary>
/// 给定相对于膜横向位置, 输出当前对应的厚度
/// </summary>
/// <param name="pos_m"></param>
/// <returns></returns>
public FilmData GetData(double pos_m)
{
double ago_filmlength = CurrFilmLength - FilmDistance;
//double ago_filmlength = CurrFilmLength - CurrFilmDistance;
double angle;
//从膜位置列表找时间
if (!SearchAngleFromPositionList(ago_filmlength, out angle))
if (!SearchAngleFromPositionList24m(CurrFilmLength, out angle))
return null;
return GetData(position, angle);
//从膜位置列表找时间
//if (!SearchAngleFromPositionList(ago_filmlength, out angle))
// return null;
return GetData(pos_m, angle);
}
double GetValidAngle(double a) {
......@@ -759,6 +826,7 @@ namespace FLY.Simulation.Blowing
{
if (mDTLast == DateTime.MinValue)
{
//提前把膜距离耗完,不用等
double position = FilmDistance;
DateTime time = now;
while (position > 0)
......@@ -777,6 +845,8 @@ namespace FLY.Simulation.Blowing
mDTLast = now;
CurrFilmLength = FilmDistance;
CurrFilmDistance = FilmDistance;
lastFilmDistance = CurrFilmDistance;
CurrAngle = 0;//在中间
mState = STATE.Constant;
......@@ -796,12 +866,49 @@ namespace FLY.Simulation.Blowing
mDTLast = dt;
//线速度。。。。
UpdateAngleV(dt, ts);
if (Is3D && !Is360)//立体旋转架,肯定不是360°连续旋转的
{
double index1_5 = CurrAngle + 180;
//提高精度。 线性插值
int index1 = (int)Math.Floor(index1_5);
int index2 = (int)Math.Ceiling(index1_5);
while (index1 < 0)
index1 = 0;
while (index1 >= 360)
index1 = 360 - 1;
while (index2 < 0)
index2 = 0;
while (index2 >= 360)
index2 = 360 - 1;
double filmLength3d;
if (index2 == index1)
filmLength3d = mFilmLength3D[index1];
if(IsTractionOn)//启动牵引
CurrFilmLength += FilmVelocity * ts.TotalMinutes;
else if (index1 <= index1_5 && index1_5 <= index2)
{
filmLength3d = (index1_5-index1)/(index2- index1) * (mFilmLength3D[index2]- mFilmLength3D[index1])+ mFilmLength3D[index1];
}
else
{
filmLength3d = mFilmLength3D[index1];
}
CurrFilmDistance = FilmDistance + filmLength3d;
}
if (IsTractionOn)//启动牵引
{
//膜距离增量 膜长了,2牵引速度要降
double d = CurrFilmDistance - lastFilmDistance;
lastFilmDistance = CurrFilmDistance;
//2牵引速度
double fv2 = FilmVelocity - d / ts.TotalMinutes;
CurrFilmVelocity = fv2;
CurrFilmLength += CurrFilmVelocity * ts.TotalMinutes;
}
UpdateAngleV(dt, ts);
mPositionAngleList.Add(
......@@ -809,7 +916,8 @@ namespace FLY.Simulation.Blowing
{
dt = mDTLast,
angle = CurrAngle,
position = CurrFilmLength
position = CurrFilmLength,
filmDistance = CurrFilmDistance
});
if (mPositionAngleList.Count > ListCap)
......@@ -875,27 +983,14 @@ namespace FLY.Simulation.Blowing
public event PropertyChangedEventHandler PropertyChanged;
private string param_path = "simulation_blowing.json";
public void Save()
public bool Save()
{
string json = Newtonsoft.Json.JsonConvert.SerializeObject(this, Formatting.Indented);
File.WriteAllText(param_path, json);
return JsonDbHelper<Blowing, BlowingJsonDb>.Save(this, param_path);
}
bool Load()
{
if (!File.Exists(param_path))
return false;
try
{
string json = File.ReadAllText(param_path);
Newtonsoft.Json.JsonConvert.PopulateObject(json, this);
return true;
}
catch {
return false;
}
return JsonDbHelper<Blowing, BlowingJsonDb>.Load(this, param_path);
}
}
public class FilmData
......@@ -907,4 +1002,133 @@ namespace FLY.Simulation.Blowing
}
public class BlowingJsonDb
{
#region 参数
#region 旋转架
/// <summary>
/// 360° 连续旋转
/// </summary>
public bool Is360 { get; set; }
/// <summary>
/// 1圈总脉冲
/// </summary>
public double PosOfR { get; set; }
/// <summary>
/// 两个限位间的角度范围 != 旋转的总角度,限位值 °
/// </summary>
public double AngleRange { get; set; }
/// <summary>
/// 复位信号角度范围°
/// </summary>
public double OrgAngleRange { get; set; }
/// <summary>
/// 旋转的速度, min/R 1R = 360°
/// </summary>
public double AngleVelocity { get; set; }
/// <summary>
/// 加速时间 单位 s
/// </summary>
public double AngleAccTime { get; set; }
/// <summary>
/// 减速时间 单位 s
/// </summary>
public double AngleDecTime { get; set; }
/// <summary>
/// 换方向冷却时间 单位s
/// </summary>
public double AngleCoolTime { get; set; }
#endregion
#region
/// <summary>
/// 膜走带速度, m/min
/// </summary>
public double FilmVelocity { get; set; }
/// <summary>
/// 人字架到测厚仪的距离 23m
/// </summary>
public double FilmDistance { get; set; }
/// <summary>
/// 立体收卷
/// </summary>
public bool Is3D { get; set; }
/// <summary>
/// 辊轴承,单位mm
/// </summary>
public double RollPerimeter { get; set; }
/// <summary>
/// 测辊信号,信号长,单位mm
/// </summary>
public double RollSignLength { get; set; }
#endregion
#region 风环
/// <summary>
/// 加热棒数量
/// </summary>
public int ChannelCnt { get; set; }
/// <summary>
/// 第1根加热棒对应角度
/// </summary>
public double Channel1stAngle { get; set; }
#endregion
#endregion
}
public static class JsonDbHelper<TSource,TDestination>
{
static Mapper Mapper { get; } = new AutoMapper.Mapper(new MapperConfiguration(c => {
c.CreateMap<TSource, TDestination>().ReverseMap();
}));
public static bool Save(TSource src, string filePath)
{
try
{
var jsondb = Mapper.Map<TDestination>(src);
string json = Newtonsoft.Json.JsonConvert.SerializeObject(jsondb, Formatting.Indented);
File.WriteAllText(filePath, json);
return true;
}
catch
{
return false;
}
}
public static bool Load(TSource src, string filePath)
{
if (!File.Exists(filePath))
return false;
try
{
string json = File.ReadAllText(filePath);
var jsondb = Newtonsoft.Json.JsonConvert.DeserializeObject<TDestination>(json);
Mapper.Map(jsondb, src);
return true;
}
catch
{
return false;
}
}
}
}
......@@ -44,6 +44,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Blowing.cs" />
<Compile Include="FilmLength3D.cs" />
<Compile Include="GageAD.cs" />
<Compile Include="HMI.cs" />
<Compile Include="OrgData.cs" />
......@@ -68,6 +69,9 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<PackageReference Include="AutoMapper">
<Version>10.1.1</Version>
</PackageReference>
<PackageReference Include="PropertyChanged.Fody">
<Version>3.3.1</Version>
</PackageReference>
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FLY.Simulation.Blowing
{
class FilmLength3D
{
static double[] data = new double[]{
0 ,
0.02494285 ,
0.049407656 ,
0.073422521 ,
0.097013985 ,
0.120207153 ,
0.14302581 ,
0.165492532 ,
0.187628781 ,
0.209454993 ,
0.230990664 ,
0.252254425 ,
0.273264111 ,
0.294036829 ,
0.314589014 ,
0.334936491 ,
0.35509452 ,
0.375077852 ,
0.394900772 ,
0.414577143 ,
0.434120444 ,
0.453543814 ,
0.472860084 ,
0.492081814 ,
0.511221328 ,
0.530290744 ,
0.549302006 ,
0.568266915 ,
0.587197158 ,
0.606104338 ,
0.625 ,
0.643895662 ,
0.662802842 ,
0.681733085 ,
0.700697994 ,
0.719709256 ,
0.738778672 ,
0.757918186 ,
0.777139916 ,
0.796456186 ,
0.815879556 ,
0.835422857 ,
0.855099228 ,
0.874922148 ,
0.89490548 ,
0.915063509 ,
0.935410986 ,
0.955963171 ,
0.976735889 ,
0.997745575 ,
1.019009336 ,
1.040545007 ,
1.062371219 ,
1.084507468 ,
1.10697419 ,
1.129792847 ,
1.152986015 ,
1.176577479 ,
1.200592344 ,
1.22505715 ,
1.25 ,
1.27494285 ,
1.299407656 ,
1.323422521 ,
1.347013985 ,
1.370207153 ,
1.39302581 ,
1.415492532 ,
1.437628781 ,
1.459454993 ,
1.480990664 ,
1.502254425 ,
1.523264111 ,
1.544036829 ,
1.564589014 ,
1.584936491 ,
1.60509452 ,
1.625077852 ,
1.644900772 ,
1.664577143 ,
1.684120444 ,
1.703543814 ,
1.722860084 ,
1.742081814 ,
1.761221328 ,
1.780290744 ,
1.799302006 ,
1.818266915 ,
1.837197158 ,
1.856104338 ,
1.875 ,
1.893895662 ,
1.912802842 ,
1.931733085 ,
1.950697994 ,
1.969709256 ,
1.988778672 ,
2.007918186 ,
2.027139916 ,
2.046456186 ,
2.065879556 ,
2.085422857 ,
2.105099228 ,
2.124922148 ,
2.14490548 ,
2.165063509 ,
2.185410986 ,
2.205963171 ,
2.226735889 ,
2.247745575 ,
2.269009336 ,
2.290545007 ,
2.312371219 ,
2.334507468 ,
2.35697419 ,
2.379792847 ,
2.402986015 ,
2.426577479 ,
2.450592344 ,
2.47505715 ,
2.5 ,
2.52494285 ,
2.549407656 ,
2.573422521 ,
2.597013985 ,
2.620207153 ,
2.64302581 ,
2.665492532 ,
2.687628781 ,
2.709454993 ,
2.730990664 ,
2.752254425 ,
2.773264111 ,
2.794036829 ,
2.814589014 ,
2.834936491 ,
2.85509452 ,
2.875077852 ,
2.894900772 ,
2.914577143 ,
2.934120444 ,
2.953543814 ,
2.972860084 ,
2.992081814 ,
3.011221328 ,
3.030290744 ,
3.049302006 ,
3.068266915 ,
3.087197158 ,
3.106104338 ,
3.125 ,
3.143895662 ,
3.162802842 ,
3.181733085 ,
3.200697994 ,
3.219709256 ,
3.238778672 ,
3.257918186 ,
3.277139916 ,
3.296456186 ,
3.315879556 ,
3.335422857 ,
3.355099228 ,
3.374922148 ,
3.39490548 ,
3.415063509 ,
3.435410986 ,
3.455963171 ,
3.476735889 ,
3.497745575 ,
3.519009336 ,
3.540545007 ,
3.562371219 ,
3.584507468 ,
3.60697419 ,
3.629792847 ,
3.652986015 ,
3.676577479 ,
3.700592344 ,
3.72505715 ,
3.75 ,
3.77494285 ,
3.799407656 ,
3.823422521 ,
3.847013985 ,
3.870207153 ,
3.89302581 ,
3.915492532 ,
3.937628781 ,
3.959454993 ,
3.980990664 ,
4.002254425 ,
4.023264111 ,
4.044036829 ,
4.064589014 ,
4.084936491 ,
4.10509452 ,
4.125077852 ,
4.144900772 ,
4.164577143 ,
4.184120444 ,
4.203543814 ,
4.222860084 ,
4.242081814 ,
4.261221328 ,
4.280290744 ,
4.299302006 ,
4.318266915 ,
4.337197158 ,
4.356104338 ,
4.375 ,
4.393895662 ,
4.412802842 ,
4.431733085 ,
4.450697994 ,
4.469709256 ,
4.488778672 ,
4.507918186 ,
4.527139916 ,
4.546456186 ,
4.565879556 ,
4.585422857 ,
4.605099228 ,
4.624922148 ,
4.64490548 ,
4.665063509 ,
4.685410986 ,
4.705963171 ,
4.726735889 ,
4.747745575 ,
4.769009336 ,
4.790545007 ,
4.812371219 ,
4.834507468 ,
4.85697419 ,
4.879792847 ,
4.902986015 ,
4.926577479 ,
4.950592344 ,
4.97505715 ,
5 ,
5.02494285 ,
5.049407656 ,
5.073422521 ,
5.097013985 ,
5.120207153 ,
5.14302581 ,
5.165492532 ,
5.187628781 ,
5.209454993 ,
5.230990664 ,
5.252254425 ,
5.273264111 ,
5.294036829 ,
5.314589014 ,
5.334936491 ,
5.35509452 ,
5.375077852 ,
5.394900772 ,
5.414577143 ,
5.434120444 ,
5.453543814 ,
5.472860084 ,
5.492081814 ,
5.511221328 ,
5.530290744 ,
5.549302006 ,
5.568266915 ,
5.587197158 ,
5.606104338 ,
5.625 ,
5.643895662 ,
5.662802842 ,
5.681733085 ,
5.700697994 ,
5.719709256 ,
5.738778672 ,
5.757918186 ,
5.777139916 ,
5.796456186 ,
5.815879556 ,
5.835422857 ,
5.855099228 ,
5.874922148 ,
5.89490548 ,
5.915063509 ,
5.935410986 ,
5.955963171 ,
5.976735889 ,
5.997745575 ,
6.019009336 ,
6.040545007 ,
6.062371219 ,
6.084507468 ,
6.10697419 ,
6.129792847 ,
6.152986015 ,
6.176577479 ,
6.200592344 ,
6.22505715 ,
6.25 ,
6.27494285 ,
6.299407656 ,
6.323422521 ,
6.347013985 ,
6.370207153 ,
6.39302581 ,
6.415492532 ,
6.437628781 ,
6.459454993 ,
6.480990664 ,
6.502254425 ,
6.523264111 ,
6.544036829 ,
6.564589014 ,
6.584936491 ,
6.60509452 ,
6.625077852 ,
6.644900772 ,
6.664577143 ,
6.684120444 ,
6.703543814 ,
6.722860084 ,
6.742081814 ,
6.761221328 ,
6.780290744 ,
6.799302006 ,
6.818266915 ,
6.837197158 ,
6.856104338 ,
6.875 ,
6.893895662 ,
6.912802842 ,
6.931733085 ,
6.950697994 ,
6.969709256 ,
6.988778672 ,
7.007918186 ,
7.027139916 ,
7.046456186 ,
7.065879556 ,
7.085422857 ,
7.105099228 ,
7.124922148 ,
7.14490548 ,
7.165063509 ,
7.185410986 ,
7.205963171 ,
7.226735889 ,
7.247745575 ,
7.269009336 ,
7.290545007 ,
7.312371219 ,
7.334507468 ,
7.35697419 ,
7.379792847 ,
7.402986015 ,
7.426577479 ,
7.450592344 ,
7.47505715
};
//1°1个膜距离
public static double[] GetData() {
return data;
}
}
}
......@@ -71,6 +71,17 @@
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal">
<StackPanel Margin="2">
<TextBlock Style="{StaticResource TitleStyle}" Text="当前线速度(m/min)" />
<TextBlock Style="{StaticResource FieldValueStyle}" Text="{Binding CurrFilmVelocity,StringFormat={}{0:F6}}"/>
</StackPanel>
<StackPanel Margin="2">
<TextBlock Style="{StaticResource TitleStyle}" Text="当前膜距离(m)" />
<TextBlock Style="{StaticResource FieldValueStyle}" Text="{Binding CurrFilmDistance,StringFormat={}{0:F1}}"/>
</StackPanel>
</StackPanel>
</StackPanel>
<GroupBox Header="电柜" Margin="2" >
<StackPanel >
......@@ -148,6 +159,11 @@
<TextBlock Style="{StaticResource FieldNameStyle}" Text="膜走带速度(m/min)"/>
<TextBox Style="{StaticResource InputStyle}" Text="{Binding FilmVelocity}"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="2">
<TextBlock Style="{StaticResource FieldNameStyle}" Text="旋转角度(°)"/>
<TextBox Style="{StaticResource InputStyle}" Text="{Binding AngleRange}"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="2">
<TextBlock Style="{StaticResource FieldNameStyle}" Text="膜距离(m)"/>
<TextBox Style="{StaticResource InputStyle}" Text="{Binding FilmDistance}"/>
......@@ -172,6 +188,7 @@
<GroupBox Header="运动控制">
<StackPanel>
<CheckBox Content="连续旋转" Height="16" Margin="5" IsChecked="{Binding Is360}" />
<CheckBox Content="立体牵引" Height="16" Margin="5" IsChecked="{Binding Is3D}" />
<CheckBox Content="正向旋转" Height="16" Margin="5" IsChecked="{Binding IsForw}" />
<CheckBox Content="复位" Height="16" Margin="5" IsChecked="{Binding IsOrg}" />
<CheckBox Content="旋转启动" Height="16" Margin="5" IsChecked="{Binding IsRotationOn}" />
......
0
0.02494285
0.049407656
0.073422521
0.097013985
0.120207153
0.14302581
0.165492532
0.187628781
0.209454993
0.230990664
0.252254425
0.273264111
0.294036829
0.314589014
0.334936491
0.35509452
0.375077852
0.394900772
0.414577143
0.434120444
0.453543814
0.472860084
0.492081814
0.511221328
0.530290744
0.549302006
0.568266915
0.587197158
0.606104338
0.625
0.643895662
0.662802842
0.681733085
0.700697994
0.719709256
0.738778672
0.757918186
0.777139916
0.796456186
0.815879556
0.835422857
0.855099228
0.874922148
0.89490548
0.915063509
0.935410986
0.955963171
0.976735889
0.997745575
1.019009336
1.040545007
1.062371219
1.084507468
1.10697419
1.129792847
1.152986015
1.176577479
1.200592344
1.22505715
1.25
1.27494285
1.299407656
1.323422521
1.347013985
1.370207153
1.39302581
1.415492532
1.437628781
1.459454993
1.480990664
1.502254425
1.523264111
1.544036829
1.564589014
1.584936491
1.60509452
1.625077852
1.644900772
1.664577143
1.684120444
1.703543814
1.722860084
1.742081814
1.761221328
1.780290744
1.799302006
1.818266915
1.837197158
1.856104338
1.875
1.893895662
1.912802842
1.931733085
1.950697994
1.969709256
1.988778672
2.007918186
2.027139916
2.046456186
2.065879556
2.085422857
2.105099228
2.124922148
2.14490548
2.165063509
2.185410986
2.205963171
2.226735889
2.247745575
2.269009336
2.290545007
2.312371219
2.334507468
2.35697419
2.379792847
2.402986015
2.426577479
2.450592344
2.47505715
2.5
2.52494285
2.549407656
2.573422521
2.597013985
2.620207153
2.64302581
2.665492532
2.687628781
2.709454993
2.730990664
2.752254425
2.773264111
2.794036829
2.814589014
2.834936491
2.85509452
2.875077852
2.894900772
2.914577143
2.934120444
2.953543814
2.972860084
2.992081814
3.011221328
3.030290744
3.049302006
3.068266915
3.087197158
3.106104338
3.125
3.143895662
3.162802842
3.181733085
3.200697994
3.219709256
3.238778672
3.257918186
3.277139916
3.296456186
3.315879556
3.335422857
3.355099228
3.374922148
3.39490548
3.415063509
3.435410986
3.455963171
3.476735889
3.497745575
3.519009336
3.540545007
3.562371219
3.584507468
3.60697419
3.629792847
3.652986015
3.676577479
3.700592344
3.72505715
3.75
3.77494285
3.799407656
3.823422521
3.847013985
3.870207153
3.89302581
3.915492532
3.937628781
3.959454993
3.980990664
4.002254425
4.023264111
4.044036829
4.064589014
4.084936491
4.10509452
4.125077852
4.144900772
4.164577143
4.184120444
4.203543814
4.222860084
4.242081814
4.261221328
4.280290744
4.299302006
4.318266915
4.337197158
4.356104338
4.375
4.393895662
4.412802842
4.431733085
4.450697994
4.469709256
4.488778672
4.507918186
4.527139916
4.546456186
4.565879556
4.585422857
4.605099228
4.624922148
4.64490548
4.665063509
4.685410986
4.705963171
4.726735889
4.747745575
4.769009336
4.790545007
4.812371219
4.834507468
4.85697419
4.879792847
4.902986015
4.926577479
4.950592344
4.97505715
5
5.02494285
5.049407656
5.073422521
5.097013985
5.120207153
5.14302581
5.165492532
5.187628781
5.209454993
5.230990664
5.252254425
5.273264111
5.294036829
5.314589014
5.334936491
5.35509452
5.375077852
5.394900772
5.414577143
5.434120444
5.453543814
5.472860084
5.492081814
5.511221328
5.530290744
5.549302006
5.568266915
5.587197158
5.606104338
5.625
5.643895662
5.662802842
5.681733085
5.700697994
5.719709256
5.738778672
5.757918186
5.777139916
5.796456186
5.815879556
5.835422857
5.855099228
5.874922148
5.89490548
5.915063509
5.935410986
5.955963171
5.976735889
5.997745575
6.019009336
6.040545007
6.062371219
6.084507468
6.10697419
6.129792847
6.152986015
6.176577479
6.200592344
6.22505715
6.25
6.27494285
6.299407656
6.323422521
6.347013985
6.370207153
6.39302581
6.415492532
6.437628781
6.459454993
6.480990664
6.502254425
6.523264111
6.544036829
6.564589014
6.584936491
6.60509452
6.625077852
6.644900772
6.664577143
6.684120444
6.703543814
6.722860084
6.742081814
6.761221328
6.780290744
6.799302006
6.818266915
6.837197158
6.856104338
6.875
6.893895662
6.912802842
6.931733085
6.950697994
6.969709256
6.988778672
7.007918186
7.027139916
7.046456186
7.065879556
7.085422857
7.105099228
7.124922148
7.14490548
7.165063509
7.185410986
7.205963171
7.226735889
7.247745575
7.269009336
7.290545007
7.312371219
7.334507468
7.35697419
7.379792847
7.402986015
7.426577479
7.450592344
7.47505715
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment