Skip to content

Commit 0d915a7

Browse files
feat(v0.4/#59): Port Submodule - Add attributes for *.xti
Closes #59. Also, update dependencies.
1 parent f311541 commit 0d915a7

File tree

5 files changed

+64
-13
lines changed

5 files changed

+64
-13
lines changed

src/dsian.TcPnScanner.CLI/Export/TC/Constants.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ internal static class Constants
2121

2222
internal const uint SUBMODULE_INDEX_START = 0x031C0000u;
2323

24+
internal const ushort SUBSLOT_NR_PORT1 = 32769;
25+
26+
internal const ushort SUBSLOT_NR_PORT2 = 32770;
27+
2428
internal const uint BOX_IMAGE_ID = 121;
2529

2630
internal const uint API_IMAGE_ID = 4;
@@ -35,4 +39,5 @@ internal static class Constants
3539
internal const uint BOX_PROFINET_FLAGS = 0x410u;
3640

3741
internal const uint BOX_PROFINET_FRAME_OFFSET = 0x8000u;
42+
3843
}

src/dsian.TcPnScanner.CLI/Export/TC/TcSmItem.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2965,6 +2965,9 @@ public partial class TcSmItemDeviceBoxProfinetAPIModuleSubModule
29652965

29662966
private uint subModuleIdentNumberField;
29672967

2968+
private uint typeOfSubmoduleField;
2969+
private bool typeOfSubmoduleFieldSpecified;
2970+
29682971
private uint subSlotNumberField;
29692972

29702973
private bool isFixSubmoduleField;
@@ -3091,6 +3094,35 @@ public uint SubModuleIdentNumber
30913094
}
30923095
}
30933096

3097+
/// <remarks/>
3098+
[System.Xml.Serialization.XmlAttributeAttribute()]
3099+
public uint TypeOfSubModule
3100+
{
3101+
get
3102+
{
3103+
return this.typeOfSubmoduleField;
3104+
}
3105+
set
3106+
{
3107+
this.typeOfSubmoduleField = value;
3108+
this.typeOfSubmoduleFieldSpecified = true;
3109+
}
3110+
}
3111+
3112+
/// <remarks/>
3113+
[System.Xml.Serialization.XmlIgnoreAttribute()]
3114+
public bool TypeOfSubModuleSpecified
3115+
{
3116+
get
3117+
{
3118+
return this.typeOfSubmoduleFieldSpecified;
3119+
}
3120+
set
3121+
{
3122+
this.typeOfSubmoduleFieldSpecified = value;
3123+
}
3124+
}
3125+
30943126
/// <remarks/>
30953127
[System.Xml.Serialization.XmlAttributeAttribute()]
30963128
public uint SubSlotNumber
@@ -3144,6 +3176,7 @@ public uint AddSubModFlags
31443176
set
31453177
{
31463178
this.addSubModFlagsField = value;
3179+
this.addSubModFlagsFieldSpecified = true;
31473180
}
31483181
}
31493182

src/dsian.TcPnScanner.CLI/Export/TC/XtiExporter.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ private static TcSmItemDeviceBoxProfinetAPIModuleSubModule[] GetSubModules(APIEx
184184

185185
foreach (var submodule in api.Submodules)
186186
{
187-
subModules.Add(new TcSmItemDeviceBoxProfinetAPIModuleSubModule
187+
var subModuleToAdd = new TcSmItemDeviceBoxProfinetAPIModuleSubModule
188188
{
189189
Id = PrintAsHex(CreateModuleIndex(Constants.SUBMODULE_INDEX_START, (ushort)(submodule.SubslotNumber + 1))),
190190
Name = $"Subterm {submodule.SubslotNumber}{PrintSubTermIoLabel(submodule)}",
@@ -195,7 +195,16 @@ private static TcSmItemDeviceBoxProfinetAPIModuleSubModule[] GetSubModules(APIEx
195195
APINr = api.APIId,
196196
APINrSpecified = api.APIId != 0,
197197
Vars = GetIoVarsForSubmodule(submodule)
198-
});
198+
199+
};
200+
if (IsPortSubmodule(submodule))
201+
{
202+
subModuleToAdd.Name += $" (Port {submodule.SubslotNumber - (Constants.SUBSLOT_NR_PORT1 - 1)})";
203+
subModuleToAdd.PortData = "";
204+
subModuleToAdd.TypeOfSubModule = 2;
205+
subModuleToAdd.AddSubModFlags = 28;
206+
}
207+
subModules.Add(subModuleToAdd);
199208
}
200209

201210
return subModules.ToArray();
@@ -292,4 +301,8 @@ private static string PrintAsHex(uint index)
292301
{
293302
return $"#x{index:X08}";
294303
}
304+
private static bool IsPortSubmodule(in Submodule submodule)
305+
{
306+
return submodule.SubslotNumber >= Constants.SUBSLOT_NR_PORT1 && submodule.SubslotNumber <= Constants.SUBSLOT_NR_PORT2;
307+
}
295308
}

src/dsian.TcPnScanner.CLI/dsian.TcPnScanner.CLI.csproj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<Description>Scans a PROFINET and adds all Stations to a PROFINET IO Device (TF6270)</Description>
1919
<Copyright>Copyright (c) 2023 densogiaichned</Copyright>
2020
<Title>TwinCAT Profinet Device Scanner</Title>
21-
<Version>0.3.1</Version>
21+
<Version>0.4.0</Version>
2222
<AssemblyVersion>$(Version)</AssemblyVersion>
2323
<FileVersion>$(Version)</FileVersion>
2424
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
@@ -55,11 +55,11 @@
5555
<PackageReference Include="CommandLineParser" Version="2.9.1" />
5656
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
5757
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
58-
<PackageReference Include="Serilog" Version="3.1.1" />
58+
<PackageReference Include="Serilog" Version="4.0.0" />
5959
<PackageReference Include="Serilog.Extensions.Logging" Version="8.0.0" />
60-
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" />
61-
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
62-
<PackageReference Include="SharpPcap" Version="6.2.5" />
60+
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
61+
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
62+
<PackageReference Include="SharpPcap" Version="6.3.0" />
6363
</ItemGroup>
6464

6565
</Project>

tests/dsian.TcPnScanner.IntegrationTests/dsian.TcPnScanner.IntegrationTests.csproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@
1010
</PropertyGroup>
1111

1212
<ItemGroup>
13-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
14-
<PackageReference Include="Verify" Version="23.1.0" />
15-
<PackageReference Include="Verify.Xunit" Version="23.1.0" />
16-
<PackageReference Include="xunit" Version="2.6.6" />
17-
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.6">
13+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
14+
<PackageReference Include="Verify" Version="25.3.1" />
15+
<PackageReference Include="Verify.Xunit" Version="25.3.1" />
16+
<PackageReference Include="xunit" Version="2.9.0" />
17+
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
1818
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1919
<PrivateAssets>all</PrivateAssets>
2020
</PackageReference>
21-
<PackageReference Include="coverlet.collector" Version="6.0.0">
21+
<PackageReference Include="coverlet.collector" Version="6.0.2">
2222
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2323
<PrivateAssets>all</PrivateAssets>
2424
</PackageReference>

0 commit comments

Comments
 (0)