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; } } }