using SHJX.Service.Control.Interface;
using SHJX.Service.Control.Modules;
using SHJX.Service.Common.ReadXML;
using SHJX.Service.Model.Control;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace SHJX.Service.Control.Route.RouteController
{
///
/// 样品位冷却
///
/// 这一步是放在搅拌结束后做的
public class SampleCoolingOperate : FlowControlOperateImp
{
private const string EquipmentName = "SampleCooling";
public virtual bool Operate(ReadConfigUtil config, DataEventArgs data)
{
MotorSpeed itemSpeed = config.GetSpeed[0];
itemSpeed.Speed = 6;
SetSpeed(itemSpeed);
itemSpeed = config.GetSpeed[1];
itemSpeed.Speed = 6;
SetSpeed(itemSpeed);
List names = new() { "MotorZ", "MotorX", "MotorY" };
names.ForEach(async item =>
{
var res = await XYZGoBack(item);
});
itemSpeed = config.GetSpeed[0];
SetSpeed(itemSpeed);
itemSpeed = config.GetSpeed[1];
SetSpeed(itemSpeed);
return EquipmentName.CoolingTimeCalculate(data.DataManager);
}
private async Task XYZGoBack(string name)
{
var portArgs = new PortArgs()
{
ReadWay = "OriginalPosition",
TypeName = name,
WriteWay = WriteWay.GoBack
};
var res = (bool)DataCentre.GetClient.Factory(name).Read(portArgs) || DataCentre.GetClient.Factory(name).Write(portArgs);
name.UpdateMotorPoint();
return res;
}
public bool SetSpeed(MotorSpeed speed)
{
#region 速度
PortArgs speedArgs = new PortArgs()
{
TypeName = speed.NodeName,
Distance = speed.Speed,
WriteWay = WriteWay.Speed
};
var res = DataCentre.GetClient.Factory(speed.NodeName).Write(speedArgs);
#endregion
return res;
}
}
}