| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | using HslCommunication.Profinet.Siemens;using Virtual_PLC;using WCS.Core;using WCS.Core.DataTrans;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);            }        }    }}
 |