| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | using HslCommunication.Profinet.Siemens;using WCS.BaseExtensions;using WCS.Core;using WCS.Core.DataTrans;using WCS.Virtual_PLC;namespace WCS.Service.PLCAccessors{    public class SiemensS7PLC : SiemensS7Net, IPlcAccessor    {        private SiemensS7Net plc;        public SiemensS7PLC(SiemensPLCS type) : base(type)        {        }        public SiemensS7PLC(SiemensPLCS type, string ip) : base(type, ip)        {            plc = new SiemensS7Net(type, ip);        }        public SiemensS7PLC(int type, string ip) : base((SiemensPLCS)type, ip)        {            plc = new SiemensS7Net((SiemensPLCS)type, ip);        }        public byte[] ReadBytes(ushort db, ushort address, ushort length, ushort dataLength)        {            if (Configs.Any(SystemMode.虚拟PLC))            {                return PlcData.Read(new PLCData { IP = plc.IpAddress, DB = db, Length = length, DataLength = dataLength });            }            var addr = "DB" + db + "." + address;            var res = plc.Read(addr, length);            if (res.IsSuccess)                return res.Content;            throw new WarnException("读取PLC数据失败:" + res.Message);        }        public void WriteBytes(ushort db, ushort address, byte[] data)        {            if (Configs.Any(SystemMode.虚拟PLC))            {                PlcData.Write(new PLCData { IP = plc.IpAddress, DB = db }, address, data);            }            else            {                var res = plc.Write("D" + address, data);                if (!res.IsSuccess)                    throw new WarnException("写入PLC数据失败:" + res.Message);            }        }    }}
 |