首次提交:添加src文件夹代码
This commit is contained in:
109
Cowain.Bake.Communication/PLC/PLC_ModbusTcp.cs
Normal file
109
Cowain.Bake.Communication/PLC/PLC_ModbusTcp.cs
Normal file
@@ -0,0 +1,109 @@
|
||||
using Cowain.Bake.BLL;
|
||||
using Cowain.Bake.Common;
|
||||
using Cowain.Bake.Common.Core;
|
||||
using HslCommunication;
|
||||
using HslCommunication.Core;
|
||||
using HslCommunication.ModBus;
|
||||
using Newtonsoft.Json;
|
||||
using Prism.Services.Dialogs;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Unity;
|
||||
using Hsl = HslCommunication.Profinet.Omron;
|
||||
|
||||
|
||||
namespace Cowain.Bake.Communication.PLC
|
||||
{
|
||||
public class PLC_ModbusTcp : PLCBase
|
||||
{
|
||||
public override int Port { get; set; } = 502;
|
||||
private ModbusTcpNet plc;
|
||||
|
||||
public PLC_ModbusTcp(IUnityContainer unityContainer, IDialogService dialogService) : base(unityContainer, dialogService)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
IsConnect = false;
|
||||
try
|
||||
{
|
||||
plc?.ConnectClose();
|
||||
plc?.Dispose();
|
||||
plc = null;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.Instance.Error($"关闭PLC连接失败:{ex}");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public override void Connect()
|
||||
{
|
||||
Close();
|
||||
if (plc == null)
|
||||
{
|
||||
plc = new ModbusTcpNet();
|
||||
this.PLC = plc;
|
||||
this.ByteTransform = plc.ByteTransform;
|
||||
plc.ConnectTimeOut = 3000;
|
||||
}
|
||||
try
|
||||
{
|
||||
plc.IpAddress = this.IpAddress;
|
||||
plc.Port = this.Port;
|
||||
plc.ByteTransform.DataFormat = HslCommunication.Core.DataFormat.CDAB;
|
||||
var result = plc.ConnectServer();
|
||||
if (result.IsSuccess)
|
||||
{
|
||||
IsConnect = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
IsConnect = false;
|
||||
LogHelper.Instance.Error("连接PLC失败,请检查网络和参数");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
IsConnect = false;
|
||||
LogHelper.Instance.Error($"连接PLC失败{ex}");
|
||||
}
|
||||
}
|
||||
|
||||
public override void GetJsonParam(string param)
|
||||
{
|
||||
dynamic d = JsonConvert.DeserializeObject<dynamic>(param);
|
||||
this.IpAddress = d.Ip;
|
||||
this.Port = d.Port;
|
||||
}
|
||||
public override void GetReadAddress()
|
||||
{
|
||||
foreach (var storage in Storages)
|
||||
{
|
||||
storage.ReadAddress = storage.AddressType + ";" + storage.StartAddress;
|
||||
}
|
||||
}
|
||||
|
||||
public override OperateResult Write<T>(string address, T data, int maxCount = 5)
|
||||
{
|
||||
return Write<T>(plc, address, data, maxCount);
|
||||
}
|
||||
|
||||
public override OperateResult Writes(string[] tags, object[] values, int maxCount = Global.MAX_READS)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user