| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 | 
							- using HslCommunication.Profinet.Omron;
 
- using HslCommunication.Profinet.Siemens;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Net;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- namespace YG.Device
 
- {
 
-     public class DeviceS7 : DeviceList
 
-     {
 
-         public SiemensS7Net SiemensS7Net { get; set; }
 
-         private SiemensPLCS siemensPLCS;
 
-         private string ip;
 
-         public DeviceS7(SiemensPLCS _siemensPLCS, string _ip, int port = 102)
 
-         {
 
-             siemensPLCS = _siemensPLCS;
 
-             ip = _ip;
 
-             SiemensS7Net = new SiemensS7Net(siemensPLCS, ip) { ConnectTimeOut = 5000 };
 
-             SiemensS7Net.ConnectionId = Guid.NewGuid().ToString();
 
-         }
 
-         public HslCommunication.OperateResult ConnectionResult { get; set; }
 
-         public override void DeviceInit()
 
-         {
 
-             ConnectionResult = SiemensS7Net.ConnectServer();
 
-             base.DeviceInit();
 
-         }
 
-         bool isShow = false;
 
-         public override void DeviceState()
 
-         {
 
-             Task.Factory.StartNew(async () =>
 
-             {
 
-                 while (true)
 
-                 {
 
-                     await Task.Delay(200);
 
-                     if (!ConnectionResult.IsSuccess&&ip.Ping())
 
-                     {
 
-                         if (!isShow)
 
-                         {
 
-                             isShow = true;
 
-                             System.Windows.Forms.MessageBox.Show($"PLC{SiemensS7Net.IpAddress} 连接失败!{ConnectionResult.Message}");
 
-                         }
 
-                     }
 
-                 }
 
-             });
 
-             base.DeviceState();
 
-         }
 
-         public override T DeviceRead<T>(string value, ushort leng =0)
 
-         {
 
-             Type tp = typeof(T);
 
-             {
 
-                 if (tp.Equals(typeof(short)))
 
-                 {
 
-                     var operateResult = SiemensS7Net.ReadInt16(value);
 
-                     return (T)(object)operateResult.Content;
 
-                 }
 
-                 else if (tp.Equals(typeof(bool)))
 
-                 {
 
-                     var operateResult = SiemensS7Net.ReadBool(value);
 
-                     return (T)(object)operateResult.Content;
 
-                 }
 
-                 else if (tp.Equals(typeof(int)))
 
-                 {
 
-                     var operateResult = SiemensS7Net.ReadInt32(value);
 
-                     return (T)(object)operateResult.Content;
 
-                 }
 
-                 else if (tp.Equals(typeof(long)))
 
-                 {
 
-                     var operateResult = SiemensS7Net.ReadInt64(value);
 
-                     return (T)(object)operateResult.Content;
 
-                 }
 
-                 else if (tp.Equals(typeof(byte[])))
 
-                 {
 
-                    var operateResult= SiemensS7Net.Read(value, leng);
 
-                     return (T)(object)operateResult.Content;
 
-                 }
 
-                 else if (tp.Equals(typeof(string)))
 
-                 {
 
-                     var operateResult = SiemensS7Net.ReadString(value, leng, Encoding.ASCII);
 
-                     return (T)(object)operateResult.Content;
 
-                 }
 
-             }
 
-             return default(T);
 
-         }
 
-         public string DeviceRead(string value, string readType,ushort leng=0)
 
-         {
 
-             string retResponse = "";
 
-             if (readType.Equals("1")) //short
 
-             {
 
-                 var operateResult = SiemensS7Net.ReadInt16(value);
 
-                 retResponse = operateResult.Content.ToString();
 
-                 return retResponse;
 
-             }
 
-             else if (readType.Equals("2"))//bool
 
-             {
 
-                 var operateResult = SiemensS7Net.ReadBool(value);
 
-                 retResponse = operateResult.Content.ToString();
 
-                 return retResponse;
 
-             }
 
-             else if (readType.Equals("3"))//int
 
-             {
 
-                 var operateResult = SiemensS7Net.ReadInt32(value);
 
-                 retResponse = operateResult.Content.ToString();
 
-                 return retResponse;
 
-             }
 
-             else if (readType.Equals("4"))//long
 
-             {
 
-                 var operateResult = SiemensS7Net.ReadInt64(value);
 
-                 retResponse = operateResult.Content.ToString();
 
-                 return retResponse;
 
-             }
 
-             else if (readType.Equals("5")) //string
 
-             {
 
-                 var operateResult = SiemensS7Net.ReadString(value, leng,Encoding.ASCII);
 
-                 retResponse = operateResult.Content.ToString();
 
-                 return retResponse;
 
-             }
 
-             return retResponse;
 
-         }
 
-         public override object Clone()
 
-         {
 
-             return this.MemberwiseClone();
 
-         }
 
-         /// <summary>
 
-         /// 
 
-         /// </summary>
 
-         /// <param name="ob">地址</param>
 
-         /// <param name="ob1">地址的值</param>
 
-         public override void DeviceSend(object ob, object ob1)
 
-         {
 
-             System.Threading.Thread.Sleep(100);
 
-             HslCommunication.OperateResult resultt = new HslCommunication.OperateResult() { IsSuccess = false, Message = "resutt为空" };
 
-             if (ConnectionResult.IsSuccess)
 
-             {
 
-                 Type ty = ob1.GetType();
 
-                 if (ty == typeof(string))
 
-                 {
 
-                     resultt = SiemensS7Net.Write(ob.ToString(), ob1.ToString());
 
-                 }
 
-                 else if (ty == typeof(int))
 
-                 {
 
-                     resultt = SiemensS7Net.Write(ob.ToString(), (int)ob1);
 
-                 }
 
-                 else if (ty == typeof(byte))
 
-                 {
 
-                     resultt = SiemensS7Net.Write(ob.ToString(), (byte)ob1);
 
-                 }
 
-                 else if (ty == typeof(byte[]))
 
-                 {
 
-                     resultt = SiemensS7Net.Write(ob.ToString(), (byte[])ob1);
 
-                 }
 
-                 else if (ty == typeof(short))
 
-                 {
 
-                     if (short.TryParse(ob1.ToString(), out short value))
 
-                     {
 
-                         resultt = SiemensS7Net.Write(ob.ToString(), (short)value);
 
-                     }
 
-                 }
 
-                 else if (ty == typeof(bool))
 
-                 {
 
-                     resultt = SiemensS7Net.Write(ob.ToString(), (bool)ob1);
 
-                 }
 
-                 YG.Log.Instance.WriteLogAdd($"{SiemensS7Net.IpAddress}+地址{ob.ToString()}+写入值{ob1.ToString()}+写入结果:{ resultt.IsSuccess}+信息提示{resultt.Message}");
 
-             }
 
-             base.DeviceSend(ob, ob1);
 
-         }
 
-         public override void DeviceSend(object ob, object ob1, string readType)
 
-         {
 
-             System.Threading.Thread.Sleep(100);
 
-             HslCommunication.OperateResult resultt = new HslCommunication.OperateResult() { IsSuccess = false, Message = "result为空" };
 
-             Type ty = ob1.GetType();
 
-             if (readType.Equals("5")) //string
 
-             {
 
-                 resultt = SiemensS7Net.Write(ob.ToString(), ob1.ToString());
 
-             }
 
-             else if (readType.Equals("3")) //int
 
-             {
 
-                 resultt = SiemensS7Net.Write(ob.ToString(), (int)ob1);
 
-             }
 
-             else if (readType.Equals("6")) //byte
 
-             {
 
-                 resultt = SiemensS7Net.Write(ob.ToString(), (byte)ob1);
 
-             }
 
-             else if (readType.Equals("1")) //short
 
-             {
 
-                 if (short.TryParse(ob1.ToString(), out short value))
 
-                 {
 
-                     resultt = SiemensS7Net.Write(ob.ToString(), (short)value);
 
-                 }
 
-             }
 
-             else if (readType.Equals("2")) //bool
 
-             {
 
-                 resultt = SiemensS7Net.Write(ob.ToString(), (bool)ob1);
 
-             }
 
-             YG.Log.Instance.WriteLogAdd($"{SiemensS7Net.IpAddress}+地址{ob.ToString()}+写入值{ob1.ToString()}+写入结果:{ resultt.IsSuccess}+信息提示{resultt.Message}");
 
-         }
 
-         public override void DeviceStart()
 
-         {
 
-             base.DeviceStart();
 
-         }
 
-         public override void DeviceClose()
 
-         {
 
-             try
 
-             {
 
-                 if (ConnectionResult.IsSuccess)
 
-                 {
 
-                     SiemensS7Net.ConnectClose();
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 YG.Log.Instance.WriteLogAdd($"206-->{ex.Message}");
 
-             }
 
-             base.DeviceClose();
 
-         }
 
-     }
 
- }
 
 
  |