分支自 SuZhouGuanHong/TaiYuanTaiZhong

dengjunjie
2024-05-07 46f7bf1ee45c97b688a370bbe45d149efb403cc1
´úÂë¹ÜÀí/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs
@@ -14,9 +14,12 @@
        private readonly object _lockWrite = new object();
        public SiemensS7Net siemensPLCClient { get; set; }
        public SiemensPLCClient()
        public SiemensPLCClient(string model)
        {
            siemensPLCClient = new SiemensS7Net(SiemensPLCS.S1200);
            if (model == "S300")
                siemensPLCClient = new SiemensS7Net(SiemensPLCS.S300);
            else
                siemensPLCClient = new SiemensS7Net(SiemensPLCS.S1500);
            base.siemensPLCClient = this.siemensPLCClient;
        }
@@ -145,9 +148,10 @@
        /// </summary>
        /// <param name="orderName">IO点名称</param>
        /// <returns></returns>
        public override DataType ReadByOrder<DataType>(string orderName)
        public override DataType ReadByOrder<DataType>(string orderName, string Method = null)
        {
            var item = itemGroups.Where(t => t.name.Equals(orderName)).FirstOrDefault();
            if (Method != null) { item = itemGroups.Where(t => t.name.Equals(orderName) && t.Methods.Equals(Method)).FirstOrDefault(); }
            if (item == null)
            {
                throw new Exception($"PLC{PLCName},未定义指令{orderName}");
@@ -188,7 +192,7 @@
            else if (typeof(DataType) == typeof(string))//字符串
            {
                var str = GetContent(siemensPLCClient.ReadString(item.dbAddress, (ushort)item.dataLen), item).ToString();
                str = str.Replace("\0", "");
                str = str.Replace("\0", "")?.Replace("\\", "")?.Replace("\u0014", "")?.Replace("?\u0006", "")?.Replace("\n","")?.Replace("?", "")?.Trim();
                return (DataType)(str as object);
            }
            else
@@ -264,11 +268,12 @@
        /// </summary>
        /// <param name="orderName"></param>
        /// <exception cref="Exception"></exception>
        public override bool WriteByOrder(string orderName, object value)
        public override bool WriteByOrder(string orderName, object value, string Method = null)
        {
            lock (_lockWrite)
            {
                var item = itemGroups.Where(t => t.name.Equals(orderName)).FirstOrDefault();
                if (Method != null) { item = itemGroups.Where(t => t.name.Equals(orderName) && t.Methods.Equals(Method)).FirstOrDefault(); }
                if (item == null)
                {
                    throw new Exception($"PLC{PLCName},未定义指令{orderName}");