Merge branch 'master' of http://www.scserverddns.top:13000/sc/DyeingComputer
This commit is contained in:
commit
24cc2920de
6 files changed
+271
-122
No files matched your search
@@ -119,6 +119,7 @@
|
|||||||
<Compile Include="UserClass\LogGing.cs" />
|
<Compile Include="UserClass\LogGing.cs" />
|
||||||
<Compile Include="UserClass\MD5check.cs" />
|
<Compile Include="UserClass\MD5check.cs" />
|
||||||
<Compile Include="UserClass\NumericTextColumn .cs" />
|
<Compile Include="UserClass\NumericTextColumn .cs" />
|
||||||
|
<Compile Include="UserClass\PID.cs" />
|
||||||
<Compile Include="UserClass\PressKey.cs" />
|
<Compile Include="UserClass\PressKey.cs" />
|
||||||
<Compile Include="UserClass\SqliteHelper.cs" />
|
<Compile Include="UserClass\SqliteHelper.cs" />
|
||||||
<Compile Include="UserClass\StrToInt.cs" />
|
<Compile Include="UserClass\StrToInt.cs" />
|
||||||
|
|||||||
Generated
+1
-1
@@ -556,7 +556,7 @@ namespace DyeingComputer.Properties {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 的本地化字符串。
|
/// 查找类似 Port 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Port {
|
public static string Port {
|
||||||
get {
|
get {
|
||||||
|
|||||||
+110
-110
@@ -117,50 +117,26 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="WorkOrder" xml:space="preserve">
|
<data name="CurveDiagram" xml:space="preserve">
|
||||||
<value>工作清单</value>
|
<value>工艺曲线</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TechnologicalProcess" xml:space="preserve">
|
<data name="Delete" xml:space="preserve">
|
||||||
<value>工艺流程</value>
|
<value>删除</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SysSet" xml:space="preserve">
|
<data name="EndTime" xml:space="preserve">
|
||||||
<value>系统</value>
|
<value>结束时间</value>
|
||||||
</data>
|
|
||||||
<data name="Previous" xml:space="preserve">
|
|
||||||
<value>返回</value>
|
|
||||||
</data>
|
|
||||||
<data name="Next" xml:space="preserve">
|
|
||||||
<value>更多</value>
|
|
||||||
</data>
|
|
||||||
<data name="InOut" xml:space="preserve">
|
|
||||||
<value>输入输出</value>
|
|
||||||
</data>
|
|
||||||
<data name="HistoryRecords" xml:space="preserve">
|
|
||||||
<value>历史</value>
|
|
||||||
</data>
|
|
||||||
<data name="EquipmentSimulation" xml:space="preserve">
|
|
||||||
<value>设备模拟</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="EngineerSet" xml:space="preserve">
|
<data name="EngineerSet" xml:space="preserve">
|
||||||
<value>工程师</value>
|
<value>工程师</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CurveDiagram" xml:space="preserve">
|
<data name="EquipmentSimulation" xml:space="preserve">
|
||||||
<value>工艺曲线</value>
|
<value>设备模拟</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ParameterSet" xml:space="preserve">
|
<data name="HistoryRecords" xml:space="preserve">
|
||||||
<value>参数</value>
|
<value>历史</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Programgroup" xml:space="preserve">
|
<data name="InOut" xml:space="preserve">
|
||||||
<value>程序组</value>
|
<value>输入输出</value>
|
||||||
</data>
|
|
||||||
<data name="SysDatLoss" xml:space="preserve">
|
|
||||||
<value>系统数据丢失</value>
|
|
||||||
</data>
|
|
||||||
<data name="WorkOrderNumder" xml:space="preserve">
|
|
||||||
<value>工单号</value>
|
|
||||||
</data>
|
|
||||||
<data name="Temperature" xml:space="preserve">
|
|
||||||
<value>温度</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="lock" xml:space="preserve">
|
<data name="lock" xml:space="preserve">
|
||||||
<value>锁定/解锁</value>
|
<value>锁定/解锁</value>
|
||||||
@@ -168,26 +144,53 @@
|
|||||||
<data name="New" xml:space="preserve">
|
<data name="New" xml:space="preserve">
|
||||||
<value>新建</value>
|
<value>新建</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Delete" xml:space="preserve">
|
<data name="Next" xml:space="preserve">
|
||||||
<value>删除</value>
|
<value>更多</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Redye" xml:space="preserve">
|
<data name="ParameterSet" xml:space="preserve">
|
||||||
<value>重染</value>
|
<value>参数</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EndTime" xml:space="preserve">
|
<data name="Previous" xml:space="preserve">
|
||||||
<value>结束时间</value>
|
<value>返回</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ProcessName" xml:space="preserve">
|
<data name="ProcessName" xml:space="preserve">
|
||||||
<value>工艺名</value>
|
<value>工艺名</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Programgroup" xml:space="preserve">
|
||||||
|
<value>程序组</value>
|
||||||
|
</data>
|
||||||
|
<data name="Redye" xml:space="preserve">
|
||||||
|
<value>重染</value>
|
||||||
|
</data>
|
||||||
<data name="Remark" xml:space="preserve">
|
<data name="Remark" xml:space="preserve">
|
||||||
<value>备注</value>
|
<value>备注</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="StartTime" xml:space="preserve">
|
<data name="StartTime" xml:space="preserve">
|
||||||
<value>开始时间</value>
|
<value>开始时间</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="SysDatLoss" xml:space="preserve">
|
||||||
|
<value>系统数据丢失</value>
|
||||||
|
</data>
|
||||||
|
<data name="SysSet" xml:space="preserve">
|
||||||
|
<value>系统</value>
|
||||||
|
</data>
|
||||||
|
<data name="TechnologicalProcess" xml:space="preserve">
|
||||||
|
<value>工艺流程</value>
|
||||||
|
</data>
|
||||||
|
<data name="Temperature" xml:space="preserve">
|
||||||
|
<value>温度</value>
|
||||||
|
</data>
|
||||||
<data name="Time" xml:space="preserve">
|
<data name="Time" xml:space="preserve">
|
||||||
<value>时间</value>
|
<value>时间[min]</value>
|
||||||
|
</data>
|
||||||
|
<data name="WorkOrder" xml:space="preserve">
|
||||||
|
<value>工作清单</value>
|
||||||
|
</data>
|
||||||
|
<data name="WorkOrderNumder" xml:space="preserve">
|
||||||
|
<value>工单号</value>
|
||||||
|
</data>
|
||||||
|
<data name="Ready" xml:space="preserve">
|
||||||
|
<value>准备</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Abnormal" xml:space="preserve">
|
<data name="Abnormal" xml:space="preserve">
|
||||||
<value>异常</value>
|
<value>异常</value>
|
||||||
@@ -201,23 +204,20 @@
|
|||||||
<data name="Finish" xml:space="preserve">
|
<data name="Finish" xml:space="preserve">
|
||||||
<value>完成</value>
|
<value>完成</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LineUp" xml:space="preserve">
|
|
||||||
<value>排队</value>
|
|
||||||
</data>
|
|
||||||
<data name="Measure" xml:space="preserve">
|
<data name="Measure" xml:space="preserve">
|
||||||
<value>计量</value>
|
<value>计量</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Ready" xml:space="preserve">
|
<data name="LineUp" xml:space="preserve">
|
||||||
<value>准备</value>
|
<value>排队</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="State" xml:space="preserve">
|
<data name="Notimplementation" xml:space="preserve">
|
||||||
<value>状态</value>
|
<value>未执行</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Confirm" xml:space="preserve">
|
<data name="Confirm" xml:space="preserve">
|
||||||
<value>确认</value>
|
<value>确认</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Step" xml:space="preserve">
|
<data name="State" xml:space="preserve">
|
||||||
<value>步骤</value>
|
<value>状态</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="edit" xml:space="preserve">
|
<data name="edit" xml:space="preserve">
|
||||||
<value>编辑</value>
|
<value>编辑</value>
|
||||||
@@ -225,53 +225,50 @@
|
|||||||
<data name="Rename" xml:space="preserve">
|
<data name="Rename" xml:space="preserve">
|
||||||
<value>重命名</value>
|
<value>重命名</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ID" xml:space="preserve">
|
<data name="Step" xml:space="preserve">
|
||||||
<value>ID</value>
|
<value>步骤</value>
|
||||||
</data>
|
|
||||||
<data name="Directives" xml:space="preserve">
|
|
||||||
<value>指令</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="Code" xml:space="preserve">
|
<data name="Code" xml:space="preserve">
|
||||||
<value>代码</value>
|
<value>代码</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Recover" xml:space="preserve">
|
<data name="Directives" xml:space="preserve">
|
||||||
<value>恢复</value>
|
<value>指令</value>
|
||||||
|
</data>
|
||||||
|
<data name="ID" xml:space="preserve">
|
||||||
|
<value>ID</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Insert" xml:space="preserve">
|
<data name="Insert" xml:space="preserve">
|
||||||
<value>插入</value>
|
<value>插入</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Recover" xml:space="preserve">
|
||||||
|
<value>恢复</value>
|
||||||
|
</data>
|
||||||
<data name="Save" xml:space="preserve">
|
<data name="Save" xml:space="preserve">
|
||||||
<value>保存</value>
|
<value>保存</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Quit" xml:space="preserve">
|
<data name="Quit" xml:space="preserve">
|
||||||
<value>退出</value>
|
<value>退出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TemperatureControl" xml:space="preserve">
|
|
||||||
<value>温度控制</value>
|
|
||||||
</data>
|
|
||||||
<data name="AddWater" xml:space="preserve">
|
<data name="AddWater" xml:space="preserve">
|
||||||
<value>入水</value>
|
<value>入水</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Flowmeter" xml:space="preserve">
|
|
||||||
<value>流量</value>
|
|
||||||
</data>
|
|
||||||
<data name="WaterLevel" xml:space="preserve">
|
|
||||||
<value>水位</value>
|
|
||||||
</data>
|
|
||||||
<data name="Washing" xml:space="preserve">
|
|
||||||
<value>水洗</value>
|
|
||||||
</data>
|
|
||||||
<data name="Cooling" xml:space="preserve">
|
<data name="Cooling" xml:space="preserve">
|
||||||
<value>冷却</value>
|
<value>冷却</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Drainage" xml:space="preserve">
|
<data name="Drainage" xml:space="preserve">
|
||||||
<value>排水</value>
|
<value>排水</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PumpDrainage" xml:space="preserve">
|
<data name="Flowmeter" xml:space="preserve">
|
||||||
<value>主泵排水</value>
|
<value>流量</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RunningTime" xml:space="preserve">
|
<data name="TemperatureControl" xml:space="preserve">
|
||||||
<value>运转</value>
|
<value>温度控制</value>
|
||||||
|
</data>
|
||||||
|
<data name="Washing" xml:space="preserve">
|
||||||
|
<value>水洗</value>
|
||||||
|
</data>
|
||||||
|
<data name="WaterLevel" xml:space="preserve">
|
||||||
|
<value>水位</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ClothIntake" xml:space="preserve">
|
<data name="ClothIntake" xml:space="preserve">
|
||||||
<value>准备入布</value>
|
<value>准备入布</value>
|
||||||
@@ -279,12 +276,18 @@
|
|||||||
<data name="OutTheCloth" xml:space="preserve">
|
<data name="OutTheCloth" xml:space="preserve">
|
||||||
<value>准备出布</value>
|
<value>准备出布</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CallDistribution" xml:space="preserve">
|
<data name="PumpDrainage" xml:space="preserve">
|
||||||
<value>呼叫输送</value>
|
<value>主泵排水</value>
|
||||||
|
</data>
|
||||||
|
<data name="RunningTime" xml:space="preserve">
|
||||||
|
<value>运转</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddTheMedicine" xml:space="preserve">
|
<data name="AddTheMedicine" xml:space="preserve">
|
||||||
<value>加药</value>
|
<value>加药</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="CallDistribution" xml:space="preserve">
|
||||||
|
<value>呼叫输送</value>
|
||||||
|
</data>
|
||||||
<data name="CallPreparation" xml:space="preserve">
|
<data name="CallPreparation" xml:space="preserve">
|
||||||
<value>呼叫准备</value>
|
<value>呼叫准备</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -327,81 +330,78 @@
|
|||||||
<data name="Sampling" xml:space="preserve">
|
<data name="Sampling" xml:space="preserve">
|
||||||
<value>取样</value>
|
<value>取样</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Invalidfeatures" xml:space="preserve">
|
|
||||||
<value>功能无效</value>
|
|
||||||
</data>
|
|
||||||
<data name="Function" xml:space="preserve">
|
<data name="Function" xml:space="preserve">
|
||||||
<value>功能</value>
|
<value>功能</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Invalidfeatures" xml:space="preserve">
|
||||||
|
<value>功能无效</value>
|
||||||
|
</data>
|
||||||
<data name="NO" xml:space="preserve">
|
<data name="NO" xml:space="preserve">
|
||||||
<value>否</value>
|
<value>否</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YES" xml:space="preserve">
|
<data name="YES" xml:space="preserve">
|
||||||
<value>是</value>
|
<value>是</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Rate" xml:space="preserve">
|
<data name="Advance" xml:space="preserve">
|
||||||
<value>速率</value>
|
<value>提前</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Target" xml:space="preserve">
|
<data name="Beginning" xml:space="preserve">
|
||||||
<value>目标</value>
|
<value>开头</value>
|
||||||
|
</data>
|
||||||
|
<data name="Container" xml:space="preserve">
|
||||||
|
<value>容器</value>
|
||||||
|
</data>
|
||||||
|
<data name="Curve" xml:space="preserve">
|
||||||
|
<value>曲线</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Headwaters" xml:space="preserve">
|
<data name="Headwaters" xml:space="preserve">
|
||||||
<value>水源</value>
|
<value>水源</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Medicine" xml:space="preserve">
|
||||||
|
<value>药</value>
|
||||||
|
</data>
|
||||||
|
<data name="Mixing" xml:space="preserve">
|
||||||
|
<value>搅拌</value>
|
||||||
|
</data>
|
||||||
<data name="Number" xml:space="preserve">
|
<data name="Number" xml:space="preserve">
|
||||||
<value>次数</value>
|
<value>次数</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Pressure" xml:space="preserve">
|
<data name="Pressure" xml:space="preserve">
|
||||||
<value>压力</value>
|
<value>压力</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Container" xml:space="preserve">
|
<data name="Rate" xml:space="preserve">
|
||||||
<value>容器</value>
|
<value>速率(°C/min)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Tank" xml:space="preserve">
|
<data name="Tank" xml:space="preserve">
|
||||||
<value>缸</value>
|
<value>缸</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Medicine" xml:space="preserve">
|
<data name="Target" xml:space="preserve">
|
||||||
<value>药</value>
|
<value>目标</value>
|
||||||
</data>
|
|
||||||
<data name="Advance" xml:space="preserve">
|
|
||||||
<value>提前</value>
|
|
||||||
</data>
|
|
||||||
<data name="Beginning" xml:space="preserve">
|
|
||||||
<value>开头</value>
|
|
||||||
</data>
|
</data>
|
||||||
<data name="Type" xml:space="preserve">
|
<data name="Type" xml:space="preserve">
|
||||||
<value>类型</value>
|
<value>类型</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Mixing" xml:space="preserve">
|
|
||||||
<value>搅拌</value>
|
|
||||||
</data>
|
|
||||||
<data name="Curve" xml:space="preserve">
|
|
||||||
<value>曲线</value>
|
|
||||||
</data>
|
|
||||||
<data name="Blower" xml:space="preserve">
|
<data name="Blower" xml:space="preserve">
|
||||||
<value>风机</value>
|
<value>风机</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Wiggle" xml:space="preserve">
|
|
||||||
<value>摆布</value>
|
|
||||||
</data>
|
|
||||||
<data name="Nozzle" xml:space="preserve">
|
<data name="Nozzle" xml:space="preserve">
|
||||||
<value>喷嘴</value>
|
<value>喷嘴</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Pump" xml:space="preserve">
|
|
||||||
<value>泵</value>
|
|
||||||
</data>
|
|
||||||
<data name="Overflow" xml:space="preserve">
|
<data name="Overflow" xml:space="preserve">
|
||||||
<value>溢流</value>
|
<value>溢流</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="process_not" xml:space="preserve">
|
<data name="Pump" xml:space="preserve">
|
||||||
<value>工艺不存在</value>
|
<value>泵</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Notimplementation" xml:space="preserve">
|
<data name="Wiggle" xml:space="preserve">
|
||||||
<value>未执行</value>
|
<value>摆布</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Implementation" xml:space="preserve">
|
<data name="Implementation" xml:space="preserve">
|
||||||
<value>执行</value>
|
<value>执行</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="process_not" xml:space="preserve">
|
||||||
|
<value>工艺不存在</value>
|
||||||
|
</data>
|
||||||
<data name="Connectionlost" xml:space="preserve">
|
<data name="Connectionlost" xml:space="preserve">
|
||||||
<value>连接丢失</value>
|
<value>连接丢失</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -0,0 +1,139 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DyeingComputer.UserClass
|
||||||
|
{
|
||||||
|
public class PID
|
||||||
|
{
|
||||||
|
private static double Ts; // Sample period in seconds
|
||||||
|
private static double K; // Rollup parameter
|
||||||
|
private static double b0, b1, b2; // Rollup parameters
|
||||||
|
private static double a0, a1, a2; // Rollup parameters
|
||||||
|
private static double y0 = 0; // Current output
|
||||||
|
private static double y1 = 0; // Output one iteration old
|
||||||
|
private static double y2 = 0; // Output two iterations old
|
||||||
|
private static double e0 = 0; // Current error
|
||||||
|
private static double e1 = 0; // Error one iteration old
|
||||||
|
private static double e2 = 0; // Error two iterations old
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PID构造器
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Kp">比例增益</param>
|
||||||
|
/// <param name="Ki">积分增益</param>
|
||||||
|
/// <param name="Kd">微分增益</param>
|
||||||
|
/// <param name="N">微分滤波系数</param>
|
||||||
|
/// <param name="OutputUpperLimit">控制器输出上限</param>
|
||||||
|
/// <param name="OutputLowerLimit">控制器输出下限</param>
|
||||||
|
public PID(double Kp, double Ki, double Kd, double N, double OutputUpperLimit, double OutputLowerLimit)
|
||||||
|
{
|
||||||
|
this.Kp = Kp;
|
||||||
|
this.Ki = Ki;
|
||||||
|
this.Kd = Kd;
|
||||||
|
this.N = N;
|
||||||
|
this.OutputUpperLimit = OutputUpperLimit;
|
||||||
|
this.OutputLowerLimit = OutputLowerLimit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PID迭代器,在每个采样周期调用此函数以获取当前控制器输出。
|
||||||
|
/// 设定点和过程值应使用相同的单位。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="setPoint">设定目标值</param>
|
||||||
|
/// <param name="processValue">当前实际值</param>
|
||||||
|
/// <param name="ts">自上次迭代以来的时间跨度,对第一次调用使用默认采样周期</param>
|
||||||
|
/// <returns>Current Controller Output</returns>
|
||||||
|
public double PID_iterate(double setPoint, double processValue, TimeSpan ts)
|
||||||
|
{
|
||||||
|
// Ensure the timespan is not too small or zero.
|
||||||
|
Ts = (ts.TotalSeconds >= TsMin) ? ts.TotalSeconds : TsMin;
|
||||||
|
|
||||||
|
// Calculate rollup parameters
|
||||||
|
K = 2 / Ts;
|
||||||
|
b0 = Math.Pow(K, 2) * Kp + K * Ki + Ki * N + K * Kp * N + Math.Pow(K, 2) * Kd * N;
|
||||||
|
b1 = 2 * Ki * N - 2 * Math.Pow(K, 2) * Kp - 2 * Math.Pow(K, 2) * Kd * N;
|
||||||
|
b2 = Math.Pow(K, 2) * Kp - K * Ki + Ki * N - K * Kp * N + Math.Pow(K, 2) * Kd * N;
|
||||||
|
a0 = Math.Pow(K, 2) + N * K;
|
||||||
|
a1 = -2 * Math.Pow(K, 2);
|
||||||
|
a2 = Math.Pow(K, 2) - K * N;
|
||||||
|
|
||||||
|
// Age errors and output history
|
||||||
|
e2 = e1; // Age errors one iteration
|
||||||
|
e1 = e0; // Age errors one iteration
|
||||||
|
e0 = setPoint - processValue; // Compute new error
|
||||||
|
y2 = y1; // Age outputs one iteration
|
||||||
|
y1 = y0; // Age outputs one iteration
|
||||||
|
y0 = -a1 / a0 * y1 - a2 / a0 * y2 + b0 / a0 * e0 + b1 / a0 * e1 + b2 / a0 * e2; // Calculate current output
|
||||||
|
|
||||||
|
// Clamp output if needed
|
||||||
|
if (y0 > OutputUpperLimit)
|
||||||
|
{
|
||||||
|
y0 = OutputUpperLimit;
|
||||||
|
}
|
||||||
|
else if (y0 < OutputLowerLimit)
|
||||||
|
{
|
||||||
|
y0 = OutputLowerLimit;
|
||||||
|
}
|
||||||
|
|
||||||
|
return y0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重置控制器历史记录,有效重置控制器。
|
||||||
|
/// </summary>
|
||||||
|
public static void ResetController()
|
||||||
|
{
|
||||||
|
e2 = 0;
|
||||||
|
e1 = 0;
|
||||||
|
e0 = 0;
|
||||||
|
y2 = 0;
|
||||||
|
y1 = 0;
|
||||||
|
y0 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 比例增益,如果此参数发生剧烈变化,请考虑重置控制器。
|
||||||
|
/// </summary>
|
||||||
|
public double Kp { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 积分增益,如果此参数发生剧烈变化,请考虑重置控制器。
|
||||||
|
/// </summary>
|
||||||
|
public double Ki { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 微分增益,如果此参数发生剧烈变化,请考虑重置控制器。
|
||||||
|
/// </summary>
|
||||||
|
public double Kd { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///微分滤波系数。
|
||||||
|
/// N越小,过滤效果越好
|
||||||
|
/// N越大,过滤效果越差
|
||||||
|
/// 如果此参数发生剧烈变化,请考虑重置控制器。
|
||||||
|
/// </summary>
|
||||||
|
public double N { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 避免除以零的最小允许采样周期!
|
||||||
|
/// Ts值可能会在第一次迭代时被错误地设置为过低的值或零。
|
||||||
|
/// TsMin默认设置为1毫秒。
|
||||||
|
/// </summary>
|
||||||
|
public double TsMin { get; set; } = 0.001;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 控制器的输出上限。
|
||||||
|
/// 是一个比输出下限大的数值。
|
||||||
|
/// </summary>
|
||||||
|
public double OutputUpperLimit { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 控制器的输出下限。
|
||||||
|
/// 是一个比输出上限小的数值。
|
||||||
|
/// </summary>
|
||||||
|
public double OutputLowerLimit { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -53,6 +53,7 @@ namespace DyeingComputer.View
|
|||||||
private void UserControl_Loaded(object sender, RoutedEventArgs e)
|
private void UserControl_Loaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if(workName !=null) TechnologicalProcess_sql();
|
if(workName !=null) TechnologicalProcess_sql();
|
||||||
|
//Grid.SelectedIndex = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -32,30 +32,43 @@ namespace DyeingComputer.ViewModel
|
|||||||
public class ViewModelBase : INotifyPropertyChanged
|
public class ViewModelBase : INotifyPropertyChanged
|
||||||
{
|
{
|
||||||
public event PropertyChangedEventHandler PropertyChanged;
|
public event PropertyChangedEventHandler PropertyChanged;
|
||||||
|
|
||||||
protected virtual void OnPropertyChanged(string propertyName)
|
protected virtual void OnPropertyChanged(string propertyName)
|
||||||
{
|
{
|
||||||
if (this.PropertyChanged != null)
|
if (this.PropertyChanged != null)
|
||||||
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
|
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
|
||||||
}
|
}
|
||||||
|
public void RaisePropertyChanged(string propertyName)
|
||||||
public void RaisePropertyChanged(string propertyName)
|
|
||||||
{
|
{
|
||||||
if (propertyName != null)
|
if (propertyName != null)
|
||||||
{
|
{
|
||||||
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class MainWindowViewModel : ViewModelBase
|
public class MainWindowViewModel : ViewModelBase
|
||||||
{
|
{
|
||||||
private UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "DyeingComputer.ini");
|
private SQLiteHelper SQLiteHelpers = null; //定义数据库
|
||||||
|
private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\800COMPUTER.db"; //数据库路径
|
||||||
|
private PID PID = null;
|
||||||
|
private IniFile.IniFiles Configini = new IniFile.IniFiles(Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "DyeingComputer.ini");
|
||||||
|
|
||||||
|
|
||||||
public MainWindowViewModel()
|
public MainWindowViewModel()
|
||||||
{
|
{
|
||||||
|
SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
|
||||||
|
SQLiteHelpers.Open(); //打开数据库
|
||||||
|
double ST01 = Convert.ToDouble( SQLiteHelpers.ExecuteScalar("select value from system where ParameterID = 'ST01'", null)); //读取
|
||||||
|
double ST02 = Convert.ToDouble( SQLiteHelpers.ExecuteScalar("select value from system where ParameterID = 'ST02'", null));
|
||||||
|
double ST03 = Convert.ToDouble( SQLiteHelpers.ExecuteScalar("select value from system where ParameterID = 'ST03'", null));
|
||||||
|
double ST04 = Convert.ToDouble(SQLiteHelpers.ExecuteScalar("select value from system where ParameterID = 'ST04'", null));
|
||||||
|
double ST05 = Convert.ToDouble(SQLiteHelpers.ExecuteScalar("select value from system where ParameterID = 'ST05'", null));
|
||||||
|
double ST06 = Convert.ToDouble(SQLiteHelpers.ExecuteScalar("select value from system where ParameterID = 'ST06'", null));
|
||||||
|
SQLiteHelpers.Close();
|
||||||
|
|
||||||
WorkNumder = "----------";
|
WorkNumder = "----------";
|
||||||
|
PID pid=new PID(ST01,ST02,ST03,ST04,ST05,ST06);
|
||||||
|
|
||||||
CountDown(); //启动循环任务
|
CountDown(); //启动循环任务
|
||||||
SQL_data(); //读数据库
|
SQL_data(); //读数据库
|
||||||
UPort(); //启动串口
|
UPort(); //启动串口
|
||||||
@@ -68,21 +81,18 @@ namespace DyeingComputer.ViewModel
|
|||||||
get { return work_Temp; }
|
get { return work_Temp; }
|
||||||
set { work_Temp = value; OnPropertyChanged("Work_Temp"); }
|
set { work_Temp = value; OnPropertyChanged("Work_Temp"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string work_Numder; //显示工单号
|
public string work_Numder; //显示工单号
|
||||||
public string Work_Numder //通知UI控件参数改变
|
public string Work_Numder //通知UI控件参数改变
|
||||||
{
|
{
|
||||||
get { return work_Numder; }
|
get { return work_Numder; }
|
||||||
set { work_Numder = value; OnPropertyChanged("Work_Numder"); }
|
set { work_Numder = value; OnPropertyChanged("Work_Numder"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string status_Str; //显示状态
|
public string status_Str; //显示状态
|
||||||
public string Status_Str //通知UI控件参数改变
|
public string Status_Str //通知UI控件参数改变
|
||||||
{
|
{
|
||||||
get { return status_Str; }
|
get { return status_Str; }
|
||||||
set { status_Str = value; OnPropertyChanged("Status_Str"); }
|
set { status_Str = value; OnPropertyChanged("Status_Str"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string sys_Time; //显示系统时间
|
public string sys_Time; //显示系统时间
|
||||||
public string Sys_Time //通知UI控件参数改变
|
public string Sys_Time //通知UI控件参数改变
|
||||||
{
|
{
|
||||||
@@ -113,7 +123,7 @@ namespace DyeingComputer.ViewModel
|
|||||||
};
|
};
|
||||||
disTimer.Tick += new EventHandler(DisTimer_100MS);//每一秒执行的方法
|
disTimer.Tick += new EventHandler(DisTimer_100MS);//每一秒执行的方法
|
||||||
disTimer.Start();//计时开始
|
disTimer.Start();//计时开始
|
||||||
}
|
}//时间周期初始化
|
||||||
|
|
||||||
public static object Name_err;
|
public static object Name_err;
|
||||||
public static object WorkNumder;
|
public static object WorkNumder;
|
||||||
@@ -203,8 +213,6 @@ namespace DyeingComputer.ViewModel
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private SQLiteHelper SQLiteHelpers = null; //定义数据库
|
|
||||||
private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\800COMPUTER.db"; //数据库路径
|
|
||||||
public DataTable dt_d = new DataTable("DIO");
|
public DataTable dt_d = new DataTable("DIO");
|
||||||
public DataTable dt_a = new DataTable("AIO");
|
public DataTable dt_a = new DataTable("AIO");
|
||||||
public DataTable dt_m = new DataTable("M");
|
public DataTable dt_m = new DataTable("M");
|
||||||
|
|||||||
Reference in new issue
Block a user