|
|
|
@ -1,89 +1,89 @@
|
|
|
|
|
using HslCommunication;
|
|
|
|
|
using Mesnac.PlcUtils.common;
|
|
|
|
|
using Mesnac.PlcUtils.enumInfo;
|
|
|
|
|
using Mesnac.PlcUtils.Impl;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace Mesnac.PlcUtils
|
|
|
|
|
{
|
|
|
|
|
public sealed class PlcBusiness
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
private static readonly Lazy<PlcBusiness> lazy = new Lazy<PlcBusiness>(() => new PlcBusiness());
|
|
|
|
|
public static PlcBusiness Instance
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return lazy.Value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private PlcBusiness() { }
|
|
|
|
|
|
|
|
|
|
private static IPlc plcInstance = null;
|
|
|
|
|
|
|
|
|
|
public void InitPlcConnect(PlcType plcType, string plcAddress, int plcPort)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string str = System.Environment.CurrentDirectory;
|
|
|
|
|
str = str + "\\Mesnac.PlcUtils.dll";
|
|
|
|
|
Assembly assembly = Assembly.LoadFile(str); // 加载程序集(EXE 或 DLL)
|
|
|
|
|
string AssemName = "Mesnac.PlcUtils.Impl." + plcType.GetDescription();
|
|
|
|
|
var obj = assembly.CreateInstance(AssemName, true);
|
|
|
|
|
plcInstance = obj as IPlc;
|
|
|
|
|
if (plcInstance == null)
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<OmronNJPlc>.Error("PLC初始化失败!!!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (!plcInstance.IsConnected)
|
|
|
|
|
{
|
|
|
|
|
bool connectResult = plcInstance.Connect(plcAddress, plcPort);
|
|
|
|
|
if (connectResult)
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<OmronNJPlc>.Debug("PLC连接成功!!!");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<OmronNJPlc>.Error("PLC连接失败!!!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<OmronNJPlc>.Error($"PLC初始化异常:{ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Dispose()
|
|
|
|
|
{
|
|
|
|
|
plcInstance.DisConnect();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public OperateResult<bool> readBoolValue(string address)
|
|
|
|
|
{
|
|
|
|
|
if(plcInstance != null)
|
|
|
|
|
{
|
|
|
|
|
return plcInstance.readBoolByAddress(address);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return new OperateResult<bool>() {
|
|
|
|
|
IsSuccess = false,
|
|
|
|
|
Content = false
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// using HslCommunication;
|
|
|
|
|
// using Mesnac.PlcUtils.common;
|
|
|
|
|
// using Mesnac.PlcUtils.enumInfo;
|
|
|
|
|
// using Mesnac.PlcUtils.Impl;
|
|
|
|
|
// using System;
|
|
|
|
|
// using System.Collections.Generic;
|
|
|
|
|
// using System.Linq;
|
|
|
|
|
// using System.Reflection;
|
|
|
|
|
// using System.Text;
|
|
|
|
|
// using System.Threading.Tasks;
|
|
|
|
|
//
|
|
|
|
|
// namespace Mesnac.PlcUtils
|
|
|
|
|
// {
|
|
|
|
|
// public sealed class PlcBusiness
|
|
|
|
|
// {
|
|
|
|
|
//
|
|
|
|
|
// private static readonly Lazy<PlcBusiness> lazy = new Lazy<PlcBusiness>(() => new PlcBusiness());
|
|
|
|
|
// public static PlcBusiness Instance
|
|
|
|
|
// {
|
|
|
|
|
// get
|
|
|
|
|
// {
|
|
|
|
|
// return lazy.Value;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// private PlcBusiness() { }
|
|
|
|
|
//
|
|
|
|
|
// private static IPlc plcInstance = null;
|
|
|
|
|
//
|
|
|
|
|
// public void InitPlcConnect(PlcType plcType, string plcAddress, int plcPort)
|
|
|
|
|
// {
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// string str = System.Environment.CurrentDirectory;
|
|
|
|
|
// str = str + "\\Mesnac.PlcUtils.dll";
|
|
|
|
|
// Assembly assembly = Assembly.LoadFile(str); // 加载程序集(EXE 或 DLL)
|
|
|
|
|
// string AssemName = "Mesnac.PlcUtils.Impl." + plcType.GetDescription();
|
|
|
|
|
// var obj = assembly.CreateInstance(AssemName, true);
|
|
|
|
|
// plcInstance = obj as IPlc;
|
|
|
|
|
// if (plcInstance == null)
|
|
|
|
|
// {
|
|
|
|
|
// ICSharpCode.Core.LoggingService<OmronNJPlc>.Error("PLC初始化失败!!!");
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// {
|
|
|
|
|
// if (!plcInstance.IsConnected)
|
|
|
|
|
// {
|
|
|
|
|
// bool connectResult = plcInstance.Connect(plcAddress, plcPort);
|
|
|
|
|
// if (connectResult)
|
|
|
|
|
// {
|
|
|
|
|
// ICSharpCode.Core.LoggingService<OmronNJPlc>.Debug("PLC连接成功!!!");
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// {
|
|
|
|
|
// ICSharpCode.Core.LoggingService<OmronNJPlc>.Error("PLC连接失败!!!");
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// catch (Exception ex)
|
|
|
|
|
// {
|
|
|
|
|
// ICSharpCode.Core.LoggingService<OmronNJPlc>.Error($"PLC初始化异常:{ex.Message}");
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// public void Dispose()
|
|
|
|
|
// {
|
|
|
|
|
// plcInstance.DisConnect();
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// public OperateResult<bool> readBoolValue(string address)
|
|
|
|
|
// {
|
|
|
|
|
// if(plcInstance != null)
|
|
|
|
|
// {
|
|
|
|
|
// return plcInstance.readBoolByAddress(address);
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// {
|
|
|
|
|
// return new OperateResult<bool>() {
|
|
|
|
|
// IsSuccess = false,
|
|
|
|
|
// Content = false
|
|
|
|
|
// };
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|