using ACTMULTILib; using ProjectBase.Data.BaseDAL; using SIMDP.BLL; using SIMDP.Device; using SIMDP.Model; using SIMDP.Util; using System.Collections.Generic; using System.Linq; namespace SIMDP.Project { public class PlcHelper { public static PlcHelper Instance { get; private set; } static PlcHelper() { Instance = new PlcHelper(); } public static List plcList = new List(); private List plcInfoList = new List(); /// /// 连接PLC /// public void Connect() { if (plcList.Count > 0) Close(); plcInfoList = BLLFactory.Instance.GetAll(); if (plcInfoList.Count <= 0) return; foreach (var plcInfo in plcInfoList) { List opcPoints = BLLFactory.Instance.GetDataPointsByPlcID(plcInfo.PlcId); if (opcPoints.Count == 0) continue; string DeviceType = SysEnvironment.dirPlcLinkType.FirstOrDefault(p => p.Key == plcInfo.LinkType.ToString()).Value; if (DeviceType == "SiemensPLC") { } else if (DeviceType == "OPCDA") { } else if (DeviceType == "MX-Compoment") { MXComponent_FEM plc = new MXComponent_FEM(); plcList.Add(plc); plc.Start(plcInfo, opcPoints); } else if (DeviceType == "ModbusRTU") { } else if (DeviceType == "OPCUA") { } } } /// /// 断开连接 /// public void Close() { foreach (var plc in plcList) { plc.Stop(); } plcList.Clear(); } } }