开发过程-周期归档
周期归档的数据一般用于曲线或者生成报表。该上位机项目模板对于归档的处理也很简单。首先我们新建一个实体类。该实体类包含了需要归档的所有成员。
public class ArchiveModel{ [SugarColumn(IsPrimaryKey = true)] public DateTime DT { get; set; } public double TotalWeight1 { get; set; } public double TotalWeight2 { get; set; } public double TotalWeight3 { get; set; } public double TotalWeight4 { get; set; } public double TotalWeight5 { get; set; } public double TotalWeight6 { get; set; } public double TotalWeight7 { get; set; } public double TotalWeight8 { get; set; } public double TotalWeight9 { get; set; } public double TotalWeight10 { get; set; }}
归档是由一个单独的后台任务负责的。我们把里面的代码稍微调整下就可以了。
public static void PowerArchive(){ while (true) { //控制归档周期 Thread.Sleep(2000); try { ArchiveModel am = new ArchiveModel(); am.DT = DateTime.Now; am.TotalWeight1 = PLC.TagsPLC2["总量1"].Value1 is null ? 0 : Convert.ToDouble(PLC.TagsPLC2["总量1"].Value1.ToString()); am.TotalWeight2 = PLC.TagsPLC2["总量2"].Value1 is null ? 0 : Convert.ToDouble(PLC.TagsPLC2["总量2"].Value1.ToString()); am.TotalWeight3 = PLC.TagsPLC2["总量3"].Value1 is null ? 0 : Convert.ToDouble(PLC.TagsPLC2["总量3"].Value1.ToString()); am.TotalWeight4 = PLC.TagsPLC2["总量4"].Value1 is null ? 0 : Convert.ToDouble(PLC.TagsPLC2["总量4"].Value1.ToString()); am.TotalWeight5 = PLC.TagsPLC2["总量5"].Value1 is null ? 0 : Convert.ToDouble(PLC.TagsPLC2["总量5"].Value1.ToString()); am.TotalWeight6 = PLC.TagsPLC2["总量6"].Value1 is null ? 0 : Convert.ToDouble(PLC.TagsPLC2["总量6"].Value1.ToString()); DAL.DBOperation.AddOperation(am); } catch (Exception) { //throw;
} } }
这样启动程序后,它就会自动生成数据表并定时保存数据。也是非常的方便快捷。
关于C#上位机项目框架
CSharpSCADA上位机项目实例软件(CSharpSCADA)源自一个定制化的上位机项目。经过重构后,在框架结构上更加合理。它也可以作为上位机项目模板使用,简单的修改调整即可实现一个上位机项目。
AdvScadaFrameworkgaoji上位机框架软件(AdvScadaFramework)是集成度更高的一款上位机框架软件,除了工艺画面外,其它功能均可以通过配置实现。