Skip to content

Commit 9d5d8c8

Browse files
author
sripp
committed
suport SystemFunction DPXX_DAT
1 parent 114ffac commit 9d5d8c8

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

TiaCodeGen.Tests/SampleTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,5 +368,29 @@ public void TestConstant()
368368
var xml = sb.ToString();
369369
Assert.AreEqual("<Access Scope=\"GlobalConstant\" UId=\"1\">\r\n<Constant Name=\"AAA\">\r\n</Constant>\r\n</Access>\r\n".Replace("\n", "").Replace("\r", ""), xml.Replace("\n", "").Replace("\r", ""));
370370
}
371+
372+
[Test]
373+
public void SystemFunctionDPXX_DAT()
374+
{
375+
var codeblock = new CodeBlock() { Safety = false };
376+
377+
var nw = new Network("TestDPXX_DAT", "TestDPXX_DATen");
378+
379+
var sf1 = new SystemFunctionCall("DPRD_DAT");
380+
sf1.Interface["LADDR"] = new IOperationOrSignalDirectionWrapper(new Signal("#Configuration.GeneralMoviC.ModuleHardwareID"), Direction.Input);
381+
sf1.Interface["RET_VAL"] = new IOperationOrSignalDirectionWrapper(new Signal("#retVal"), Direction.Output);
382+
sf1.Interface["RECORD"] = new IOperationOrSignalDirectionWrapper(new Signal("#PeripheryInputsMoviC"), Direction.Output);
383+
sf1.Children.AddRange(sf1.Interface.Values.Where(x => x.OperationOrSignal != null).Select(x => x.OperationOrSignal));
384+
385+
nw.Add(sf1);
386+
387+
codeblock.Add(nw);
388+
389+
var block = new Block("Test", "blabla", codeblock);
390+
block.Interface = TestInterface;
391+
var xml = block.GetCode();
392+
393+
//Assert.AreEqual("<Access Scope=\"LocalVariable\" UId=\"1\">\r\n<Symbol>\r\n<Component Name=\"A\">\r\n</Component>\r\n<Component Name=\"B\">\r\n</Component>\r\n<Component Name=\"C\">\r\n<Access Scope=\"LocalVariable\">\r\n<Symbol>\r\n<Component Name=\"D\" />\r\n<Component Name=\"E\" />\r\n<Component Name=\"F\" />\r\n</Symbol>\r\n</Access>\r\n<Access Scope=\"LiteralConstant\">\r\n<Constant>\r\n<ConstantType>DInt</ConstantType>\r\n<ConstantValue>1</ConstantValue>\r\n</Constant>\r\n</Access>\r\n</Component>\r\n</Symbol>\r\n</Access>\r\n".Replace("\n", "").Replace("\r", ""), xml.Replace("\n", "").Replace("\r", ""));
394+
}
371395
}
372396
}

TiaCodegen/CodeGen/KopCodeHelper.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Collections.Generic;
44
using System.Linq;
55
using System.Text;
6+
using System.Xml.Linq;
67
using TiaCodegen.Blocks;
78
using TiaCodegen.Commands;
89
using TiaCodegen.Commands.Coils;
@@ -309,6 +310,11 @@ private void AddContactDefinitions(Network network, CodeBlock block)
309310
srctype = srctype.Substring(8);
310311
_sb.AppendLine("<TemplateValue Name=\"SrcType\" Type=\"Type\">" + srctype + "</TemplateValue>");
311312
}
313+
else if (fc.FunctionName == "DPRD_DAT" || fc.FunctionName == "DPWR_DAT")
314+
{
315+
_sb.AppendLine("<TemplateValue Name=\"ptr_type\" Type=\"Type\">Variant</TemplateValue>");
316+
_sb.AppendLine("<TemplateValue Name=\"laddr_type\" Type=\"Type\">HW_IO</TemplateValue>");
317+
}
312318
_sb.AppendLine("</Part>");
313319
}
314320
else if (op is FunctionCall)

0 commit comments

Comments
 (0)