using BPASmartClient.Helper; using BPASmartClient.Modbus; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BPASmartClient.JXJFoodBigStation.Model.Siemens { public class SiemensDeviceStatus { public ModbusTcp SiemensTcp = new ModbusTcp(); public bool IsConnected => SiemensTcp.Connected; public string IpAddress => SiemensTcp.IPAdress; /// /// 配方接收信号复位 /// public void RecipeSignReset() { this.SiemensTcp.Write(SiemensCommAddress.RecipeState, (ushort)0); } /// /// AGV到位信号复位 /// public void AgvSignReset() { this.SiemensTcp.Write(SiemensCommAddress.TrayState, (ushort)0); } public void Init() { if (IsConnected) { ThreadManage.GetInstance().StartLong(new Action(() => { var res = this.SiemensTcp.Read(SiemensCommAddress.RecipeState); if (res != null && RTrig.GetInstance("RecipeTrig").Start(res is bool SignTrig)) { ActionManage.GetInstance.Send("西门子下发配方"); RecipeSignReset(); } var AgvState = this.SiemensTcp.Read(SiemensCommAddress.TrayState); if (AgvState != null && RTrig.GetInstance("AgvTrig").Start(res is bool AgvSignTrig)) { ActionManage.GetInstance.Send("AGV到位信号"); AgvSignReset(); } }),"监听服务数据"); } } /// /// 配方配料完成信号 /// /// /// private void DosingFinsih(int TrayLocation,int recipeID) { this.SiemensTcp.Write(SiemensCommAddress.TrayLocationNumToPLC, TrayLocation); this.SiemensTcp.Write(SiemensCommAddress.TrayStateToPLC, 1); this.SiemensTcp.Write(SiemensCommAddress.TrayRecipeIDToPLC, recipeID); } } }