You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lj_plc/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/ManualControl/InitAction.cs

431 lines
12 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using DataBlockHelper;
using HslCommunication;
using Mesnac.Action.Base;
using Mesnac.Action.ChemicalWeighing.FreeDb;
using Mesnac.Action.ChemicalWeighing.LjMaterial;
using Mesnac.Basic;
using Mesnac.Controls.Base;
using Mesnac.Core.Service;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Mesnac.Action.ChemicalWeighing.ManualControl
{
public class InitAction : ChemicalWeighingAction, IAction
{
List<DbMCControl> McControllist;
OperateResult<byte[]> Read;
byte[] content;
DbMCControl materialGridControl;
Timer timer;
int flag = 0;
IBaseControl WaterActualValue1;
IBaseControl WaterActualValue2;
IBaseControl WaterActualValue3;
IBaseControl WaterActualValue4;
IBaseControl WaterMetValue1;
IBaseControl WaterMetValue2;
IBaseControl WaterMetValue3;
IBaseControl WaterMetValue4;
IBaseControl SpiralActValue1;
IBaseControl SpiralActValue2;
IBaseControl SpiralActValue3;
IBaseControl SpiralActValue4;
IBaseControl MetageState1;
IBaseControl MetageState2;
IBaseControl MetageState3;
IBaseControl MetageState4;
IBaseControl WaterOutState1;
IBaseControl WaterOutState2;
IBaseControl WaterOutState3;
IBaseControl WaterOutState4;
IBaseControl SpiralState1;
IBaseControl SpiralState2;
IBaseControl SpiralState3;
IBaseControl SpiralState4;
bool State1;
bool State2;
byte Byt;
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime); //必须要调用的
//InitTimer();
//timer.Start();
McControllist = GetAllDbMCControlsByOption(DbOptionTypes.InitData);
WaterActualValue1 = GetBaseControl("WaterActualValue1");
WaterActualValue2 = GetBaseControl("WaterActualValue2");
WaterActualValue3 = GetBaseControl("WaterActualValue3");
WaterActualValue4 = GetBaseControl("WaterActualValue4");
WaterMetValue1 = GetBaseControl("WaterMetValue1");
WaterMetValue2 = GetBaseControl("WaterMetValue2");
WaterMetValue3 = GetBaseControl("WaterMetValue3");
WaterMetValue4 = GetBaseControl("WaterMetValue4");
SpiralActValue1 = GetBaseControl("SpiralActValue1");
SpiralActValue2 = GetBaseControl("SpiralActValue2");
SpiralActValue3 = GetBaseControl("SpiralActValue3");
SpiralActValue4 = GetBaseControl("SpiralActValue4");
MetageState1 = GetBaseControl("MetageState1");
MetageState2 = GetBaseControl("MetageState2");
MetageState3 = GetBaseControl("MetageState3");
MetageState4 = GetBaseControl("MetageState4");
WaterOutState1 = GetBaseControl("WaterOutState1");
WaterOutState2 = GetBaseControl("WaterOutState2");
WaterOutState3 = GetBaseControl("WaterOutState3");
WaterOutState4 = GetBaseControl("WaterOutState4");
SpiralState1 = GetBaseControl("SpiralState1");
SpiralState2 = GetBaseControl("SpiralState2");
SpiralState3 = GetBaseControl("SpiralState3");
SpiralState4 = GetBaseControl("SpiralState4");
materialGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "ManualLogGridView").FirstOrDefault();
DataTable table = DBHelp.GetTable(@"select top 100 id, logtext, logtime from Manual_Log order by id desc");
if (this.materialGridControl != null && this.materialGridControl.BaseControl != null)
{
this.materialGridControl.BaseControl.BindDataSource = null;
this.materialGridControl.BaseControl.BindDataSource = table;
}
else
{
ICSharpCode.Core.LoggingService<InitAction>.Warn("手动操作日志信息控件为Null...");
}
timer = new Timer();
timer.Interval = 1000;
timer.Enabled = true;
timer.Tick += new EventHandler(ReadFromPlc);//添加事件
}
private void ReadFromPlc(object sender, EventArgs e)
{
flag += 1;
if(flag > 10)
{
flag = 0;
DataTable table = DBHelp.GetTable(@"select top 100 id, logtext, logtime from Manual_Log order by id desc");
if (this.materialGridControl != null && this.materialGridControl.BaseControl != null)
{
this.materialGridControl.BaseControl.BindDataSource = null;
this.materialGridControl.BaseControl.BindDataSource = table;
}
else
{
ICSharpCode.Core.LoggingService<InitAction>.Warn("手动操作日志信息控件为Null...");
}
}
if (GetAllDbMCControlsByOption(DbOptionTypes.InitData).Count == 0)
{
timer.Stop();
timer.Dispose();
}
Read = PlcConnect.Instance.Read("DB2119.22.0", 2);
content = Read.Content;
WaterActualValue1.MCValue = PlcConnect.Instance.ByteTransform.TransInt16(content, 0);
Read = PlcConnect.Instance.Read("DB2119.2.0", 2);
content = Read.Content;
WaterActualValue2.MCValue = PlcConnect.Instance.ByteTransform.TransInt16(content, 0);
Read = PlcConnect.Instance.Read("DB2119.32.0", 2);
content = Read.Content;
WaterActualValue3.MCValue = PlcConnect.Instance.ByteTransform.TransInt16(content, 0);
Read = PlcConnect.Instance.Read("DB2119.12.0", 2);
content = Read.Content;
WaterActualValue4.MCValue = PlcConnect.Instance.ByteTransform.TransInt16(content, 0);
Read = PlcConnect.Instance.Read("DB2119.24.0", 2);
content = Read.Content;
WaterMetValue1.MCValue = PlcConnect.Instance.ByteTransform.TransInt16(content, 0);
Read = PlcConnect.Instance.Read("DB2119.4.0", 2);
content = Read.Content;
WaterMetValue2.MCValue = PlcConnect.Instance.ByteTransform.TransInt16(content, 0);
Read = PlcConnect.Instance.Read("DB2119.34.0", 2);
content = Read.Content;
WaterMetValue3.MCValue = PlcConnect.Instance.ByteTransform.TransInt16(content, 0);
Read = PlcConnect.Instance.Read("DB2119.14.0", 2);
content = Read.Content;
WaterMetValue4.MCValue = PlcConnect.Instance.ByteTransform.TransInt16(content, 0);
Read = PlcConnect.Instance.Read("DB2119.42.0", 2);
content = Read.Content;
SpiralActValue1.MCValue = PlcConnect.Instance.ByteTransform.TransInt16(content, 0);
Read = PlcConnect.Instance.Read("DB2119.64.0", 2);
content = Read.Content;
SpiralActValue2.MCValue = PlcConnect.Instance.ByteTransform.TransInt16(content, 0);
Read = PlcConnect.Instance.Read("DB2119.86.0", 2);
content = Read.Content;
SpiralActValue3.MCValue = PlcConnect.Instance.ByteTransform.TransInt16(content, 0);
Read = PlcConnect.Instance.Read("DB2119.28.0", 1);
content = Read.Content;
Byt = content[0];
State1 = Byt.GetBit(2);
State2 = Byt.GetBit(6);
if (State1)
{
MetageState1.MCValue = "正在称量";
}
else
{
MetageState1.MCValue = "停止称量";
}
if (State2)
{
WaterOutState1.MCValue = "正在排水";
}
else
{
WaterOutState1.MCValue = "停止排水";
}
Read = PlcConnect.Instance.Read("DB2119.8.0", 1);
content = Read.Content;
Byt = content[0];
State1 = Byt.GetBit(2);
State2 = Byt.GetBit(6);
if (State1)
{
MetageState2.MCValue = "正在称量";
}
else
{
MetageState2.MCValue = "停止称量";
}
if (State2)
{
WaterOutState2.MCValue = "正在排水";
}
else
{
WaterOutState2.MCValue = "停止排水";
}
Read = PlcConnect.Instance.Read("DB2119.38.0", 1);
content = Read.Content;
Byt = content[0];
State1 = Byt.GetBit(2);
State2 = Byt.GetBit(6);
if (State1)
{
MetageState3.MCValue = "正在称量";
}
else
{
MetageState3.MCValue = "停止称量";
}
if (State2)
{
WaterOutState3.MCValue = "正在排水";
}
else
{
WaterOutState3.MCValue = "停止排水";
}
Read = PlcConnect.Instance.Read("DB2119.18.0", 1);
content = Read.Content;
Byt = content[0];
State1 = Byt.GetBit(2);
State2 = Byt.GetBit(6);
if (State1)
{
MetageState4.MCValue = "正在称量";
}
else
{
MetageState4.MCValue = "停止称量";
}
if (State2)
{
WaterOutState4.MCValue = "正在排水";
}
else
{
WaterOutState4.MCValue = "停止排水";
}
Read = PlcConnect.Instance.Read("DB2119.60.0", 1);
content = Read.Content;
Byt = content[0];
State1 = Byt.GetBit(2);
if (State1)
{
SpiralState1.MCValue = "正在螺旋";
}
else
{
SpiralState1.MCValue = "停止螺旋";
}
Read = PlcConnect.Instance.Read("DB2119.82.0", 1);
content = Read.Content;
Byt = content[0];
State1 = Byt.GetBit(2);
if (State1)
{
SpiralState2.MCValue = "正在螺旋";
}
else
{
SpiralState2.MCValue = "停止螺旋";
}
Read = PlcConnect.Instance.Read("DB2119.104.0", 1);
content = Read.Content;
Byt = content[0];
State1 = Byt.GetBit(2);
if (State1)
{
SpiralState3.MCValue = "正在螺旋";
}
else
{
SpiralState3.MCValue = "停止螺旋";
}
//Read = PlcConnect.Instance.Read("DB2119..0", 1);
//content = Read.Content;
//Byt = content[0];
//State1 = Byt.GetBit(2);
//if (State1)
//{
// MetageState4.MCValue = "正在螺旋";
//}
//else
//{
// MetageState4.MCValue = "停止螺旋";
//}
}
//private void InitTimer()
//{
// //设置定时间隔(毫秒为单位)
// int interval = 900;
// timer = new System.Timers.Timer(interval);
// //设置执行一次false还是一直执行(true)
// timer.AutoReset = true;
// //设置是否执行System.Timers.Timer.Elapsed事件
// timer.Enabled = true;
// //绑定Elapsed事件
// timer.Elapsed += new System.Timers.ElapsedEventHandler(ReadFromPlc);
//}
private IBaseControl GetBaseControl(string name)
{
return McControllist.Where(t => t.BaseControl.MCKey != null && t.BaseControl.MCKey == name).FirstOrDefault().BaseControl;
}
private void ManualLogControl(string logName)
{
var Log = new ManualLogEntity()
{
logtext = logName,
logtime = DateTime.Now,
userid = string.IsNullOrWhiteSpace(UserInfo.Instance.UserName) ? "Edit" : UserInfo.Instance.UserName
};
FreeSqlUnit.Instance.Insert<ManualLogEntity>(Log).ExecuteIdentity();
}
}
}