2016-04-30 update 1 version 1.1.1 add port support in modbus and siemens tcp connection.
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
||||
<metadata>
|
||||
<id>Modbus.Net.Modbus</id>
|
||||
<version>1.1.0</version>
|
||||
<version>1.1.1</version>
|
||||
<title>Modbus.Net.Modbus</title>
|
||||
<authors>Chris L.(Luo Sheng)</authors>
|
||||
<owners>Hangzhou Delian Information and Science Technology Co.,Ltd.</owners>
|
||||
|
||||
@@ -13,5 +13,10 @@
|
||||
{
|
||||
ProtocalLinker = new ModbusTcpProtocalLinker(ip);
|
||||
}
|
||||
|
||||
public ModbusTcpProtocal(string ip, int port)
|
||||
{
|
||||
ProtocalLinker = new ModbusTcpProtocalLinker(ip, port);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,5 +22,10 @@
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public ModbusTcpProtocalLinker(string ip, int port) : base(ip, port)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Threading.Tasks;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Modbus.Net.Modbus
|
||||
{
|
||||
@@ -21,6 +22,34 @@ namespace Modbus.Net.Modbus
|
||||
{
|
||||
private ModbusType _modbusType;
|
||||
|
||||
protected string ConnectionStringIp
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ConnectionString == null) return null;
|
||||
return ConnectionString.Contains(":") ? ConnectionString.Split(':')[0] : ConnectionString;
|
||||
}
|
||||
}
|
||||
|
||||
protected int? ConnectionStringPort
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ConnectionString == null) return null;
|
||||
if (!ConnectionString.Contains(":")) return null;
|
||||
var connectionStringSplit = ConnectionString.Split(':');
|
||||
try
|
||||
{
|
||||
return connectionStringSplit.Length < 2 ? (int?)null : int.Parse(connectionStringSplit[1]);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public ModbusType ModbusType
|
||||
{
|
||||
get
|
||||
@@ -39,7 +68,7 @@ namespace Modbus.Net.Modbus
|
||||
}
|
||||
case ModbusType.Tcp:
|
||||
{
|
||||
Wrapper = ConnectionString == null ? new ModbusTcpProtocal() : new ModbusTcpProtocal(ConnectionString);
|
||||
Wrapper = ConnectionString == null ? new ModbusTcpProtocal() : (ConnectionStringPort == null ? new ModbusTcpProtocal(ConnectionString) : new ModbusTcpProtocal(ConnectionStringIp,ConnectionStringPort.Value));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
||||
<metadata>
|
||||
<id>Modbus.Net.Siemens</id>
|
||||
<version>1.1.0</version>
|
||||
<version>1.1.1</version>
|
||||
<title>Modbus.Net.Siemens</title>
|
||||
<authors>Chris L.(Luo Sheng)</authors>
|
||||
<owners>Hangzhou Delian Information and Science Technology Co.,Ltd.</owners>
|
||||
|
||||
@@ -12,13 +12,20 @@ namespace Modbus.Net.Siemens
|
||||
private readonly byte _tdpuSize;
|
||||
|
||||
private readonly string _ip;
|
||||
private readonly int _port;
|
||||
private int _connectTryCount;
|
||||
|
||||
public SiemensTcpProtocal(byte tdpuSize, ushort tsapSrc, ushort tsapDst, ushort maxCalling, ushort maxCalled, ushort maxPdu) : this(tdpuSize, tsapSrc, tsapDst, maxCalling, maxCalled, maxPdu, ConfigurationManager.IP)
|
||||
{
|
||||
}
|
||||
|
||||
public SiemensTcpProtocal(byte tdpuSize, ushort tsapSrc, ushort tsapDst, ushort maxCalling, ushort maxCalled, ushort maxPdu, string ip)
|
||||
public SiemensTcpProtocal(byte tdpuSize, ushort tsapSrc, ushort tsapDst, ushort maxCalling, ushort maxCalled,
|
||||
ushort maxPdu, string ip) : this (tdpuSize, tsapSrc, tsapDst, maxCalling, maxCalled, maxPdu, ip, 0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public SiemensTcpProtocal(byte tdpuSize, ushort tsapSrc, ushort tsapDst, ushort maxCalling, ushort maxCalled, ushort maxPdu, string ip, int port)
|
||||
{
|
||||
_taspSrc = tsapSrc;
|
||||
_tsapDst = tsapDst;
|
||||
@@ -27,6 +34,7 @@ namespace Modbus.Net.Siemens
|
||||
_maxPdu = maxPdu;
|
||||
_tdpuSize = tdpuSize;
|
||||
_ip = ip;
|
||||
_port = port;
|
||||
_connectTryCount = 0;
|
||||
}
|
||||
|
||||
@@ -69,7 +77,7 @@ namespace Modbus.Net.Siemens
|
||||
public override async Task<bool> ConnectAsync()
|
||||
{
|
||||
_connectTryCount++;
|
||||
ProtocalLinker = new SiemensTcpProtocalLinker(_ip);
|
||||
ProtocalLinker = _port == 0 ? new SiemensTcpProtocalLinker(_ip) : new SiemensTcpProtocalLinker(_ip, _port);
|
||||
if (!await ProtocalLinker.ConnectAsync()) return false;
|
||||
_connectTryCount = 0;
|
||||
var inputStruct = new CreateReferenceSiemensInputStruct(_tdpuSize, _taspSrc, _tsapDst);
|
||||
|
||||
@@ -33,5 +33,11 @@ namespace Modbus.Net.Siemens
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public SiemensTcpProtocalLinker(string ip, int port)
|
||||
: base(ip, port)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -29,7 +29,34 @@ namespace Modbus.Net.Siemens
|
||||
private readonly ushort _maxCalling;
|
||||
private readonly ushort _maxCalled;
|
||||
private readonly ushort _maxPdu;
|
||||
|
||||
|
||||
protected string ConnectionStringIp
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ConnectionString == null) return null;
|
||||
return ConnectionString.Contains(":") ? ConnectionString.Split(':')[0] : ConnectionString;
|
||||
}
|
||||
}
|
||||
|
||||
protected int? ConnectionStringPort
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ConnectionString == null) return null;
|
||||
if (!ConnectionString.Contains(":")) return null;
|
||||
var connectionStringSplit = ConnectionString.Split(':');
|
||||
try
|
||||
{
|
||||
return connectionStringSplit.Length < 2 ? (int?)null : int.Parse(connectionStringSplit[1]);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private SiemensType _siemensType;
|
||||
|
||||
public SiemensType ConnectionType
|
||||
@@ -53,7 +80,7 @@ namespace Modbus.Net.Siemens
|
||||
// }
|
||||
case SiemensType.Tcp:
|
||||
{
|
||||
Wrapper = ConnectionString == null ? new SiemensTcpProtocal(_tdpuSize, _taspSrc, _tsapDst, _maxCalling, _maxCalled, _maxPdu) : new SiemensTcpProtocal(_tdpuSize, _taspSrc, _tsapDst, _maxCalling, _maxCalled, _maxPdu, ConnectionString);
|
||||
Wrapper = ConnectionString == null ? new SiemensTcpProtocal(_tdpuSize, _taspSrc, _tsapDst, _maxCalling, _maxCalled, _maxPdu) : (ConnectionStringPort == null ? new SiemensTcpProtocal(_tdpuSize, _taspSrc, _tsapDst, _maxCalling, _maxCalled, _maxPdu, ConnectionString) : new SiemensTcpProtocal(_tdpuSize, _taspSrc, _tsapDst, _maxCalling, _maxCalled, _maxPdu, ConnectionStringIp, ConnectionStringPort.Value));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,13 +50,15 @@ namespace NA200H.UI.WPF
|
||||
//});
|
||||
//machine.AddressFormater = new AddressFormaterNA200H();
|
||||
//machine.AddressTranslator = new AddressTranslatorNA200H();
|
||||
machine = new SiemensMachine(SiemensType.Tcp, "192.168.3.11", SiemensMachineModel.S7_300, new List<AddressUnit>()
|
||||
//machine.AddressCombiner = new AddressCombinerContinus();
|
||||
machine = new SiemensMachine(SiemensType.Tcp, "192.168.3.11:102", SiemensMachineModel.S7_300, new List<AddressUnit>()
|
||||
{
|
||||
new AddressUnit() {Id = 1, Area = "V", Address = 0, CommunicationTag = "Add1", DataType = typeof(ushort), Zoom = 1, DecimalPos = 0},
|
||||
new AddressUnit() {Id = 2, Area = "V", Address = 2, CommunicationTag = "Add2", DataType = typeof(ushort), Zoom = 1, DecimalPos = 0},
|
||||
new AddressUnit() {Id = 3, Area = "V", Address = 4, CommunicationTag = "Add3", DataType = typeof(ushort), Zoom = 1, DecimalPos = 0},
|
||||
new AddressUnit() {Id = 4, Area = "V", Address = 6, CommunicationTag = "Ans", DataType = typeof(ushort), Zoom = 1, DecimalPos = 0}
|
||||
});
|
||||
machine.AddressCombiner = new AddressCombinerContinus();
|
||||
var result = machine.GetDatas();
|
||||
var resultFormat = BaseMachine.MapGetValuesToSetValues(result);
|
||||
SetValue(new ushort[4] {(ushort)resultFormat["Add1"], (ushort)resultFormat["Add2"], (ushort)resultFormat["Add3"], (ushort)resultFormat["Ans"]});
|
||||
|
||||
Reference in New Issue
Block a user