123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- using ACTMULTILib;
- using ProjectBase.Data.BaseDAL;
- using ProjectBase.Data.Logs;
- using SIMDP.BLL;
- using SIMDP.Device;
- using SIMDP.Model;
- using System;
- 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<AbstractBaseDevice> deviceList = new List<AbstractBaseDevice>();
- public static List<MoPlcInfo> plcInfoList = new List<MoPlcInfo>();
- /// <summary>
- /// 连接PLC
- /// </summary>
- public void Connect()
- {
- if (deviceList.Count > 0)
- Close();
- plcInfoList = BLLFactory<BlPlcInfo>.Instance.GetActivePLC();
- if (plcInfoList.Count <= 0)
- return;
- foreach (var plcInfo in plcInfoList)
- {
- List<MoDataPoint> opcPoints = BLLFactory<BlDataPoint>.Instance.GetDataPointsByPlcID(plcInfo.PlcId);
- if (opcPoints.Count == 0) continue;
- // 直接通过PLC名称实例化对象,替代原有按类型区别方式
- Type t = Type.GetType("SIMDP.Project." + plcInfo.PlcName);
- if (t == null)
- {
- LogHelper.log.Error("未找到设备对象类:" + plcInfo.PlcName);
- continue;
- }
- AbstractBaseDevice plc = (AbstractBaseDevice)t.Assembly.CreateInstance(t.FullName);
- deviceList.Add(plc);
- plc.Start(plcInfo, opcPoints);
- }
- }
- /// <summary>
- /// 断开连接
- /// </summary>
- public void Close()
- {
- foreach (var plc in deviceList)
- {
- plc.Stop();
- }
- deviceList.Clear();
- }
- }
- }
|