SDA/iWareModel/EnumType/EDevice/Rgv/EStationMode.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace iWareModel { public enum EStationMode { å ³æºæ¨¡å¼ = 0, æå¨æ¨¡å¼ = 1, èªå¨å¾ æºæ¨¡å¼ = 2, èªå¨è¿è¡æ¨¡å¼ = 3, } } SDA/iWareModel/EnumType/EDevice/Rgv/EStationState.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace iWareModel { public enum EStationState { //ç©ºé² = 0, //ä»»å¡ä¸ = 1, //[EditBy shaocx,2022-05-11] ä»»å¡ä¸ = 0, ç©ºé² = 1 } } SDA/iWareSda/Devices/4-Station/StationModel/DB/RgvComm.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,385 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace iWareSda.Devices._3_Station.StationModel { #region å public class StationDB2ObjForWriteComm { /// <summary> /// ç«ç¹ç¼å· /// </summary> [Description("ç«ç¹ç¼å·")] public string StationCode { get; set; } /// <summary> /// è¯»ç æ°æ®è§£æå®æ /// </summary> [Description("è¯»ç æ°æ®è§£æå®æ")] public bool W_DataFinish { get; set; } /// <summary> /// é½å¥ä¿¡æ¯ï¼998é½å¥ï¼999å¼å¸¸åºåºï¼ /// </summary> [Description("é½å¥ä¿¡æ¯ï¼998é½å¥ï¼999å¼å¸¸åºåºï¼")] public string W_KittingInfo { get; set; } /// <summary> /// åé æ¾æåºä½å· /// </summary> [Description("åé æ¾æåºä½å·")] public string W_Destination_In { get; set; } /// <summary> /// ä»»å¡å· /// </summary> [Description("ä»»å¡å·")] public string W_TaskID { get; set; } /// <summary> /// æ¥æé¿åº¦ /// </summary> [Description("æ¥æé¿åº¦")] public string W_Length { get; set; } /// <summary> /// æ¥æå®½åº¦ /// </summary> [Description("æ¥æå®½åº¦")] public string W_Width { get; set; } /// <summary> /// æ¥æé«åº¦ /// </summary> [Description("æ¥æé«åº¦")] public string W_Height { get; set; } /// <summary> /// 请æ±åºåº /// </summary> [Description("请æ±åºåº")] public bool W_ReqOut { get; set; } /// <summary> /// åé åºåºåºä½å· /// </summary> [Description("åé åºåºåºä½å·")] public string W_Destination_Out { get; set; } /// <summary> /// æ¯å¦æè½¬ /// </summary> [Description("æ¯å¦æè½¬")] public bool W_IsRotate { get; set; } /// <summary> /// å ä»¶é¿ /// </summary> [Description("å ä»¶é¿")] public string W_PackageLength { get; set; } /// <summary> /// å 件宽 /// </summary> [Description("å 件宽")] public string W_PackageWidth { get; set; } /// <summary> /// çº¸ç®±é« /// </summary> [Description("纸箱é«")] public string W_CartonHeight { get; set; } /// <summary> /// 纸箱宽 /// </summary> [Description("纸箱宽")] public string W_CartonWidth { get; set; } /// <summary> /// æ¾æXåç§» /// </summary> [Description("æ¾æXåç§»")] public string W_X_Offset { get; set; } /// <summary> /// æ¾æYåç§» /// </summary> [Description("æ¾æYåç§»")] public string W_Y_Offset { get; set; } } /// <summary> /// æ¯ä¸ªç«ç¹çåæ°æ® /// </summary> public class StationDBForWriteComm { /// <summary> /// ç«ç¹ç¼å· /// </summary> [Description("ç«ç¹ç¼å·")] public string StationCode { get; set; } /// <summary> /// è¯»ç æ°æ®è§£æå®æ /// </summary> [Description("è¯»ç æ°æ®è§£æå®æ")] public string W_DataFinish { get; set; } /// <summary> /// é½å¥ä¿¡æ¯ï¼998é½å¥ï¼999å¼å¸¸åºåºï¼ /// </summary> [Description("é½å¥ä¿¡æ¯ï¼998é½å¥ï¼999å¼å¸¸åºåºï¼")] public string W_KittingInfo { get; set; } /// <summary> /// åé æ¾æåºä½å· /// </summary> [Description("åé æ¾æåºä½å·")] public string W_Destination_In { get; set; } /// <summary> /// ä»»å¡å· /// </summary> [Description("ä»»å¡å·")] public string W_TaskID { get; set; } /// <summary> /// æ¥æé¿åº¦ /// </summary> [Description("æ¥æé¿åº¦")] public string W_Length { get; set; } /// <summary> /// æ¥æå®½åº¦ /// </summary> [Description("æ¥æå®½åº¦")] public string W_Width { get; set; } /// <summary> /// æ¥æé«åº¦ /// </summary> [Description("æ¥æé«åº¦")] public string W_Height { get; set; } /// <summary> /// 请æ±åºåº /// </summary> [Description("请æ±åºåº")] public string W_ReqOut { get; set; } /// <summary> /// åé åºåºåºä½å· /// </summary> [Description("åé åºåºåºä½å·")] public string W_Destination_Out { get; set; } /// <summary> /// æ¯å¦æè½¬ /// </summary> [Description("æ¯å¦æè½¬")] public string W_IsRotate { get; set; } /// <summary> /// å ä»¶é¿ /// </summary> [Description("å ä»¶é¿")] public string W_PackageLength { get; set; } /// <summary> /// å 件宽 /// </summary> [Description("å 件宽")] public string W_PackageWidth { get; set; } /// <summary> /// çº¸ç®±é« /// </summary> [Description("纸箱é«")] public string W_CartonHeight { get; set; } /// <summary> /// 纸箱宽 /// </summary> [Description("纸箱宽")] public string W_CartonWidth { get; set; } /// <summary> /// æ¾æXåç§» /// </summary> [Description("æ¾æXåç§»")] public string W_X_Offset { get; set; } /// <summary> /// æ¾æYåç§» /// </summary> [Description("æ¾æYåç§»")] public string W_Y_Offset { get; set; } } #endregion /// <summary> /// æ¯ä¸ªç«ç¹çè¯»æ°æ® /// </summary> public class StationDB2ObjForReadComm { /// <summary> /// ç«ç¹ç¼å· /// </summary> [Description("ç«ç¹ç¼å·")] public string StationCode { get; set; } /// <summary> /// 请æ±è§£æè¯»ç æ°æ® /// </summary> [Description("请æ±è§£æè¯»ç æ°æ®")] public bool R_ReqParseData { get; set; } /// <summary> /// 读ç å¨è¯»ç ç»æ /// </summary> [Description("读ç å¨è¯»ç ç»æ")] public String R_ReadCodeResult { get; set; } /// <summary> /// æ¶å°ä»»å¡ä¸ååé¦ /// </summary> [Description("æ¶å°ä»»å¡ä¸ååé¦")] public bool R_ACK { get; set; } /// <summary> /// æ¨¡å¼ /// </summary> [Description("模å¼")] public short R_Model { get; set; } /// <summary> /// è¿è¡ç¶æ /// </summary> [Description("è¿è¡ç¶æ")] public short R_State { get; set; } /// <summary> /// æ¥è¦ä»£ç /// </summary> [Description("æ¥è¦ä»£ç ")] public short R_AlarmCode { get; set; } /// <summary> /// æ¥è¦ä»£ç å 容ï¼éDBåå 容 /// </summary> [Description("æ¥è¦ä»£ç å 容ï¼éDBåå 容")] public string R_AlarmCodeMsg { get; set; } /// <summary> /// å½åç®æ å°å /// </summary> [Description("å½åç®æ å°å")] public short R_Destination { get; set; } /// <summary> /// è´§å½¢ /// </summary> [Description("è´§å½¢")] public short R_Shape { get; set; } /// <summary> /// å½åä»»å¡å· /// </summary> [Description("å½åä»»å¡å·")] public int R_TaskID { get; set; } } public class StationDBForReadComm { /// <summary> /// ç«ç¹ç¼å· /// </summary> [Description("ç«ç¹ç¼å·")] public string StationCode { get; set; } /// <summary> /// 请æ±è§£æè¯»ç æ°æ® /// </summary> [Description("请æ±è§£æè¯»ç æ°æ®")] public string R_ReqParseData { get; set; } /// <summary> /// 读ç å¨è¯»ç ç»æ /// </summary> [Description("读ç å¨è¯»ç ç»æ")] public String R_ReadCodeResult { get; set; } /// <summary> /// å çµ1ç¶æ /// </summary> [Description("å çµ1ç¶æ")] public string R_PH_1 { get; set; } /// <summary> /// å çµ2ç¶æ /// </summary> [Description("å çµ2ç¶æ")] public string R_PH_2 { get; set; } /// <summary> /// æ¶å°ä»»å¡ä¸ååé¦ /// </summary> [Description("æ¶å°ä»»å¡ä¸ååé¦")] public string R_ACK { get; set; } /// <summary> /// æ¨¡å¼ /// </summary> [Description("模å¼")] public string R_Model { get; set; } /// <summary> /// è¿è¡ç¶æ /// </summary> [Description("è¿è¡ç¶æ")] public string R_State { get; set; } /// <summary> /// æ¥è¦ä»£ç /// </summary> [Description("æ¥è¦ä»£ç ")] public string R_AlarmCode { get; set; } /// <summary> /// å½åç®æ å°å /// </summary> [Description("å½åç®æ å°å")] public string R_Destination { get; set; } /// <summary> /// å¤å½¢æ£æµ /// </summary> [Description("å¤å½¢æ£æµ")] public string R_Shape { get; set; } /// <summary> /// å½åä»»å¡å· /// </summary> [Description("å½åä»»å¡å·")] public string R_TaskID { get; set; } } } SDA/iWareSda/Devices/4-Station/StationModel/DB/RgvDB2Obj.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,213 @@  using iWareSda.Devices._3_Station.StationModel; using System.Collections.Generic; using System.ComponentModel; namespace iWareSda { /// <summary> /// Stationå±ç¤ºå®ä½ç±» /// </summary> public class StationDB2Obj { #region åå ¥çStationä¿¡æ¯ /// <summary> /// å¿è·³ /// </summary> [Description("å¿è·³")] public bool W_HandShake { get; set; } /// <summary> /// 1015éæ°æ«ç ï¼å为trueè¡¨ç¤ºéæ°æ«ç ï¼å为falseï¼è¡¨ç¤ºå ³ééæ°æ«ç ãå½wcs读å°å¼åï¼å°±å为false /// </summary> [Description("1015éæ°æ«ç ")] public bool W_1015_ReScan { get; set; } /// <summary> /// 1019éæ°æ«ç ï¼å为trueè¡¨ç¤ºéæ°æ«ç ï¼å为falseï¼è¡¨ç¤ºå ³ééæ°æ«ç ãå½wcs读å°å¼åï¼å°±å为false /// </summary> [Description("1019éæ°æ«ç ")] public bool W_1019_ReScan { get; set; } /// <summary> /// Station_宿ACK /// </summary> [Description("Station_宿ACK")] public bool W_Station_FinishACK { get; set; } /// <summary> /// 1002æ«æå¤±è´¥ä¿¡å· /// </summary> [Description("1002æ«æå¤±è´¥ä¿¡å·")] public bool W_1002_ScanFailACK { get; set; } /// <summary> /// 1004æ«æå¤±è´¥ä¿¡å· /// </summary> [Description("1004æ«æå¤±è´¥ä¿¡å·")] public bool W_1004_ScanFailACK { get; set; } /// <summary> /// 1006æ«æå¤±è´¥ä¿¡å· /// </summary> [Description("1006æ«æå¤±è´¥ä¿¡å·")] public bool W_1006_ScanFailACK { get; set; } /// <summary> /// 1007æ«æå¤±è´¥ä¿¡å· /// </summary> [Description("1007æ«æå¤±è´¥ä¿¡å·")] public bool W_1007_ScanFailACK { get; set; } /// <summary> /// 1002æ«ææåä¿¡å· /// </summary> [Description("1002æ«ææåä¿¡å·")] public bool W_1002_ScanSuccessACK { get; set; } /// <summary> /// 1004æ«ææåä¿¡å· /// </summary> [Description("1004æ«ææåä¿¡å·")] public bool W_1004_ScanSuccessACK { get; set; } /// <summary> /// 1006æ«ææåä¿¡å· /// </summary> [Description("1006æ«ææåä¿¡å·")] public bool W_1006_ScanSuccessACK { get; set; } /// <summary> /// 1007æ«ææåä¿¡å· /// </summary> [Description("1007æ«ææåä¿¡å·")] public bool W_1007_ScanSuccessACK { get; set; } /// <summary> /// åºåºå卿ºçåå· ãEditby shaocx,2023-07-23ã /// </summary> [Description("åºåºå卿ºçåå·")] public string W_Out_MaterialModel { get; set; } /// <summary> /// åºåºå卿ºçè®¢è´§å· ãEditby shaocx,2023-07-23ã /// </summary> [Description("åºåºå卿ºç订货å·")] public string W_Out_OrderNo { get; set; } /// <summary> /// åºåºå卿ºçç¼å· ãEditby shaocx,2023-07-23ã /// </summary> [Description("åºåºå卿ºçç¼å·")] public string W_Out_SerialNumber { get; set; } #region åçç«ç¹ public List<StationDB2ObjForWriteComm> W_StationForWriteCommList { get; set; } #endregion #endregion #region 读åå°çStationä¿¡æ¯ /// <summary> /// å¿è·³ /// </summary> [Description("å¿è·³")] public int R_HandShake { get; set; } /// <summary> /// Stationç¼å· /// </summary> [Description("Stationç¼å·")] public string R_StationNo { get; set; } /// <summary> /// 1015æ«ç /// </summary> [Description("1015æ«ç ")] public string R_1015_Scan { get; set; } /// <summary> /// 1019æ«ç /// </summary> [Description("1019æ«ç ")] public string R_1019_Scan { get; set; } /// <summary> /// 1019å卿ºçæ«ç /// </summary> [Description("1019å卿ºçæ«ç ")] public string R_1019_CargoNoScan { get; set; } /// <summary> /// 1002æ«ç /// </summary> [Description("1002æ«ç ")] public string R_1002_Scan { get; set; } /// <summary> /// 1004æ«ç /// </summary> [Description("1004æ«ç ")] public string R_1004_Scan { get; set; } /// <summary> /// 1006æ«ç /// </summary> [Description("1006æ«ç ")] public string R_1006_Scan { get; set; } /// <summary> /// 1007æ«ç /// </summary> [Description("1007æ«ç ")] public string R_1007_Scan { get; set; } /// <summary> /// 1009ç1屿£æµå çµ /// </summary> [Description("1009ç1屿£æµå çµ")] public bool R_1009_High1 { get; set; } /// <summary> /// 1009ç2屿£æµå çµ /// </summary> [Description("1009ç2屿£æµå çµ")] public bool R_1009_High2 { get; set; } /// <summary> /// 1009ç3屿£æµå çµ /// </summary> [Description("1009ç3屿£æµå çµ")] public bool R_1009_High3 { get; set; } /// <summary> /// Stationä»»å¡å®æ /// </summary> [Description("Stationä»»å¡å®æ")] public bool R_Station_Finish { get; set; } /// <summary> /// Stationå½ååæ /// </summary> [Description("Stationå½ååæ ")] public int R_Station_Coordinate { get; set; } #region 读çç«ç¹ public List<StationDB2ObjForReadComm> R_StationForReadCommList { get; set; } #endregion #endregion } } SDA/iWareSda/Devices/4-Station/StationModel/DB/RgvDBForRead.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,106 @@ using iWareSda.Devices._3_Station.StationModel; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace iWareSda { //Stationå°åç±» public class StationDBForRead { #region 读åå°çStationä¿¡æ¯ /// <summary> /// å¿è·³ /// </summary> [Description("å¿è·³")] public string R_HandShake { get; set; } /// <summary> /// 1015æ«ç /// </summary> [Description("1015æ«ç ")] public string R_1015_Scan { get; set; } /// <summary> /// 1019æ«ç /// </summary> [Description("1019æ«ç ")] public string R_1019_Scan { get; set; } /// <summary> /// 1019å卿ºçæ«ç /// </summary> [Description("1019å卿ºçæ«ç ")] public string R_1019_CargoNoScan { get; set; } /// <summary> /// 1002æ«ç /// </summary> [Description("1002æ«ç ")] public string R_1002_Scan { get; set; } /// <summary> /// 1004æ«ç /// </summary> [Description("1004æ«ç ")] public string R_1004_Scan { get; set; } /// <summary> /// 1006æ«ç /// </summary> [Description("1006æ«ç ")] public string R_1006_Scan { get; set; } /// <summary> /// 1007æ«ç /// </summary> [Description("1007æ«ç ")] public string R_1007_Scan { get; set; } /// <summary> /// 1009ç1屿£æµå çµ /// </summary> [Description("1009ç1屿£æµå çµ")] public string R_1009_High1 { get; set; } /// <summary> /// 1009ç2屿£æµå çµ /// </summary> [Description("1009ç2屿£æµå çµ")] public string R_1009_High2 { get; set; } /// <summary> /// 1009ç3屿£æµå çµ /// </summary> [Description("1009ç3屿£æµå çµ")] public string R_1009_High3 { get; set; } /// <summary> /// Stationä»»å¡å®æ /// </summary> [Description("Stationä»»å¡å®æ")] public string R_Station_Finish { get; set; } /// <summary> /// Stationå½ååæ /// </summary> [Description("Stationå½ååæ ")] public string R_Station_Coordinate { get; set; } #region 读çç«ç¹ public List<StationDBForReadComm> R_StationForReadCommList { get; set; } #endregion #endregion } } SDA/iWareSda/Devices/4-Station/StationModel/DB/RgvDBForWrite.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,121 @@ using iWareSda.Devices._3_Station.StationModel; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace iWareSda { //Stationå°åç±» public class StationDBForWrite { #region åå ¥çStationä¿¡æ¯ /// <summary> /// å¿è·³ /// </summary> [Description("å¿è·³")] public string W_HandShake { get; set; } /// <summary> /// 1015éæ°æ«ç ï¼å为trueè¡¨ç¤ºéæ°æ«ç ï¼å为falseï¼è¡¨ç¤ºå ³ééæ°æ«ç ãå½wcs读å°å¼åï¼å°±å为false /// </summary> [Description("1015éæ°æ«ç ")] public string W_1015_ReScan { get; set; } /// <summary> /// 1019éæ°æ«ç ï¼å为trueè¡¨ç¤ºéæ°æ«ç ï¼å为falseï¼è¡¨ç¤ºå ³ééæ°æ«ç ãå½wcs读å°å¼åï¼å°±å为false /// </summary> [Description("1019éæ°æ«ç ")] public string W_1019_ReScan { get; set; } /// <summary> /// Station_宿ACK /// </summary> [Description("Station_宿ACK")] public string W_Station_FinishACK { get; set; } /// <summary> /// 1002æ«æå¤±è´¥ä¿¡å· /// </summary> [Description("1002æ«æå¤±è´¥ä¿¡å·")] public string W_1002_ScanFailACK { get; set; } /// <summary> /// 1004æ«æå¤±è´¥ä¿¡å· /// </summary> [Description("1004æ«æå¤±è´¥ä¿¡å·")] public string W_1004_ScanFailACK { get; set; } /// <summary> /// 1006æ«æå¤±è´¥ä¿¡å· /// </summary> [Description("1006æ«æå¤±è´¥ä¿¡å·")] public string W_1006_ScanFailACK { get; set; } /// <summary> /// 1007æ«æå¤±è´¥ä¿¡å· /// </summary> [Description("1007æ«æå¤±è´¥ä¿¡å·")] public string W_1007_ScanFailACK { get; set; } /// <summary> /// 1002æ«ææåä¿¡å· /// </summary> [Description("1002æ«ææåä¿¡å·")] public string W_1002_ScanSuccessACK { get; set; } /// <summary> /// 1004æ«ææåä¿¡å· /// </summary> [Description("1004æ«ææåä¿¡å·")] public string W_1004_ScanSuccessACK { get; set; } /// <summary> /// 1006æ«ææåä¿¡å· /// </summary> [Description("1006æ«ææåä¿¡å·")] public string W_1006_ScanSuccessACK { get; set; } /// <summary> /// 1007æ«ææåä¿¡å· /// </summary> [Description("1007æ«ææåä¿¡å·")] public string W_1007_ScanSuccessACK { get; set; } /// <summary> /// åºåºå卿ºçåå· ãEditby shaocx,2023-07-23ã /// </summary> [Description("åºåºå卿ºçåå·")] public string W_Out_MaterialModel { get; set; } /// <summary> /// åºåºå卿ºçè®¢è´§å· ãEditby shaocx,2023-07-23ã /// </summary> [Description("åºåºå卿ºç订货å·")] public string W_Out_OrderNo { get; set; } /// <summary> /// åºåºå卿ºçç¼å· ãEditby shaocx,2023-07-23ã /// </summary> [Description("åºåºå卿ºçç¼å·")] public string W_Out_SerialNumber { get; set; } #region åçç«ç¹ public List<StationDBForWriteComm> W_StationForWriteCommList { get; set; } #endregion #endregion } } SDA/iWareSda/Devices/4-Station/StationModel/StationEntity.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,779 @@  using iWareSda.Common; using System.Linq; using iWareModel; using System; using System.Collections.Generic; using System.Threading; using iWareCommon.Utils; using iWareCommon.Common.Globle; using iWareCommon; using iWareSda.Devices._3_Station.StationModel; using Newtonsoft.Json; using iWareSda.Model; namespace iWareSda { public class StationEntity : IDevice { public StationEntity() { } #region OPCç¸å ³ /// <summary> /// åçDBå /// </summary> public StationDBForWrite DBBlockForWrite { get; set; } /// <summary> /// 读çDBå /// </summary> public StationDBForRead DBBlockForRead { get; set; } /// <summary> /// 读åPLCå®ä¾ /// </summary> public PLCService plcService { get; set; } /// <summary> /// è§å¾å¯¹è±¡ /// </summary> public StationView View { get; set; } #endregion /// <summary> /// åå§åæ°æ® /// </summary> public void InitData() { } public StationEntity(string srmName, int deviceId, StationDBForWrite _dbBlockForWrite, StationDBForRead _dbBlockForRead, PLCService _plcService) { this.View = new StationView(); this.View.DeviceName = srmName; this.View.DeviceId = deviceId; //éåèµå¼åå§å this.View.R_StationForReadCommList = new List<StationDB2ObjForReadComm>(); this.View.W_StationForWriteCommList = new List<StationDB2ObjForWriteComm>(); for (int i = 0; i < WareSdaStruct.StationStationList.Count; i++) { this.View.R_StationForReadCommList.Add(new StationDB2ObjForReadComm() { StationCode = WareSdaStruct.StationStationList[i] }); this.View.W_StationForWriteCommList.Add(new StationDB2ObjForWriteComm() { StationCode = WareSdaStruct.StationStationList[i] }); } plcService = _plcService; DBBlockForWrite = _dbBlockForWrite; DBBlockForRead = _dbBlockForRead; } #region 个æ§åæ¹æ³ /// <summary> /// Stationä»»å¡åé /// </summary> /// <param name="deviceId"></param> /// <param name="taskId"></param> /// <param name="sourcePlce"></param> /// <param name="toPlace"></param> /// <param name="taskType"></param> /// <param name="msg"></param> /// <returns></returns> public bool SendTask(int deviceId, int taskId, string sourcePlce, string toPlace, out string msg) { try { msg = ""; if (!CanSendTask(deviceId, out msg)) { return false; } //è¿éç¹æ®è½¬æ¢ä¸ä¸ if (toPlace == ((int)EDevice.åºåºå£1012).ToString()) { toPlace = ((int)EDevice.æåæº1030).ToString(); } StationDBForWriteComm w_db_source = this.DBBlockForWrite.W_StationForWriteCommList.FirstOrDefault(x => x.StationCode == sourcePlce); StationDB2ObjForWriteComm w_dbObj_source = this.View.W_StationForWriteCommList.FirstOrDefault(x => x.StationCode == sourcePlce); //StationDBForWriteComm w_db_to = this.DBBlockForWrite.W_StationForWriteCommList.FirstOrDefault(x => x.StationCode == toPlace); //StationDB2ObjForWriteComm w_dbObj_to = this.View.W_StationForWriteCommList.FirstOrDefault(x => x.StationCode == toPlace); //妿ACK为trueï¼è¡¨ç¤ºä¸è½åä»»å¡ var readObj = this.View.R_StationForReadCommList.FirstOrDefault(x => x.StationCode == sourcePlce); if (readObj.R_ACK == true) { msg = "ACK为TRUEï¼ä¸å 许åä»»å¡"; return false; } MessageModel b2 = null; if (!b2.result) { msg = string.Format("åStation{0},èµ·ç¹{1}åéä»»å¡{2},åå ¥ç®æ ç«ç¹{3}失败,è¿åç»æ:" + b2.resMsg, this.View.DeviceName, sourcePlce, taskId, toPlace); return false; } b2 = this.plcService.WriteValuePoint(w_db_source.W_TaskID, Convert.ToInt32(taskId), w_dbObj_source.W_TaskID); if (!b2.result) { msg = string.Format("åStation{0},èµ·ç¹{1}ï¼ç®æ ç¹{2},åå ¥ä»»å¡å·{3}失败,è¿åç»æ:" + b2.resMsg, this.View.DeviceName, sourcePlce, toPlace, taskId); return false; } return true; } catch (Exception ex) { msg = ex.Message; Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, "åéä»»å¡åºç°å¼å¸¸:" + ex.Message, ex); return false; } } /// <summary> /// ä»»å¡ä¸å确认(æ¶å°PLCåé¦åWCSæ¸ é¤ï¼ /// </summary> /// <param name="deviceId"></param> /// <param name="msg"></param> /// <returns></returns> public bool WriteStp(int deviceId, string stationCode, bool value, out string msg) { try { msg = ""; StationDBForWriteComm w_db = this.DBBlockForWrite.W_StationForWriteCommList.FirstOrDefault(x => x.StationCode == stationCode); StationDB2ObjForWriteComm w_dbObj = this.View.W_StationForWriteCommList.FirstOrDefault(x => x.StationCode == stationCode); MessageModel b2 = null; if (!b2.result) { msg = string.Format("åStation{0},ç«ç¹å·{1}å ä»»å¡ä¸å确认(æ¶å°PLCåé¦åWCSæ¸ é¤ï¼ " + value + "失败,è¿åç»æ:" + b2.resMsg, this.View.DeviceName, stationCode); return false; } return true; } catch (Exception ex) { msg = ex.Message; var logcontext = string.Format("åStation{0},ç«ç¹å·{1}å ä»»å¡ä¸å确认(æ¶å°PLCåé¦åWCSæ¸ é¤ï¼ " + true + "åºç°å¼å¸¸:" + JsonConvert.SerializeObject(ex), deviceId, stationCode); Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex); return false; } } /// <summary> /// 1015éæ°æ«ç /// </summary> /// <param name="deviceId"></param> /// <param name="value"></param> /// <param name="msg"></param> /// <returns></returns> public bool Write1015ReScan(int deviceId, bool value, out string msg) { try { msg = ""; MessageModel b2 = this.plcService.WriteValuePoint(this.DBBlockForWrite.W_1015_ReScan, value, this.View.W_1015_ReScan); if (!b2.result) { msg = string.Format("åStationå°å{0} å " + value + "失败,è¿åç»æ:" + b2.resMsg, this.DBBlockForWrite.W_1015_ReScan); return false; } return true; } catch (Exception ex) { msg = ex.Message; var logcontext = string.Format("åStationå°å{0} " + value + "åºç°å¼å¸¸:" + JsonConvert.SerializeObject(ex), this.DBBlockForWrite.W_1015_ReScan); Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex); return false; } } /// <summary> /// 1019éæ°æ«ç /// </summary> /// <param name="deviceId"></param> /// <param name="value"></param> /// <param name="msg"></param> /// <returns></returns> public bool Write1019ReScan(int deviceId, bool value, out string msg) { try { msg = ""; MessageModel b2 = this.plcService.WriteValuePoint(this.DBBlockForWrite.W_1019_ReScan, value, this.View.W_1019_ReScan); if (!b2.result) { msg = string.Format("åStationå°å{0} å " + value + "失败,è¿åç»æ:" + b2.resMsg, this.DBBlockForWrite.W_1019_ReScan); return false; } return true; } catch (Exception ex) { msg = ex.Message; var logcontext = string.Format("åStationå°å{0} " + value + "åºç°å¼å¸¸:" + JsonConvert.SerializeObject(ex), this.DBBlockForWrite.W_1019_ReScan); Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex); return false; } } /// <summary> /// Stationçä»»å¡å®æACKèµå¼ /// </summary> /// <param name="deviceId"></param> /// <param name="value"></param> /// <param name="msg"></param> /// <returns></returns> public bool WriteStation_FinishACK(int deviceId, bool value, int plcTaskId, out string msg) { try { msg = ""; Thread.Sleep(1000);//åç2ç§ MessageModel b2 = this.plcService.WriteValuePoint(this.DBBlockForWrite.W_Station_FinishACK, value, this.View.W_Station_FinishACK); if (!b2.result) { msg = string.Format("åStationå°å{0} å " + value + "失败,è¿åç»æ:" + b2.resMsg, this.DBBlockForWrite.W_Station_FinishACK); Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null); return false; } //éæ°å读åï¼å¤ææ¯å¦åå ¥æ£ç¡®ï¼å¦æåå ¥ä¸æ£ç¡®ï¼å°±è®¤ä¸ºå¤±è´¥ ãEditby shaocx,2023-04-03ã Thread.Sleep(1000);//åç3ç§ bool finishStation = (bool)this.plcService.ReadValuePoint(this.DBBlockForRead.R_Station_Finish, typeof(bool)); bool finisAck = (bool)this.plcService.ReadValuePoint(this.DBBlockForWrite.W_Station_FinishACK, typeof(bool)); if (finisAck == false && finishStation == true) { this.plcService.WriteValuePoint(this.DBBlockForWrite.W_Station_FinishACK, value, this.View.W_Station_FinishACK);//éå䏿¬¡ 20230503 çé® Thread.Sleep(1000);//åç2ç§ finishStation = (bool)this.plcService.ReadValuePoint(this.DBBlockForRead.R_Station_Finish, typeof(bool)); finisAck = (bool)this.plcService.ReadValuePoint(this.DBBlockForWrite.W_Station_FinishACK, typeof(bool)); if (finisAck == false && finishStation == true) { msg = string.Format("åStationå°å{0} å " + value + "失败,SDAè¿åç»æ:trueï¼ä½æ¯SDA忬¡è¯»åPLCçå°åæ¶ï¼è·åçç»ææ¯FALSEï¼å³è®¤å®ä¸ºåå ¥å¤±è´¥", this.DBBlockForWrite.W_Station_FinishACK); Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null); return false; } } Log4NetHelper.WriteInfoLog(Station_CacheEntity.curLogType, "åå ¥W_Station_FinishACKï¼" + this.DBBlockForWrite.W_Station_FinishACK + "ï¼å¼ä¸º" + value + "æåï¼å 为PLCä»»å¡å·:" + plcTaskId); return true; } catch (Exception ex) { msg = ex.Message; var logcontext = string.Format("åStationå°å{0} " + value + "åºç°å¼å¸¸:" + JsonConvert.SerializeObject(ex), this.DBBlockForWrite.W_Station_FinishACK); Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex); return false; } } /// <summary> /// åä¸ªå ¥åºå£æ«æéªè¯ACKèµå¼ /// </summary> /// <param name="deviceId"></param> /// <param name="value"></param> /// <param name="msg"></param> /// <returns></returns> public bool WriteScanValidateACK(bool isReset, int deviceId, string stationCode, bool value, int plcTaskId, out string msg) { msg = ""; MessageModel b2 = null; string address_fail = ""; string address_success = ""; try { switch (stationCode) { case "1002": address_fail = this.DBBlockForWrite.W_1002_ScanFailACK; address_success = this.DBBlockForWrite.W_1002_ScanSuccessACK; break; case "1004": address_fail = this.DBBlockForWrite.W_1004_ScanFailACK; address_success = this.DBBlockForWrite.W_1004_ScanSuccessACK; break; case "1006": address_fail = this.DBBlockForWrite.W_1006_ScanFailACK; address_success = this.DBBlockForWrite.W_1006_ScanSuccessACK; break; case "1007": address_fail = this.DBBlockForWrite.W_1007_ScanFailACK; address_success = this.DBBlockForWrite.W_1007_ScanSuccessACK; break; default: throw new Exception("䏿¯æçç«ç¹"); } if (isReset) {//æ¯éç½® b2 = this.plcService.WriteValuePoint(address_success, false, this.View.W_1002_ScanSuccessACK); if (!b2.result) { msg = string.Format("åStationå°å{0} å " + false + "失败,è¿åç»æ:" + b2.resMsg, address_success); Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null); return false; } b2 = this.plcService.WriteValuePoint(address_fail, false, this.View.W_1002_ScanFailACK); if (!b2.result) { msg = string.Format("åStationå°å{0} å " + false + "失败,è¿åç»æ:" + b2.resMsg, address_fail); Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null); return false; } } else {//䏿¯éç½® if (value) {//è¡¨ç¤ºæ«æéªè¯éè¿ b2 = this.plcService.WriteValuePoint(address_success, true, this.View.W_1002_ScanSuccessACK); if (!b2.result) { msg = string.Format("åStationå°å{0} å " + true + "失败,è¿åç»æ:" + b2.resMsg, address_success); Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null); return false; } } else {//è¡¨ç¤ºæ«æéªè¯ä¸éè¿ b2 = this.plcService.WriteValuePoint(address_fail, true, this.View.W_1002_ScanFailACK); if (!b2.result) { msg = string.Format("åStationå°å{0} å " + true + "失败,è¿åç»æ:" + b2.resMsg, address_fail); Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null); return false; } } } Log4NetHelper.WriteInfoLog(Station_CacheEntity.curLogType, "WriteScanFailACKæ¹æ³ï¼åå ¥ åä¸ªå ¥åºå£æ«æå¤±è´¥ACKèµå¼ ScanFailACKï¼" + address_fail + "ï¼å¼ä¸º" + value + "æåï¼å 为PLCä»»å¡å·:" + plcTaskId + ",isReset:" + isReset); return true; } catch (Exception ex) { msg = ex.Message; var logcontext = string.Format("WriteScanFailACKæ¹æ³ï¼åStationå°å{0} " + value + "åºç°å¼å¸¸:" + JsonConvert.SerializeObject(ex), address_fail); if (value) { logcontext = string.Format("WriteScanFailACKæ¹æ³ï¼åStationå°å{0} " + value + "åºç°å¼å¸¸:" + JsonConvert.SerializeObject(ex), address_success); } Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex); return false; } } /// <summary> /// åæ¶æ¥è¦ /// </summary> /// <param name="deviceId"></param> /// <param name="msg"></param> /// <returns></returns> public bool ClearAlarm(int deviceId, out string msg) { msg = ""; return true; //try //{ // msg = ""; // var dbNumber = Station_CacheEntity.W_DBHeader; // MessageModel b2 = this.plcService.WriteValuePoint( this.DBBlockForWrite.W_Reset, true, this.View.W_Reset); // if (!b2.result) // { // msg = string.Format("åStation{0}åå ¥è®¾å¤å¤ä½" + true + "失败,è¿åç»æ:" + b2.resMsg, this.View.DeviceName); // return false; // } // return true; //} //catch (Exception ex) //{ // msg = ex.Message; // Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, "åæ¶æ¥è¦åºç°å¼å¸¸:" + ex.Message, ex); // return false; //} } /// <summary> /// ä»»å¡å é¤ /// </summary> /// <param name="deviceId"></param> /// <param name="taskId"></param> /// <param name="msg"></param> /// <returns></returns> public bool DeleteTask(int deviceId, int taskId, out string msg) { msg = ""; return true; //try //{ // msg = ""; // if (this.View.R_TaskNo != taskId) // { // msg = string.Format("Stationå½åéæ§è¡taskId={0}çä»»å¡", taskId); // return false; // } // var dbNumber = Station_CacheEntity.W_DBHeader; // MessageModel b2 = this.plcService.WriteValuePoint( this.DBBlockForWrite.W_TaskNo, taskId, this.View.W_TaskNo); // if (!b2.result) // { // msg = string.Format("åStation{0}åå ¥ä»»å¡å·" + taskId + "失败,è¿åç»æ:" + b2.resMsg, this.View.DeviceName); // return false; // } // b2 = this.plcService.WriteValuePoint( this.DBBlockForWrite.W_Reset, 1, this.View.W_Reset); // if (!b2.result) // { // msg = string.Format("åStation{0}åå ¥è®¾å¤å¤ä½" + 1 + "失败,è¿åç»æ:" + b2.resMsg, this.View.DeviceName); // return false; // } // return true; //} //catch (Exception ex) //{ // msg = ex.Message; // Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, "ä»»å¡å é¤åºç°å¼å¸¸:" + ex.Message, ex); // return false; //} } /// <summary> /// æ¥å /// </summary> /// <param name="deviceId"></param> /// <param name="msg"></param> /// <returns></returns> public bool EmergencyStop(int deviceId, string stationCode, out string msg) { msg = ""; return true; //try //{ // msg = ""; // var dbNumber = Station_CacheEntity.W_DBHeader; // MessageModel b2 = this.plcService.WriteValuePoint( this.DBBlockForWrite.W_StationForWriteCommList.Find(x => x.StationCode == stationCode)., 1, this.View.W_EStop); // if (!b2.result) // { // msg = string.Format("åStation{0}åå ¥æ¥å" + 1 + "失败,è¿åç»æ:" + b2.resMsg, this.View.DeviceName); // return false; // } // return true; //} //catch (Exception ex) //{ // msg = ex.Message; // Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, "æ¥ååºç°å¼å¸¸:" + ex.Message, ex); // return false; //} } /// <summary> /// æ¯å¦å¯ä»¥åéä»»å¡ /// </summary> /// <param name="deviceId"></param> /// <param name="taskType"></param> /// <param name="msg"></param> /// <returns></returns> public bool CanSendTask(int deviceId, out string msg) { msg = ""; //模æ //if (!this.View.IsConnected) //{ // msg = "已离线"; // return false; //} //if (this.View.R_Mode != (int)EStationMode.è¿æºèªå¨æ¨¡å¼) //{ // msg = "å½åéèªå¨æ¨¡å¼"; // return false; //} //if (this.View.R_State != (int)EStationState.空é²) //{ // msg = "设å¤ç¶æé空é²ï¼æ æ³æ§è¡å ¶ä»ä»»å¡"; // return false; //} return true; } /// <summary> /// Stationæ¯å¦æ¯èªå¨å¾ æºæ¨¡å¼ /// </summary> /// <param name="msg"></param> /// <returns></returns> public bool StationIsAutoAwaitMode(string stationCode, out string msg) { msg = ""; var readData = this.View.R_StationForReadCommList.Where(x => x.StationCode == stationCode).FirstOrDefault(); if (readData.R_Model != (int)EStationMode.èªå¨å¾ æºæ¨¡å¼) { EStationMode mode = (EStationMode)Enum.Parse(typeof(EStationMode), readData.R_Model.ToString()); msg = "ç«ç¹" + stationCode + " å½åæ¨¡å¼æ¯[" + mode.ToString() + "],éèªå¨å¾ æºæ¨¡å¼"; return false; } return true; } /// <summary> /// Stationæ¯å¦æ¯èªå¨æ¨¡å¼ /// </summary> /// <param name="msg"></param> /// <returns></returns> public bool StationIsAuto(string stationCode, out string msg) { msg = ""; var readData = this.View.R_StationForReadCommList.Where(x => x.StationCode == stationCode).FirstOrDefault(); if (readData.R_Model != (int)EStationMode.èªå¨å¾ æºæ¨¡å¼ && readData.R_Model != (int)EStationMode.èªå¨è¿è¡æ¨¡å¼) { EStationMode mode = (EStationMode)Enum.Parse(typeof(EStationMode), readData.R_Model.ToString()); msg = "ç«ç¹" + stationCode + " å½åæ¨¡å¼æ¯[" + mode.ToString() + "],éèªå¨å¾ æºæ¨¡å¼æèªå¨è¿è¡æ¨¡å¼"; return false; } return true; } /// <summary> /// Stationæ¯å¦æ¯ç©ºé²ç¶æ /// </summary> /// <param name="msg"></param> /// <returns></returns> public bool StationIsStateFree(string stationCode, out string msg) { msg = ""; var readData = this.View.R_StationForReadCommList.Where(x => x.StationCode == stationCode).FirstOrDefault(); if (readData.R_State != (int)EStationState.空é²) { EStationMode mode = (EStationMode)Enum.Parse(typeof(EStationMode), readData.R_Model.ToString()); msg = "ç«ç¹" + stationCode + " å½åç¶ææ¯[" + mode.ToString() + "],é空é²"; return false; } return true; } /// <summary> /// å卿ºåºåºï¼ç»è¥¿æ¸¯PLCåéå卿ºæ°æ® ãEditby shaocx,2023-07-23ã /// </summary> /// <param name="deviceId"></param> /// <param name="value"></param> /// <param name="msg"></param> /// <returns></returns> public bool WriteStation_XigangGetDataForOut(int deviceId, string value__Out_MaterialModel, string value_Out_OrderNo, string value_Out_SerialNumber, int plcTaskId, out string msg) { try { msg = ""; MessageModel b2 = this.plcService.WriteValuePoint(this.DBBlockForWrite.W_Out_MaterialModel, value__Out_MaterialModel, this.View.W_Out_MaterialModel); if (!b2.result) { msg = string.Format("åStationå°å{0} å " + value__Out_MaterialModel + "失败,è¿åç»æ:" + b2.resMsg, this.DBBlockForWrite.W_Out_MaterialModel); Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null); return false; } b2 = this.plcService.WriteValuePoint(this.DBBlockForWrite.W_Out_OrderNo, value_Out_OrderNo, this.View.W_Out_OrderNo); if (!b2.result) { msg = string.Format("åStationå°å{0} å " + value_Out_OrderNo + "失败,è¿åç»æ:" + b2.resMsg, this.DBBlockForWrite.W_Out_OrderNo); Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null); return false; } b2 = this.plcService.WriteValuePoint(this.DBBlockForWrite.W_Out_SerialNumber, value_Out_SerialNumber, this.View.W_Out_SerialNumber); if (!b2.result) { msg = string.Format("åStationå°å{0} å " + value_Out_SerialNumber + "失败,è¿åç»æ:" + b2.resMsg, this.DBBlockForWrite.W_Out_SerialNumber); Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, msg, null); return false; } Log4NetHelper.WriteInfoLog(Station_CacheEntity.curLogType, $"åå ¥ å卿ºåºåºï¼ç»è¥¿æ¸¯PLCåéå卿ºæ°æ®æåï¼ä»»å¡å·{plcTaskId},æºå{value__Out_MaterialModel}ï¼è®¢è´§å·{value_Out_OrderNo},ç¼å·{value_Out_SerialNumber}" + plcTaskId); return true; } catch (Exception ex) { msg = ex.Message; var logcontext = $"ä»»å¡å·{plcTaskId},æºå{value__Out_MaterialModel}ï¼è®¢è´§å·{value_Out_OrderNo},ç¼å·{value_Out_SerialNumber},åå ¥ å卿ºåºåºï¼ç»è¥¿æ¸¯PLCåéå卿ºæ°æ®åºç°å¼å¸¸:" + JsonConvert.SerializeObject(ex); Log4NetHelper.WriteErrorLog(Station_CacheEntity.curLogType, logcontext, ex); return false; } } #endregion public void SetPropertyValueForRead() { var r_dbBlock = this.DBBlockForRead; SdaHelper.SetPropertyValueForDB<StationDBForRead, StationView>(r_dbBlock, this.View, this.plcService, ""); //ç¹æ®å¤çListéå foreach (var item in r_dbBlock.R_StationForReadCommList) { StationDB2ObjForReadComm StationDB2ObjForReadComm = this.View.R_StationForReadCommList.Where(x => x.StationCode == item.StationCode).First(); SdaHelper.SetPropertyValueForDB<StationDBForReadComm, StationDB2ObjForReadComm>(item, StationDB2ObjForReadComm, this.plcService, ""); } //è¿éç¹æ®å¤ç 读åçå卿ºç this.View.R_1019_CargoNoScan = GetNewCategoryNo(this.View.R_1019_CargoNoScan); } public void SetPropertyValueForWrite() { var w_dbBlock = this.DBBlockForWrite; SdaHelper.SetPropertyValueForDB<StationDBForWrite, StationView>(w_dbBlock, this.View, this.plcService, ""); //ç¹æ®å¤çListéå foreach (var item in w_dbBlock.W_StationForWriteCommList) { StationDB2ObjForWriteComm StationDB2ObjForWriteComm = this.View.W_StationForWriteCommList.Where(x => x.StationCode == item.StationCode).First(); SdaHelper.SetPropertyValueForDB<StationDBForWriteComm, StationDB2ObjForWriteComm>(item, StationDB2ObjForWriteComm, this.plcService, ""); } } /// <summary> /// æ¯å¦æå¿è·³ /// </summary> /// <returns></returns> public bool IsHaveHeatBeat() { try { var r_dbBlock = this.DBBlockForRead; short value = Convert.ToInt16(this.plcService.ReadValuePoint(r_dbBlock.R_HandShake, typeof(short))); //çº¦å® çå¾ 2ç§ Thread.Sleep(2000); short value_next = Convert.ToInt16(this.plcService.ReadValuePoint(r_dbBlock.R_HandShake, typeof(short))); if (value == value_next) {//没æå¿è·³ return false; } else {//æå¿è·³ return true; } } catch (Exception ex) { throw ex; } } #region è·åå½åæ¥è¦ä¿¡æ¯ /// <summary> /// è·åStationå½åæ¥è¦ä¿¡æ¯ /// </summary> /// <returns></returns> public List<DeviceWarningInfo> GetStationAlertDatas() { List<DeviceWarningInfo> db_warningList = new List<DeviceWarningInfo>(); try { string _dbValue; var isHasAlert = false; IDictionary<string, string> StationAlertDict = new Dictionary<string, string>(); StationAlertDict = WareSdaStruct.StationAlertDict; foreach (var item in StationAlertDict) { _dbValue = item.Key; isHasAlert = Convert.ToBoolean(this.plcService.ReadValuePoint(Station_CacheEntity.R_DBHeader_Station_Alert, item.Key, typeof(bool))); if (isHasAlert) { db_warningList.Add(new DeviceWarningInfo() { Address = item.Key, Code = item.Key, Context = item.Value.Trim() }); } } } catch (Exception ex) { throw ex; } return db_warningList; } /// <summary> /// è·åè¾é线å½åæ¥è¦ä¿¡æ¯ /// </summary> /// <returns></returns> public List<DeviceWarningInfo> GetLineAlertDatas() { List<DeviceWarningInfo> db_warningList = new List<DeviceWarningInfo>(); try { IDictionary<string, string> srmAlertDict = new Dictionary<string, string>(); foreach (var item in this.View.R_StationForReadCommList) { if (item.R_AlarmCode > 0) { item.R_AlarmCodeMsg = WareSdaStruct.StationAlertDict[item.R_AlarmCode.ToString()]; } } } catch (Exception ex) { throw ex; } return db_warningList; } #endregion /// <summary> /// ç¹æ®å¤çä¸ è¯»åçå卿ºç /// </summary> /// <param name="orgCategoryNo"></param> /// <returns></returns> private string GetNewCategoryNo(string orgCategoryNo) { Log4NetHelper.WriteInfoLog(Station_CacheEntity.curLogType, "读åçå卿ºç ,åå§è¯»åçå¼:" + orgCategoryNo); //妿æ $Rå 容ï¼å°±æ¿æ¢ä¸ºç©º var repStr = "$R"; if (!string.IsNullOrEmpty(orgCategoryNo) && orgCategoryNo.IndexOf(repStr) > -1) { orgCategoryNo = orgCategoryNo.Replace(repStr, ""); } Log4NetHelper.WriteInfoLog(Station_CacheEntity.curLogType, "读åçå卿ºç ,æ¿æ¢åçå¼:" + orgCategoryNo); return orgCategoryNo; } } } SDA/iWareSda/Devices/4-Station/StationModel/StationView.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,43 @@  using iWareSda.Model; using System.Collections.Generic; using System.ComponentModel; namespace iWareSda { /// <summary> /// Stationå±ç¤ºå®ä½ç±» /// </summary> public class StationView : StationDB2Obj { /// <summary> /// 设å¤åç§° /// </summary> [Description("设å¤åç§°")] public string DeviceName { get; set; } /// <summary> /// 设å¤ç¼å· /// </summary> [Description("设å¤ç¼å·")] public int DeviceId { get; set; } /// <summary> /// æ¯å¦å·²ç»è¿æ¥ /// </summary> [Description("æ¯å¦å·²ç»è¿æ¥")] public bool IsConnected { get; set; } /// <summary> /// è¾é线æ¥è¦DBéå /// </summary> [Description("æ¥è¦DBéå")] public List<DeviceWarningInfo> R_Line_WarningDBList { get; set; } /// <summary> /// Stationæ¥è¦DBéå /// </summary> [Description("Stationæ¥è¦DBéå")] public List<DeviceWarningInfo> R_Station_WarningDBList { get; set; } } } SDA/iWareSda/Devices/4-Station/StationModel/Station_CacheEntity.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,314 @@ using iWareCommon.Utils; using iWareModel; using iWareSda.Devices._3_Station.StationModel; using System; using System.Collections.Generic; using System.Linq; namespace iWareSda { /// <summary> /// Stationå®ä½ç±» /// </summary> public static class Station_CacheEntity { public static LogType curLogType = LogType.StationSdaService; #region Station1 /// <summary> /// åå ¥DB /// </summary> public static string W_DBHeaderWithSeparate = "610" + WareSdaStruct.PLCDBADDRESS_SEPARATE; /// <summary> /// 读åDB /// </summary> public static string R_DBHeaderWithSeparate = "600" + WareSdaStruct.PLCDBADDRESS_SEPARATE; /// <summary> /// 读åDB(æ«ç ) /// </summary> public static string R_DBHeader_ScanWithSeparate = "80" + WareSdaStruct.PLCDBADDRESS_SEPARATE; /// <summary> /// 读åDB(æ¥è¦ä¸ç¨) /// </summary> public static string R_DBHeader_Alert = "91" + WareSdaStruct.PLCDBADDRESS_SEPARATE; /// <summary> /// 读åDB(Stationæ¥è¦ä¸ç¨) /// </summary> public static string R_DBHeader_Station_Alert = "1090"; /// <summary> /// 西港æ¹ééåºåºå卿ºæ°æ®ï¼åå ¥DB ãEditby shaocx,2023-07-23ã /// </summary> public static string W_DBHeaderForXigangGetDataWithSeparate = "3" + WareSdaStruct.PLCDBADDRESS_SEPARATE; private static StationDBForWrite _dbBlockForWrite = SetW_StationForWriteCommList(); private static StationDBForRead _dbBlockForRead = SetR_StationForWriteCommList(); private static HslCommunicationParam hslCommunicationParam = new HslCommunicationParam() { cpu = WareSdaStruct.Station_SiemensPLCS, ip = WareSdaStruct.Station_Address, rack = WareSdaStruct.Station_Rack, slot = WareSdaStruct.Station_Slot, port = WareSdaStruct.Station_Port }; private static SS7Param s7Param = new SS7Param() { cpu = WareSdaStruct.Station_PLC_CpuType, ip = WareSdaStruct.Station_Address, rack = WareSdaStruct.Station_Rack, slot = WareSdaStruct.Station_Slot, }; private static PLCService PLCService = PLCFactory.GetOPCService(WareSdaStruct.System_PlcServiceTypeEnum, s7Param, hslCommunicationParam); private static StationEntity Station = new StationEntity("Station", (int)EDevice.Station, _dbBlockForWrite, _dbBlockForRead, PLCService); #endregion private static List<StationEntity> _deviceObjList = null; private static object objLock = new object(); /// <summary> /// çæè®¾å¤å®ä½ç±» /// </summary> public static List<StationEntity> DeviceObjs { get { if (_deviceObjList == null) { lock (objLock) { if (_deviceObjList == null) { _deviceObjList = new List<StationEntity>(); _deviceObjList.Add(Station); } } } return Station_CacheEntity._deviceObjList; } set { Station_CacheEntity._deviceObjList = value; } } private static T GetDeviceObj<T>(int deviceId) { var device = Station_CacheEntity.DeviceObjs.FirstOrDefault(x => x.View.DeviceId == deviceId); return (T)(Object)device; } /// <summary> /// è·å设å¤å¯¹è±¡ /// </summary> /// <param name="deviceId"></param> /// <returns></returns> public static SdaResEntity GetDeviceObj(int deviceId) { SdaResEntity sdaResult = new SdaResEntity(); StationEntity Station = Station_CacheEntity.GetDeviceObj<StationEntity>(deviceId); if (Station == null) { return SdaResEntity.Failure("æ²¡ææ¾å°Station设å¤"); } return SdaResEntity.Success("æå", Station); } /// <summary> /// åå ¥å°åéåèµå¼ /// </summary> /// <param name="_dbBlockForWrite"></param> /// <param name="_dbBlockForRead"></param> private static StationDBForWrite SetW_StationForWriteCommList() { StationDBForWrite _dbBlockForWrite = new StationDBForWrite() { //TODO:è¿éåé ç½®çDBå°å #region åå ¥ W_HandShake = W_DBHeaderWithSeparate + "0.0", W_1015_ReScan = R_DBHeader_ScanWithSeparate + "302.0", //1015ä½ç½®éæ°æ«ç ãEditBy shaocx,2022-05-02ã W_1019_ReScan = R_DBHeader_ScanWithSeparate + "368.0", //1019ä½ç½®éæ°æ«ç ï¼ ãEditBy shaocx,2022-05-02ã W_Station_FinishACK = W_DBHeaderWithSeparate + "146.0", W_1002_ScanFailACK = R_DBHeader_ScanWithSeparate + "66.1", W_1004_ScanFailACK = R_DBHeader_ScanWithSeparate + "126.1", W_1006_ScanFailACK = R_DBHeader_ScanWithSeparate + "186.1", W_1007_ScanFailACK = R_DBHeader_ScanWithSeparate + "246.1", W_1002_ScanSuccessACK = R_DBHeader_ScanWithSeparate + "66.0", W_1004_ScanSuccessACK = R_DBHeader_ScanWithSeparate + "126.0", W_1006_ScanSuccessACK = R_DBHeader_ScanWithSeparate + "186.0", W_1007_ScanSuccessACK = R_DBHeader_ScanWithSeparate + "246.0", W_Out_MaterialModel = W_DBHeaderForXigangGetDataWithSeparate + "0.0", W_Out_OrderNo = W_DBHeaderForXigangGetDataWithSeparate + "18.0", W_Out_SerialNumber = W_DBHeaderForXigangGetDataWithSeparate + "36.0", #endregion }; //åå ¥å°å _dbBlockForWrite.W_StationForWriteCommList = new List<StationDBForWriteComm>(); _dbBlockForWrite.W_StationForWriteCommList.Add(new StationDBForWriteComm() { StationCode = "1001", W_TaskID = W_DBHeaderWithSeparate + "6.0" }); _dbBlockForWrite.W_StationForWriteCommList.Add(new StationDBForWriteComm() { StationCode = "1002", W_TaskID = W_DBHeaderWithSeparate + "14.0" }); _dbBlockForWrite.W_StationForWriteCommList.Add(new StationDBForWriteComm() { StationCode = "1003", W_TaskID = W_DBHeaderWithSeparate + "22.0" }); return _dbBlockForWrite; } ///// <summary> ///// 读åå°åéåèµå¼ ///// </summary> ///// <param name="_dbBlockForWrite"></param> ///// <param name="_dbBlockForRead"></param> //private static StationDBForWrite SetW_StationForWriteCommList2() //{ // StationDBForWrite _dbBlockForRead = new StationDBForWrite() // { // //TODO:è¿éåé ç½®çDBå°å // #region 读å // W_HandShake = "0.0", // #endregion // }; // //读åå°å // double default_STP = 2.0; // double default_Destination = 4.0; // double default_TaskID = 6.0; // int addValue = 16; // _dbBlockForRead.W_StationForWriteCommList = new List<StationDBForWriteComm>(); // for (int i = 0; i < WareSdaStruct.StationStationList.Count; i++) // { // var stationCode = WareSdaStruct.StationStationList[i]; // if (i > 0) // { // default_STP += addValue; // default_Destination += addValue; // default_TaskID += addValue; // } // _dbBlockForRead.W_StationForWriteCommList.Add(new StationDBForWriteComm() // { // StationCode = stationCode, // W_STP = default_STP.ToString("0.0"), // W_Destination = default_Destination.ToString("0.0"), // W_TaskID = default_TaskID.ToString("0.0"), // }); // } // return _dbBlockForRead; //} /// <summary> /// 读åå°åéåèµå¼ /// </summary> /// <param name="_dbBlockForWrite"></param> /// <param name="_dbBlockForRead"></param> private static StationDBForRead SetR_StationForWriteCommList() { StationDBForRead _dbBlockForRead = new StationDBForRead() { //TODO:è¿éåé ç½®çDBå°å #region 读å R_HandShake = R_DBHeaderWithSeparate + "0.0", //注æï¼è¿éç¨çæ«æçå°åå R_1015_Scan = R_DBHeader_ScanWithSeparate + "48.0", R_1019_Scan = R_DBHeader_ScanWithSeparate + "356.0", R_1019_CargoNoScan = R_DBHeader_ScanWithSeparate + "378.0", R_1002_Scan = R_DBHeader_ScanWithSeparate + "108.0", R_1004_Scan = R_DBHeader_ScanWithSeparate + "168.0", R_1006_Scan = R_DBHeader_ScanWithSeparate + "228.0", R_1007_Scan = R_DBHeader_ScanWithSeparate + "288.0", R_1009_High1 = R_DBHeader_ScanWithSeparate + "300.0", R_1009_High2 = R_DBHeader_ScanWithSeparate + "300.1", R_1009_High3 = R_DBHeader_ScanWithSeparate + "300.2", R_Station_Finish = R_DBHeaderWithSeparate + "349.0", R_Station_Coordinate = R_DBHeader_ScanWithSeparate + "304.0" #endregion }; //读åå°å double default_PH_1 = 2.0; double default_PH_2 = 2.1; double default_ACK = 2.2; double default_Model = 4.0; double default_State = 6.0; double default_AlarmCode = 8.0; double default_Destination = 10.0; double default_Shape = 12.0; double default_TaskID = 14.0; int addValue = 16; _dbBlockForRead.R_StationForReadCommList = new List<StationDBForReadComm>(); for (int i = 0; i < WareSdaStruct.StationStationList.Count; i++) { var stationCode = WareSdaStruct.StationStationList[i]; if (stationCode == "1019") { _dbBlockForRead.R_StationForReadCommList.Add(new StationDBForReadComm() { StationCode = stationCode, R_PH_1 = R_DBHeaderWithSeparate + "350.0", R_PH_2 = R_DBHeaderWithSeparate + "350.1", R_ACK = R_DBHeaderWithSeparate + "350.2", R_Model = R_DBHeaderWithSeparate + ("352.0"), R_State = R_DBHeaderWithSeparate + ("354.0"), R_AlarmCode = R_DBHeaderWithSeparate + ("356.0"), R_Destination = R_DBHeaderWithSeparate + ("358.0"), R_Shape = R_DBHeaderWithSeparate + ("360.0"), R_TaskID = R_DBHeaderWithSeparate + ("362.0") }); } else { if (i > 0) { default_PH_1 += addValue; default_PH_2 += addValue; default_ACK += addValue; default_Model += addValue; default_State += addValue; default_AlarmCode += addValue; default_Destination += addValue; default_Shape += addValue; default_TaskID += addValue; } _dbBlockForRead.R_StationForReadCommList.Add(new StationDBForReadComm() { StationCode = stationCode, R_PH_1 = R_DBHeaderWithSeparate + default_PH_1.ToString("0.0"), R_PH_2 = R_DBHeaderWithSeparate + default_PH_2.ToString("0.0") , R_ACK = R_DBHeaderWithSeparate + default_ACK.ToString("0.0"), R_Model = R_DBHeaderWithSeparate + default_Model.ToString("0.0"), R_State = R_DBHeaderWithSeparate + default_State.ToString("0.0"), R_AlarmCode = R_DBHeaderWithSeparate + default_AlarmCode.ToString("0.0"), R_Destination = R_DBHeaderWithSeparate + default_Destination.ToString("0.0"), R_Shape = R_DBHeaderWithSeparate + default_Shape.ToString("0.0"), R_TaskID = R_DBHeaderWithSeparate + default_TaskID.ToString("0.0") }); } } return _dbBlockForRead; } } } SDA/iWareSda/Devices/4-Station/StationService/IStationService.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,138 @@ using iWareModel; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespace iWareSda { // 注æ: 使ç¨âéæâèåä¸çâéå½åâå½ä»¤ï¼å¯ä»¥åæ¶æ´æ¹ä»£ç åé ç½®æä»¶ä¸çæ¥å£åâIStationServiceâã [ServiceContract] public interface IStationService { /// <summary> /// è§£è¦ /// </summary> /// <param name="deviceId"></param> /// <returns></returns> [OperationContract] SdaResEntity ClearAlarm(int deviceId); /// <summary> /// ä¸åStationä»»å¡ /// </summary> /// <param name="deviceId"></param> /// <param name="taskId"></param> /// <param name="sourcePlce"></param> /// <param name="toPlace"></param> /// <returns></returns> [OperationContract] SdaResEntity SendStationTask(int deviceId, int taskId, string sourcePlce, string toPlace); /// <summary> /// ä»»å¡ä¸å确认(æ¶å°PLCåé¦åWCSæ¸ é¤ï¼ /// </summary> /// <param name="deviceId"></param> /// <param name="stationCode"></param> /// <returns></returns> [OperationContract] SdaResEntity WriteStp(int deviceId, bool value, string stationCode); [OperationContract] StationView GetStationInfo(int deviceId); [OperationContract] SdaResEntity IsTaskFinish(int deviceId, int taskId); [OperationContract] SdaResEntity DeleteStationTask(int deviceId, int taskId); ///// <summary> ///// Stationæ¥å ///// </summary> ///// <param name="deviceId"></param> ///// <returns></returns> //[OperationContract] //SdaResEntity EmergencyStop(int deviceId); /// <summary> /// Stationæ¯å¦æ¯èªå¨æ¨¡å¼ /// </summary> /// <returns></returns> [OperationContract] SdaResEntity IsStationAuto(int deviceId, string stationCode); /// <summary> /// 夿Stationæ¯å¦å¯ç¨ï¼æ¯å¦å¯ä»¥åéæ°ä»»å¡ç»Station /// </summary> /// <param name="srmId"></param> /// <param name="msg"></param> /// <returns></returns> [OperationContract] SdaResEntity IsAllowSendTask(bool isNeedValidateRealSourceAndToPlace, int deviceId, string stationCode, string toStationCode, bool isStationTask); /// <summary> /// 夿æ¯å¦æå¿è·³ /// </summary> /// <param name="deviceId"></param> /// <returns></returns> [OperationContract] SdaResEntity IsHaveHeatBeat(int deviceId); /// <summary> /// 1015éæ°æ«ç /// </summary> /// <param name="deviceId"></param> /// <param name="value"></param> /// <returns></returns> [OperationContract] SdaResEntity Write1015ReScan(int deviceId, bool value); /// <summary> /// 1019éæ°æ«ç /// </summary> /// <param name="deviceId"></param> /// <param name="value"></param> /// <returns></returns> [OperationContract] SdaResEntity Write1019ReScan(int deviceId, bool value); /// <summary> /// Stationçä»»å¡å®æACKèµå¼ /// </summary> /// <param name="deviceId"></param> /// <param name="value"></param> /// <returns></returns> [OperationContract] SdaResEntity WriteStation_FinishACK(int deviceId, bool value, int plcTaskId); /// <summary> /// åä¸ªå ¥åºå£æ«æéªè¯ACKèµå¼ /// </summary> /// <param name="deviceId"></param> /// <param name="value"></param> /// <returns></returns> [OperationContract] SdaResEntity WriteScanValidateACK(bool isReset, int deviceId, string stationCode, bool value, int plcTaskId); /// <summary> /// å卿ºåºåºï¼ç»è¥¿æ¸¯PLCåéå卿ºæ°æ® ãEditby shaocx,2023-07-23ã /// </summary> /// <param name="deviceId"></param> /// <param name="value__Out_MaterialModel"></param> /// <param name="value_Out_OrderNo"></param> /// <param name="value_Out_SerialNumber"></param> /// <param name="plcTaskId"></param> /// <returns></returns> [OperationContract] SdaResEntity WriteStation_XigangGetDataForOut(int deviceId, string value__Out_MaterialModel, string value_Out_OrderNo, string value_Out_SerialNumber, int plcTaskId); } } SDA/iWareSda/Devices/4-Station/StationService/StationService.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,576 @@ using iWareCommon.Utils; using iWareModel; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespace iWareSda { // 注æ: 使ç¨âéæâèåä¸çâéå½åâå½ä»¤ï¼å¯ä»¥åæ¶æ´æ¹ä»£ç åé ç½®æä»¶ä¸çç±»åâStationServiceâã public class StationService : IStationService { public SdaResEntity ClearAlarm(int deviceId) { SdaResEntity sdaResult = new SdaResEntity(); try { var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); if (!StationResult.result) { return StationResult; } var Station = StationResult.resData as StationEntity; string msg; var result = Station.ClearAlarm(deviceId, out msg); Log4NetHelper.WriteInfoLog(LogType.StationSdaService, "ä¸ådeviceId=" + deviceId + "çStationæ¶è¦æä»¤" + (result ? "æå" : "失败") + "åå ï¼" + msg); sdaResult.result = result; sdaResult.resMsg = msg; return sdaResult; } catch (Exception ex) { sdaResult.result = false; sdaResult.resMsg = JsonConvert.SerializeObject(ex); return sdaResult; } } /// <summary> /// ä¸åStationä»»å¡ /// </summary> /// <param name="deviceId"></param> /// <param name="taskId"></param> /// <param name="sourcePlce"></param> /// <param name="toPlace"></param> /// <param name="pallType"></param> /// <returns></returns> public SdaResEntity SendStationTask(int deviceId, int taskId, string sourcePlce, string toPlace) { SdaResEntity sdaResult = new SdaResEntity(); try { var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); if (!StationResult.result) { return StationResult; } var Station = StationResult.resData as StationEntity; //妿STP为TRUEï¼è¡¨ç¤ºä¸è½åä»»å¡ string msg; var result = Station.SendTask(deviceId, taskId, sourcePlce, toPlace, out msg); Log4NetHelper.WriteInfoLog(LogType.StationSdaService, "ä¸ådeviceId=" + deviceId + ",taskId=" + taskId + ",fromPlace=" + sourcePlce + ",toPlace=" + toPlace + "çStationä»»å¡" + (result ? "æå" : "失败") + "åå ï¼" + msg); sdaResult.result = result; sdaResult.resMsg = msg; return sdaResult; } catch (Exception ex) { sdaResult.result = false; sdaResult.resMsg = JsonConvert.SerializeObject(ex); return sdaResult; } } /// <summary> /// ä»»å¡ä¸å确认(æ¶å°PLCåé¦åWCSæ¸ é¤ï¼ /// </summary> /// <param name="deviceId"></param> /// <param name="stationCode"></param> /// <returns></returns> public SdaResEntity WriteStp(int deviceId, bool value, string stationCode) { SdaResEntity _SdaResEntity = new SdaResEntity(); try { var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); if (!StationResult.result) { return StationResult; } var Station = StationResult.resData as StationEntity; string msg = ""; var result = Station.WriteStp(deviceId, stationCode, value, out msg); Log4NetHelper.WriteInfoLog(LogType.StationSdaService, "ä¸ådeviceId=" + deviceId + "ï¼ç«ç¹å·=" + stationCode + "çä»»å¡ä¸å确认(æ¶å°PLCåé¦åWCSæ¸ é¤ï¼æä»¤" + (result ? "æå" : "失败") + "åå ï¼" + msg); _SdaResEntity.result = result; _SdaResEntity.resMsg = msg; return _SdaResEntity; } catch (Exception ex) { _SdaResEntity.result = false; _SdaResEntity.resMsg = ex.Message; return _SdaResEntity; } } public SdaResEntity DeleteStationTask(int deviceId, int taskId) { SdaResEntity sdaResult = new SdaResEntity(); try { var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); if (!StationResult.result) { return StationResult; } var Station = StationResult.resData as StationEntity; string msg = ""; var result = Station.DeleteTask(deviceId, taskId, out msg); Log4NetHelper.WriteInfoLog(LogType.StationSdaService, "ä¸ådeviceId = " + deviceId + "çå é¤Station任塿令" + (result ? "æå" : "失败") + "åå ï¼" + msg); sdaResult.result = result; sdaResult.resMsg = msg; return sdaResult; } catch (Exception ex) { sdaResult.result = false; sdaResult.resMsg = JsonConvert.SerializeObject(ex); return sdaResult; } } ///// <summary> ///// Stationæ¥å ///// </summary> ///// <param name="deviceId"></param> ///// <returns></returns> //public SdaResEntity EmergencyStop(int deviceId) //{ // SdaResEntity sdaResult = new SdaResEntity(); // try // { // var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); // if (!StationResult.result) // { // return StationResult; // } // var Station = StationResult.resData as StationEntity; // string msg = ""; // var result = Station.EmergencyStop(deviceId, out msg); // Log4NetHelper.WriteInfoLog(LogType.StationSdaService, "ä¸ådeviceId = " + deviceId + "çæ¥å任塿令" + (result ? "æå" : "失败") + "åå ï¼" + msg); // sdaResult.result = result; // sdaResult.resMsg = msg; // return sdaResult; // } // catch (Exception ex) // { // sdaResult.result = false; // sdaResult.resMsg = JsonConvert.SerializeObject(ex); // return sdaResult; // } //} /// <summary> /// è·åæ´ä¸ªStation对象 /// </summary> /// <param name="deviceId"></param> /// <returns></returns> public StationView GetStationInfo(int deviceId) { var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); if (!StationResult.result) { return null; } var Station = (StationResult.resData as StationEntity).View; return Station; } /// <summary> /// Station任塿¯å¦å®æ /// </summary> /// <param name="deviceId"></param> /// <param name="taskId"></param> /// <returns></returns> public SdaResEntity IsTaskFinish(int deviceId, int taskId) { SdaResEntity sdaResult = new SdaResEntity(); try { var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); if (!StationResult.result) { return StationResult; } var Station = StationResult.resData as StationEntity; var stationCode = ""; var readData = Station.View.R_StationForReadCommList.Where(x => x.StationCode == stationCode).FirstOrDefault(); sdaResult.result = readData.R_TaskID == taskId && Station.View.R_Station_Finish; sdaResult.resMsg = "æå"; } catch (Exception ex) { sdaResult.result = false; sdaResult.resMsg = JsonConvert.SerializeObject(ex); return sdaResult; } return sdaResult; } /// <summary> /// Stationæ¯å¦æ¯èªå¨æ¨¡å¼ /// </summary> /// <returns></returns> public SdaResEntity IsStationAuto(int deviceId, string stationCode) { SdaResEntity sdaResult = new SdaResEntity(); try { var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); if (!StationResult.result) { return StationResult; } var Station = StationResult.resData as StationEntity; var msg = ""; var result = Station.StationIsAuto(stationCode, out msg); if (!StationResult.result) { sdaResult.result = false; sdaResult.resMsg = msg; return StationResult; } sdaResult.result = true; } catch (Exception ex) { sdaResult.result = false; sdaResult.resMsg = JsonConvert.SerializeObject(ex); Log4NetHelper.WriteErrorLog(LogType.StationSdaService, "夿Stationæ¯å¦æ¯èªå¨æ¨¡å¼åºç°å¼å¸¸,ex:" + JsonConvert.SerializeObject(ex), ex); } return sdaResult; } /// <summary> /// Stationæ¯å¦æ¯èªå¨å¾ æºæ¨¡å¼ /// </summary> /// <returns></returns> public SdaResEntity StationIsAutoAwaitMode(int deviceId, string stationCode) { SdaResEntity sdaResult = new SdaResEntity(); try { var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); if (!StationResult.result) { return StationResult; } var Station = StationResult.resData as StationEntity; var msg = ""; var result = Station.StationIsAutoAwaitMode(stationCode, out msg); if (!StationResult.result) { sdaResult.result = false; sdaResult.resMsg = msg; return StationResult; } sdaResult.result = true; } catch (Exception ex) { sdaResult.result = false; sdaResult.resMsg = JsonConvert.SerializeObject(ex); Log4NetHelper.WriteErrorLog(LogType.StationSdaService, "夿Stationæ¯å¦æ¯èªå¨å¾ æºæ¨¡å¼åºç°å¼å¸¸,ex:" + JsonConvert.SerializeObject(ex), ex); } return sdaResult; } /// <summary> /// 夿Stationæ¯å¦å¯ç¨ï¼æ¯å¦å¯ä»¥åéæ°ä»»å¡ç»Station /// </summary> /// <param name="deviceId"></param> /// <param name="sourceStationCode"></param> /// <param name="toStationCode"></param> /// <param name="isStationTask">æ¯å¦æ¯æ¶åå°Stationçä»»å¡</param> /// <returns></returns> public SdaResEntity IsAllowSendTask(bool isNeedValidateRealSourceAndToPlace, int deviceId, string sourceStationCode, string toStationCode, bool isStationTask) { var msg = ""; SdaResEntity sdaResult = new SdaResEntity(); try { var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); if (!StationResult.result) { return StationResult; } var Station = StationResult.resData as StationEntity; var result = false; if (isNeedValidateRealSourceAndToPlace) { //å¤æèµ·ç¹æ¯å¦æ¯èªå¨å¾ æºæ¨¡å¼ result = Station.StationIsAutoAwaitMode(sourceStationCode, out msg); if (!result) { sdaResult.result = false; sdaResult.resMsg = msg; return sdaResult; } //å¤æèµ·ç¹æ¯å¦æ¯ç©ºé²ç¶æ result = Station.StationIsStateFree(sourceStationCode, out msg); if (!result) { sdaResult.result = false; sdaResult.resMsg = msg; return sdaResult; } } if (isNeedValidateRealSourceAndToPlace) { //å¤æç®æ ç¹æ¯å¦æ¯èªå¨æ¨¡å¼ result = Station.StationIsAuto(toStationCode, out msg); if (!result) { sdaResult.result = false; sdaResult.resMsg = msg; return sdaResult; } } sdaResult.result = true; return sdaResult; } catch (Exception ex) { sdaResult.result = false; sdaResult.resMsg = "åºç°å¼å¸¸:" + JsonConvert.SerializeObject(ex); return sdaResult; } } /// <summary> /// 夿æ¯å¦æå¿è·³ /// </summary> /// <param name="deviceId"></param> /// <returns></returns> public SdaResEntity IsHaveHeatBeat(int deviceId) { SdaResEntity sdaResult = new SdaResEntity(); string msg; try { var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); if (!StationResult.result) { return StationResult; } var Station = StationResult.resData as StationEntity; var result = Station.IsHaveHeatBeat(); sdaResult.result = true; sdaResult.resData = result; return sdaResult; } catch (Exception ex) { msg = "éªè¯æ¯å¦æå¿è·³åºç°å¼å¸¸:" + ex.Message; sdaResult.result = false; sdaResult.resMsg = msg; return sdaResult; } } /// <summary> /// 1015éæ°æ«ç /// </summary> /// <param name="deviceId"></param> /// <param name="value"></param> /// <returns></returns> public SdaResEntity Write1015ReScan(int deviceId, bool value) { SdaResEntity _SdaResEntity = new SdaResEntity(); try { var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); if (!StationResult.result) { return StationResult; } var Station = StationResult.resData as StationEntity; string msg = ""; var result = Station.Write1015ReScan(deviceId, value, out msg); _SdaResEntity.result = result; _SdaResEntity.resMsg = msg; return _SdaResEntity; } catch (Exception ex) { _SdaResEntity.result = false; _SdaResEntity.resMsg = ex.Message; return _SdaResEntity; } } /// <summary> /// 1019éæ°æ«ç /// </summary> /// <param name="deviceId"></param> /// <param name="value"></param> /// <returns></returns> public SdaResEntity Write1019ReScan(int deviceId, bool value) { SdaResEntity _SdaResEntity = new SdaResEntity(); try { var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); if (!StationResult.result) { return StationResult; } var Station = StationResult.resData as StationEntity; string msg = ""; var result = Station.Write1019ReScan(deviceId, value, out msg); _SdaResEntity.result = result; _SdaResEntity.resMsg = msg; return _SdaResEntity; } catch (Exception ex) { _SdaResEntity.result = false; _SdaResEntity.resMsg = ex.Message; return _SdaResEntity; } } /// <summary> /// Stationçä»»å¡å®æACKèµå¼ /// </summary> /// <param name="deviceId"></param> /// <param name="value"></param> /// <returns></returns> public SdaResEntity WriteStation_FinishACK(int deviceId, bool value, int plcTaskId) { SdaResEntity _SdaResEntity = new SdaResEntity(); try { var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); if (!StationResult.result) { return StationResult; } var Station = StationResult.resData as StationEntity; string msg = ""; var result = Station.WriteStation_FinishACK(deviceId, value, plcTaskId, out msg); _SdaResEntity.result = result; _SdaResEntity.resMsg = msg; return _SdaResEntity; } catch (Exception ex) { _SdaResEntity.result = false; _SdaResEntity.resMsg = ex.Message; return _SdaResEntity; } } /// <summary> /// åä¸ªå ¥åºå£æ«æéªè¯ACKèµå¼ /// </summary> /// <param name="deviceId"></param> /// <param name="value"></param> /// <returns></returns> public SdaResEntity WriteScanValidateACK(bool isReset, int deviceId, string stationCode, bool value, int plcTaskId) { SdaResEntity _SdaResEntity = new SdaResEntity(); try { var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); if (!StationResult.result) { return StationResult; } var Station = StationResult.resData as StationEntity; string msg = ""; var result = Station.WriteScanValidateACK(isReset, deviceId, stationCode, value, plcTaskId, out msg); _SdaResEntity.result = result; _SdaResEntity.resMsg = msg; return _SdaResEntity; } catch (Exception ex) { _SdaResEntity.result = false; _SdaResEntity.resMsg = ex.Message; return _SdaResEntity; } } /// <summary> /// å卿ºåºåºï¼ç»è¥¿æ¸¯PLCåéå卿ºæ°æ® ãEditby shaocx,2023-07-23ã /// </summary> /// <param name="deviceId"></param> /// <param name="value__Out_MaterialModel"></param> /// <param name="value_Out_OrderNo"></param> /// <param name="value_Out_SerialNumber"></param> /// <param name="plcTaskId"></param> /// <returns></returns> public SdaResEntity WriteStation_XigangGetDataForOut(int deviceId, string value__Out_MaterialModel, string value_Out_OrderNo, string value_Out_SerialNumber, int plcTaskId) { SdaResEntity _SdaResEntity = new SdaResEntity(); try { var StationResult = Station_CacheEntity.GetDeviceObj(deviceId); if (!StationResult.result) { return StationResult; } var Station = StationResult.resData as StationEntity; string msg = ""; var result = Station.WriteStation_XigangGetDataForOut(deviceId, value__Out_MaterialModel, value_Out_OrderNo, value_Out_SerialNumber, plcTaskId, out msg); _SdaResEntity.result = result; _SdaResEntity.resMsg = msg; return _SdaResEntity; } catch (Exception ex) { _SdaResEntity.result = false; _SdaResEntity.resMsg = ex.Message; return _SdaResEntity; } } } }