From ff049c612b216d4b93e2dada6684e97cd4e266f8 Mon Sep 17 00:00:00 2001
From: ArtemKhamzin <86554484+ArtemKhamzin@users.noreply.github.com>
Date: Thu, 7 Jul 2022 19:49:28 +0300
Subject: [PATCH 1/6] init commit
---
.../.vscode/launch.json | 48 ++++++++
.../.vscode/tasks.json | 44 +++++++
.../Kuka robot (src_dat)_DN.csproj | 31 +++++
.../Kuka robot (src_dat)_DN/PostSchema.xsd | 115 ++++++++++++++++++
.../Kuka robot (src_dat)_DN/Postprocessor.cs | 52 ++++++++
.../Kuka robot (src_dat)_DN/Registers.cs | 27 ++++
.../Kuka robot (src_dat)_DN/Settings.xml | 26 ++++
7 files changed, 343 insertions(+)
create mode 100644 Distributive/Robots/Kuka robot (src_dat)_DN/.vscode/launch.json
create mode 100644 Distributive/Robots/Kuka robot (src_dat)_DN/.vscode/tasks.json
create mode 100644 Distributive/Robots/Kuka robot (src_dat)_DN/Kuka robot (src_dat)_DN.csproj
create mode 100644 Distributive/Robots/Kuka robot (src_dat)_DN/PostSchema.xsd
create mode 100644 Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs
create mode 100644 Distributive/Robots/Kuka robot (src_dat)_DN/Registers.cs
create mode 100644 Distributive/Robots/Kuka robot (src_dat)_DN/Settings.xml
diff --git a/Distributive/Robots/Kuka robot (src_dat)_DN/.vscode/launch.json b/Distributive/Robots/Kuka robot (src_dat)_DN/.vscode/launch.json
new file mode 100644
index 0000000..a647ba0
--- /dev/null
+++ b/Distributive/Robots/Kuka robot (src_dat)_DN/.vscode/launch.json
@@ -0,0 +1,48 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "Launch post",
+ "type": "coreclr",
+ "request": "launch",
+ "preLaunchTask": "buildPostprocessor",
+ "program": "${env:SprutCAMDir}/DotNet/InpCore.exe",
+ "args": [
+ "-cldviewermode",
+ "-sharedfile:STInpCoreOfDebugger",
+ "-postfile:\"${workspaceFolder}\\bin\\Debug\\${workspaceFolderBasename}.dll\""
+ ],
+ "cwd": "${workspaceFolder}",
+ "console": "integratedTerminal",
+ "stopAtEntry": false,
+ "justMyCode": true
+ },
+ {
+ "name": "Launch post (console mode)",
+ "type": "coreclr",
+ "request": "launch",
+ "preLaunchTask": "buildPostprocessor",
+ "program": "${env:SprutCAMDir}/DotNet/InpCore.exe",
+ "args": [
+ "-batchmode",
+ "-cldfile:\"c:\\Users\\Public\\Documents\\SprutCAM\\Version 16\\Projects\\Examples\\Milling\\3+2D\\3+2.stc\"",
+ "-postfile:\"${workspaceFolder}\\bin\\Debug\\${workspaceFolderBasename}.dll\"",
+ "-settingsfile:\"${workspaceFolder}\\Settings.xml"
+ ],
+ "cwd": "${workspaceFolder}",
+ "console": "integratedTerminal",
+ "stopAtEntry": false,
+ "enableStepFiltering": false,
+ "justMyCode": true
+ },
+ {
+ "name": ".NET Core Attach",
+ "type": "coreclr",
+ "request": "attach",
+ "processId": "${command:pickProcess}"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Distributive/Robots/Kuka robot (src_dat)_DN/.vscode/tasks.json b/Distributive/Robots/Kuka robot (src_dat)_DN/.vscode/tasks.json
new file mode 100644
index 0000000..303bb59
--- /dev/null
+++ b/Distributive/Robots/Kuka robot (src_dat)_DN/.vscode/tasks.json
@@ -0,0 +1,44 @@
+{
+ // See https://go.microsoft.com/fwlink/?LinkId=733558
+ // for the documentation about the tasks.json format
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "buildPostprocessor",
+ "command": "dotnet",
+ "type": "shell",
+ "args": [
+ "build",
+ // Ask dotnet build to generate full paths for file names.
+ "/property:GenerateFullPaths=true",
+ // Do not generate summary otherwise it leads to duplicate errors in Problems panel
+ "/consoleloggerparameters:NoSummary"
+ ],
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "presentation": {
+ "reveal": "silent"
+ },
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "publish",
+ "command": "dotnet",
+ "type": "shell",
+ "args": [
+ "publish",
+ // Ask dotnet build to generate full paths for file names.
+ "/property:GenerateFullPaths=true",
+ // Do not generate summary otherwise it leads to duplicate errors in Problems panel
+ "/consoleloggerparameters:NoSummary"
+ ],
+ "group": "build",
+ "presentation": {
+ "reveal": "silent"
+ },
+ "problemMatcher": "$msCompile"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Distributive/Robots/Kuka robot (src_dat)_DN/Kuka robot (src_dat)_DN.csproj b/Distributive/Robots/Kuka robot (src_dat)_DN/Kuka robot (src_dat)_DN.csproj
new file mode 100644
index 0000000..699401d
--- /dev/null
+++ b/Distributive/Robots/Kuka robot (src_dat)_DN/Kuka robot (src_dat)_DN.csproj
@@ -0,0 +1,31 @@
+
+
+
+ net6.0-windows
+ bin\Debug\
+ bin\Debug\
+ enable
+ annotations
+
+
+
+
+ $(SprutCAMDir)\DotNet\STDefLib.dll
+
+
+ $(SprutCAMDir)\DotNet\VecMatrLib.dll
+
+
+ $(SprutCAMDir)\DotNet\SCPostprocessor.dll
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Distributive/Robots/Kuka robot (src_dat)_DN/PostSchema.xsd b/Distributive/Robots/Kuka robot (src_dat)_DN/PostSchema.xsd
new file mode 100644
index 0000000..0b6fa9b
--- /dev/null
+++ b/Distributive/Robots/Kuka robot (src_dat)_DN/PostSchema.xsd
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs b/Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs
new file mode 100644
index 0000000..a84db0b
--- /dev/null
+++ b/Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs
@@ -0,0 +1,52 @@
+namespace SprutTechnology.SCPostprocessor
+{
+
+ public partial class NCFile: TTextNCFile
+ {
+ // Declare variables specific to a particular file here, as shown below
+ // int FileNumber;
+ }
+
+ public partial class Postprocessor: TPostprocessor
+ {
+ #region Common variables definition
+ // Declare here global variables that apply to the entire postprocessor.
+
+ ///Current nc-file
+ NCFile nc;
+
+ #endregion
+
+ public override void OnStartProject(ICLDProject prj)
+ {
+ nc = new NCFile();
+ nc.OutputFileName = Settings.Params.Str["OutFiles.NCFileName"];
+
+ nc.WriteLine("Start of file: " + Path.GetFileName(nc.OutputFileName));
+ }
+
+ public override void OnFinishProject(ICLDProject prj)
+ {
+ nc.WriteLine("End of file: " + Path.GetFileName(nc.OutputFileName));
+ }
+
+ public override void OnStartTechOperation(ICLDTechOperation op, ICLDPPFunCommand cmd, CLDArray cld)
+ {
+ nc.WriteLine(" Start of operation: " + op.Comment);
+ }
+
+ public override void OnFinishTechOperation(ICLDTechOperation op, ICLDPPFunCommand cmd, CLDArray cld)
+ {
+ nc.WriteLine();
+ }
+
+ public override void StopOnCLData()
+ {
+ // Do nothing, just to be possible to use CLData breakpoints
+ }
+
+ // Uncomment line below (Ctrl + "/"), go to the end of "On" word and press Ctrl+Space to add a new CLData command handler
+ // override On
+
+ }
+}
diff --git a/Distributive/Robots/Kuka robot (src_dat)_DN/Registers.cs b/Distributive/Robots/Kuka robot (src_dat)_DN/Registers.cs
new file mode 100644
index 0000000..9fe19b1
--- /dev/null
+++ b/Distributive/Robots/Kuka robot (src_dat)_DN/Registers.cs
@@ -0,0 +1,27 @@
+// This file may be autogenerated, do not place meaningful code here.
+// Use it only to define a list of nc-words (registers) that may appear
+// in blocks of the nc-file.
+namespace SprutTechnology.SCPostprocessor
+{
+ ///A class that defines the nc-file - main output file that should be generated by the postprocessor.
+ public partial class NCFile : TTextNCFile
+ {
+ ///The block of the nc-file is an ordered list of nc-words
+ public NCBlock Block;
+ ///X coordinate of the movement
+ public NumericNCWord X = new NumericNCWord("X{-#####!####}", 0);
+ ///Y coordinate of the movement
+ public NumericNCWord Y = new NumericNCWord("Y{-#####!####}", 0);
+ ///
+ public NumericNCWord Z = new NumericNCWord("Z{-#####!####}", 0);
+ public NCFile(): base()
+ {
+ Block = new NCBlock(
+ this,
+ X,
+ Y,
+ Z);
+ OnInit();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Distributive/Robots/Kuka robot (src_dat)_DN/Settings.xml b/Distributive/Robots/Kuka robot (src_dat)_DN/Settings.xml
new file mode 100644
index 0000000..1a37484
--- /dev/null
+++ b/Distributive/Robots/Kuka robot (src_dat)_DN/Settings.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No
+
+ false
+ 0.01
+ 0
+ .
+
+
+
+
+
+
+
From a5ecdfeb37f60796e3467175b8ed55352c9c7b8d Mon Sep 17 00:00:00 2001
From: ArtemKhamzin <86554484+ArtemKhamzin@users.noreply.github.com>
Date: Sun, 7 Aug 2022 21:03:42 +0300
Subject: [PATCH 2/6] create postprocessor
---
.../Kuka robot (src_dat)_DN/Postprocessor.cs | 706 +++++++++++++++++-
.../Kuka robot (src_dat)_DN/Registers.cs | 65 +-
2 files changed, 759 insertions(+), 12 deletions(-)
diff --git a/Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs b/Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs
index a84db0b..57f0932 100644
--- a/Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs
+++ b/Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs
@@ -10,7 +10,22 @@ public partial class NCFile: TTextNCFile
public partial class Postprocessor: TPostprocessor
{
#region Common variables definition
- // Declare here global variables that apply to the entire postprocessor.
+
+ double MaxReal, ACC_CP, DEF_ACC, X_prev, Y_prev, Z_prev, A_prev, B_prev, C_prev,
+ E1_prev, E2_prev, E3_prev, E4_prev, E5_prev, E6_prev;
+
+ int Num_E6POS, Num_E6AXIS, Num_CPDAT, Num_PPDAT, MAX_num_line, Current_num_file, big_small_file, mid_end, State, Turn,
+ block_src1, block_src2, block_dat1, block_dat2, PTP_main_axes, Vel_PTP, Acc_PTP, APO_CDIS, APO_CPT, WorkpieceHolder;
+
+ string Current_NAME_file, outstr;
+
+ int[] SectLen = new int[6] { 0, 0, 0, 0, 0, 0 };
+ int[] AIndex = new int[6] { 0, 1, 2, 3, 4, 5 };
+
+ string[] Sect1 = new string[1000];
+ string[] Sect2 = new string[1000];
+ string[] Sect3 = new string[1000];
+ string[] Sect4 = new string[1000];
///Current nc-file
NCFile nc;
@@ -21,18 +36,16 @@ public override void OnStartProject(ICLDProject prj)
{
nc = new NCFile();
nc.OutputFileName = Settings.Params.Str["OutFiles.NCFileName"];
-
- nc.WriteLine("Start of file: " + Path.GetFileName(nc.OutputFileName));
}
public override void OnFinishProject(ICLDProject prj)
{
- nc.WriteLine("End of file: " + Path.GetFileName(nc.OutputFileName));
+
}
public override void OnStartTechOperation(ICLDTechOperation op, ICLDPPFunCommand cmd, CLDArray cld)
{
- nc.WriteLine(" Start of operation: " + op.Comment);
+
}
public override void OnFinishTechOperation(ICLDTechOperation op, ICLDPPFunCommand cmd, CLDArray cld)
@@ -45,8 +58,685 @@ public override void StopOnCLData()
// Do nothing, just to be possible to use CLData breakpoints
}
- // Uncomment line below (Ctrl + "/"), go to the end of "On" word and press Ctrl+Space to add a new CLData command handler
- // override On
+ public override void OnFeedrate(ICLDFeedrateCommand cmd, CLDArray cld)
+ {
+ nc.VEL_CP.v = cld[1] / 1000;
+ nc.VEL_CP.v = nc.VEL_CP.v / 60;
+ outstr = nc.VEL_CP.ToString();
+ if (outstr.Length > 0) SectOutput(block_src1, outstr+"; m/sec; " + (nc.VEL_CP.v * 60 * 1000).ToString() + " mm/min");
+ }
+
+ public override void OnFini(ICLDFiniCommand cmd, CLDArray cld)
+ {
+ // ---.SRC----
+ // ChangeNcFile Current_NAME_file + ".src"
+ SectOutput(block_src1, "END");
+ head_src();
+ OutSection(block_src1);
+
+ // ---.DAT----
+ // ChangeNcFile Current_NAME_file + ".dat"
+ SectOutput(block_dat1, "ENDDAT");
+ head_dat();
+ OutSection(block_dat1);
+ }
+
+ public override void OnFrom(ICLDFromCommand cmd, CLDArray cld)
+ {
+ A1_A6(11, cld[10], cld);
+ nc.A1.v0 = nc.A1;
+ nc.A2.v0 = nc.A2;
+ nc.A3.v0 = nc.A3;
+ nc.A4.v0 = nc.A4;
+ nc.A5.v0 = nc.A5;
+ nc.A6.v0 = nc.A6;
+
+ Ext_Axis(cmd);
+ nc.E1.v0 = nc.E1;
+ nc.E2.v0 = nc.E2;
+ nc.E3.v0 = nc.E3;
+ nc.E4.v0 = nc.E4;
+ nc.E5.v0 = nc.E5;
+ nc.E6.v0 = nc.E6;
+ }
+
+ public override void OnLoadTool(ICLDLoadToolCommand cmd, CLDArray cld)
+ {
+ if (WorkpieceHolder == 0)
+ {
+ nc.TOOL_DATA.v = cmd.Number;
+ if (nc.TOOL_DATA.v != nc.TOOL_DATA.v0)
+ {
+ if (nc.TOOL_DATA.v == 0)
+ {
+ nc.Output("$TOOL = $NULLFRAME");
+ nc.TOOL_DATA.v = 0;
+ nc.TOOL_DATA.v0 = 0;
+ }
+ else
+ {
+ SectOutput(block_src1, "$ACT_TOOL=" + nc.TOOL_DATA.ToString());
+ SectOutput(block_src1, "$TOOL=TOOL_DATA[" + nc.TOOL_DATA.ToString() + "]");
+ SectOutput(block_src1, "$LOAD=LOAD_DATA[" + nc.TOOL_DATA.ToString() + "]");
+ }
+ }
+ }
+ }
+
+ public override void OnMultiArc(ICLDMultiArcCommand cmd, CLDArray cld)
+ {
+ if (Num_E6POS == 0) if_first_point();
+ Num_CPDAT = Num_CPDAT + 1;
+ Num_E6POS = Num_E6POS + 1;
+
+ //------------MID-DAT----------------
+ nc.X.v = cld[8]; nc.Y.v = cld[9]; nc.Z.v = cld[10];
+ nc.A.v = cld[11]; nc.B.v = cld[12]; nc.C.v = cld[13];
+ RoundXYZABC();
+ mid_end = 1;
+
+ Point_Position("MidPos.MachineStateFlags","circ1", cmd);
+ Ext_Axis(cmd);
+ SectOutput(block_dat1, "DECL E6POS XP" + Num_E6POS.ToString() + "={X " + nc.X.ToString() + ",Y " +
+ nc.Y.ToString() + ",Z " + nc.Z.ToString() + ",A "+ nc.A.ToString() + ",B " + nc.B.ToString() +",C " +
+ nc.C.ToString() +",S " + State.ToString() + ",T " + Turn.ToString() + ",E1 " + nc.E1.ToString() + ",E2 " +
+ nc.E2.ToString() + ",E3 " + nc.E3.ToString() + ",E4 " + nc.E4.ToString() + ",E5 " + nc.E5.ToString() + ",E6 " +
+ nc.E6.ToString() + "}");
+ //------------END-DAT----------------
+ nc.X.v = cld[1]; nc.Y.v = cld[2]; nc.Z.v = cld[3];
+ nc.A.v = cld[4]; nc.B.v = cld[5]; nc.C.v = cld[6];
+ RoundXYZABC();
+ mid_end = 2;
+ Point_Position("EndPos.MachineStateFlags","circ2", cmd);
+ Ext_Axis(cmd);
+
+ SectOutput(block_dat1, "DECL E6POS XP" + (Num_E6POS+1).ToString() + "={X " + nc.X.ToString() + ",Y " +
+ nc.Y.ToString() + ",Z " + nc.Z.ToString() + ",A "+ nc.A.ToString() + ",B " + nc.B.ToString() + ",C " +
+ nc.C.ToString() + ",S " + State.ToString() + ",T " + Turn.ToString() + ",E1 " + nc.E1.ToString() +
+ ",E2 " + nc.E2.ToString() + ",E3 " + nc.E3.ToString() + ",E4 " + nc.E4.ToString() + ",E5 " + nc.E5.ToString() +
+ ",E6 " + nc.E6.ToString() + "}");
+ SectOutput(block_dat1, "DECL FDAT FP" + Num_E6POS+1.ToString() + "={TOOL_NO " + nc.TOOL_DATA.ToString() + ",BASE_NO " +
+ nc.BASE_DATA.ToString() + ",IPO_FRAME #BASE,POINT2[] "+ "34" + "XP" + Num_E6POS.ToString() + "34" +",TQ_STATE FALSE}");
+ SectOutput(block_dat1, "DECL LDAT LCPDAT" + Num_CPDAT.ToString() + "={VEL " + nc.VEL_CP.ToString() + ",ACC " +
+ (ACC_CP * 100 / DEF_ACC).ToString() + ",APO_DIST " + APO_CDIS.ToString() + ".000,APO_FAC 50.0000,AXIS_VEL " +
+ Vel_PTP.ToString() + ".000,AXIS_ACC " + Acc_PTP.ToString() + ".000,ORI_TYP #VAR,CIRC_TYP #BASE,JERK_FAC 50.0000,GEAR_JERK 50.0000,EXAX_IGN 0}");
+ SectOutput(block_dat1, "");
+ //-------------SRC----------------
+ SectOutput(block_src1, ";FOLD CIRC P" + Num_E6POS.ToString() + " P" + (Num_E6POS+1).ToString() + " CONT Vel=" + nc.VEL_CP.ToString() +
+ " m/s CPDAT" + Num_CPDAT.ToString() + " Tool[" + nc.TOOL_DATA.ToString() + "]:Tool_main Base[" + nc.BASE_DATA.ToString() +
+ "]:Base_main;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VCIRC, %P 1:CIRC, 2:P" + Num_E6POS.ToString() + ", 3:P" +
+ (Num_E6POS+1).ToString() + ", 4:C_DIS C_DIS, 6:" + nc.VEL_CP.ToString() + ", 8:CPDAT" + Num_CPDAT.ToString());
+ SectOutput(block_src1, "$BWDSTART=FALSE");
+ SectOutput(block_src1, "LDAT_ACT=LCPDAT" + Num_CPDAT.ToString());
+ SectOutput(block_src1, "FDAT_ACT=FP" + (Num_E6POS+1).ToString());
+ SectOutput(block_src1, "BAS(#CP_PARAMS," + nc.VEL_CP.ToString() + ")");
+ SectOutput(block_src1, "CIRC XP" + Num_E6POS.ToString() + ", XP" + (Num_E6POS+1).ToString() + " C_DIS C_DIS");
+ SectOutput(block_src1, ";ENDFOLD");
+ SectOutput(block_src1, "");
+ //--------------------------------
+
+ Num_E6POS = Num_E6POS + 1;
+
+ X_prev = nc.X.v; Y_prev = nc.Y.v; Z_prev = nc.Z.v; A_prev = nc.A.v; B_prev = nc.B.v; C_prev = nc.C.v;
+ E1_prev = nc.E1.v; E2_prev = nc.E2.v; E3_prev = nc.E3.v; E4_prev = nc.E4.v; E5_prev = nc.E5.v; E6_prev = nc.E6.v;
+
+ if (Num_CPDAT >= MAX_num_line)
+ {
+ //---.SRC----
+ // ChangeNcFile Current_NAME_file + ".src"
+ SectOutput(block_src1, "END");
+ head_src();
+ OutSection(block_src1);
+ //---.DAT----
+ //ChangeNcFile Current_NAME_file + ".dat"
+ SectOutput(block_dat1, "ENDDAT");
+ head_dat();
+ OutSection(block_dat1);
+ }
+ }
+
+ public override void OnMultiGoto(ICLDMultiGotoCommand cmd, CLDArray cld)
+ {
+ nc.X.v = cld[1]; nc.Y.v = cld[2]; nc.Z.v = cld[3];
+ nc.A.v = cld[4]; nc.B.v = cld[5]; nc.C.v = cld[6];
+ Point_Position("MachineStateFlags","line", cmd);
+
+ RoundXYZABC();
+ Ext_Axis(cmd);
+
+ if (Math.Abs(nc.X.v - X_prev) > 0.001 || Math.Abs(nc.Y.v - Y_prev) > 0.001 || Math.Abs(nc.Z.v - Z_prev) > 0.001 ||
+ Math.Abs(nc.A.v - A_prev) > 0.001 || Math.Abs(nc.B.v - B_prev) > 0.001 || Math.Abs(nc.C.v - C_prev) > 0.001 ||
+ Math.Abs(nc.E1.v - E1_prev) > 0.001 || Math.Abs(nc.E2.v - E2_prev) > 0.001 || Math.Abs(nc.E3.v - E3_prev) > 0.001 ||
+ Math.Abs(nc.E4.v - E4_prev) > 0.001 || Math.Abs(nc.E5.v - E5_prev) > 0.001 || Math.Abs(nc.E6.v - E6_prev) > 0.001)
+ {
+ Num_E6POS = Num_E6POS + 1;
+ Num_CPDAT = Num_CPDAT + 1;
+ //-------------SRC----------------
+ SectOutput(block_src1, ";FOLD LIN P" + Num_E6POS.ToString() + " CONT Vel=" + nc.VEL_CP.ToString() + " m/s CPDAT" +
+ Num_CPDAT.ToString() + " Tool[" + nc.TOOL_DATA.ToString() + "]:Tool_main Base[" + nc.BASE_DATA.ToString() +
+ "]:Base_main;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN, %P 1:LIN, 2:P" + Num_E6POS.ToString() +
+ ", 3:C_DIS C_DIS,5:" + nc.VEL_CP.ToString() + ",7:CPDAT" + Num_CPDAT.ToString());
+ SectOutput(block_src1, "$BWDSTART=FALSE");
+ SectOutput(block_src1, "LDAT_ACT=LCPDAT" + Num_CPDAT.ToString() + "");
+ SectOutput(block_src1, "FDAT_ACT=FP" + Num_E6POS.ToString() + "");
+ SectOutput(block_src1, "BAS(#CP_PARAMS," + nc.VEL_CP.ToString() + ")");
+ SectOutput(block_src1, "LIN XP" + Num_E6POS.ToString() + " C_DIS C_DIS");
+ SectOutput(block_src1, ";ENDFOLD");
+ SectOutput(block_src1, "");
+
+ //------------DAT-----------------
+ SectOutput(block_dat1, "DECL E6POS XP" + Num_E6POS.ToString() + "={X " + nc.X.ToString() + ",Y " + nc.Y.ToString() +
+ ",Z " + nc.Z.ToString() + ",A " + nc.A.ToString() + ",B " + nc.B.ToString() + ",C " + nc.C.ToString() +
+ ",S "+ State.ToString() + ",T " + Turn.ToString()+ ",E1 " + nc.E1.ToString() + ",E2 " + nc.E2.ToString() +
+ ",E3 "+ nc.E3.ToString() +",E4 "+ nc.E4.ToString() + ",E5 " + nc.E5.ToString() +",E6 " + nc.E6.ToString() + "}");
+ SectOutput(block_dat1, "DECL FDAT FP" + Num_E6POS.ToString() + "={TOOL_NO " + nc.TOOL_DATA.ToString() + ",BASE_NO " +
+ nc.BASE_DATA.ToString() + ",IPO_FRAME #BASE,POINT2[] " + "34" + " " + "34" + ",TQ_STATE FALSE}");
+ SectOutput(block_dat1, "DECL LDAT LCPDAT" + Num_CPDAT.ToString() + "={VEL " + nc.VEL_CP.ToString() + ",ACC " +
+ (ACC_CP * 100 / DEF_ACC).ToString() + ",APO_DIST " + APO_CDIS.ToString() + ".00000,APO_FAC 50.0000,AXIS_VEL " +
+ Vel_PTP.ToString() + ".000,AXIS_ACC " + Acc_PTP.ToString() +
+ ".000,ORI_TYP #VAR,CIRC_TYP #BASE,JERK_FAC 50.0000,GEAR_JERK 50.0000,EXAX_IGN 0}");
+ SectOutput(block_dat1, "");
+ //--------------------------------
+
+ X_prev = nc.X.v; Y_prev = nc.Y.v; Z_prev = nc.Z.v; A_prev = nc.A.v; B_prev = nc.B.v; C_prev = nc.C.v;
+ E1_prev = nc.E1.v; E2_prev = nc.E2.v; E3_prev = nc.E3.v; E4_prev = nc.E4.v; E5_prev = nc.E5.v; E6_prev = nc.E6.v;
+
+ if (Num_CPDAT >= MAX_num_line)
+ {
+ //---.SRC----
+ // ChangeNcFile Current_NAME_file + ".src"
+ SectOutput(block_src1, "END");
+ head_src();
+ OutSection(block_src1);
+ // !---.DAT----
+ // ChangeNcFile Current_NAME_file + ".dat"
+ SectOutput(block_dat1, "ENDDAT");
+ head_dat();
+ OutSection(block_dat1);
+ }
+ }
+ }
+
+ public override void OnOrigin(ICLDOriginCommand cmd, CLDArray cld)
+ {
+ if (cmd.Flt["CSNumber"] >= 53) nc.BASE_DATA.v = cmd.Flt["CSNumber"] - 53;
+ else nc.BASE_DATA.v = cmd.Flt["CSNumber"];
+
+ if (nc.BASE_DATA.v != nc.BASE_DATA.v0)
+ {
+ if (cld[1] == 0 && cld[2] == 0 && cld[3] == 0 && cld[6] == 0 && cld[7] == 0 && cld[8] == 0)
+ {
+ SectOutput(block_src1, "$BASE = $WORLD");
+ nc.BASE_DATA.v = 0;
+ nc.BASE_DATA.v0 = nc.BASE_DATA.v;
+ }
+ else SectOutput(block_src1, "$BASE=BASE_DATA[" + nc.BASE_DATA.ToString() + "]");
+ }
+ }
+
+ public override void OnPartNo(ICLDPartNoCommand cmd, CLDArray cld)
+ {
+ MaxReal = 9999999;
+ SectInit();
+
+ Vel_PTP = 20;
+ Acc_PTP = 20;
+ APO_CDIS = 2;
+ APO_CPT = 3;
+ ACC_CP = 1;
+ DEF_ACC = 2.3;
+
+ MAX_num_line = 99999999;
+
+
+ // Big_small_file();
+ // if (Big_small_file == 1)
+ // {
+ // Current_NAME_file = UPCASE(NCName$) + current_num_file.ToString();
+ // }
+ // else Current_NAME_file = UPCASE(NCName$);
+ }
+
+ public override void OnPhysicGoto(ICLDPhysicGotoCommand cmd, CLDArray cld)
+ {
+ PTP_main_axes = 0;
+
+ if (cmd.Ptr["Axes(AxisA1Pos)"] != null) PTP_main_axes = PTP_main_axes + 1;
+ if (cmd.Ptr["Axes(AxisA2Pos)"] != null) PTP_main_axes = PTP_main_axes + 1;
+ if (cmd.Ptr["Axes(AxisA3Pos)"] != null) PTP_main_axes = PTP_main_axes + 1;
+ if (cmd.Ptr["Axes(AxisA4Pos)"] != null) PTP_main_axes = PTP_main_axes + 1;
+ if (cmd.Ptr["Axes(AxisA5Pos)"] != null) PTP_main_axes = PTP_main_axes + 1;
+ if (cmd.Ptr["Axes(AxisA6Pos)"] != null) PTP_main_axes = PTP_main_axes + 1;
+ A1_A6(11, cld[10], cld);
+
+ Ext_Axis(cmd);
+
+ if (PTP_main_axes > 0)
+ {
+ //-------------SRC----------------
+ Num_E6POS = Num_E6POS + 1;
+ Num_PPDAT = Num_PPDAT + 1;
+
+ SectOutput(block_src1, ";FOLD PTP P" + Num_E6POS.ToString() + " Vel=" + Vel_PTP.ToString() + " % PDAT" +
+ Num_PPDAT.ToString() + " Tool[" + nc.TOOL_DATA.ToString() + "]:Tool_main Base[" + nc.BASE_DATA.ToString() +
+ "]:Base_main;%{PE};%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P" +
+ Num_E6POS.ToString() + ", 3:, 5:" + Vel_PTP.ToString() + ", 7:PDAT" + Num_PPDAT.ToString());
+ SectOutput(block_src1, "$BWDSTART=FALSE");
+ SectOutput(block_src1, "PDAT_ACT=PPDAT" + Num_PPDAT.ToString());
+ SectOutput(block_src1, "FDAT_ACT=FP" + Num_E6POS.ToString());
+ SectOutput(block_src1, "BAS(#PTP_PARAMS," + Vel_PTP.ToString() + ")");
+ SectOutput(block_src1, "PTP XP" + Num_E6POS.ToString());
+ SectOutput(block_src1, ";ENDFOLD");
+ SectOutput(block_src1, "");
+
+ //------------DAT-----------------
+ SectOutput(block_dat1, "DECL E6AXIS XP" + Num_E6POS.ToString() + "={A1 " + nc.A1.ToString() + ",A2 " + nc.A2.ToString() +
+ ",A3 " + nc.A3.ToString() + ",A4 " + nc.A4.ToString() + ",A5 " + nc.A5.ToString() + ",A6 " + nc.A6.ToString() +
+ ",E1 " + nc.E1.ToString() + ",E2 " + nc.E2.ToString() + ",E3 " + nc.E3.ToString() + ",E4 " + nc.E4.ToString() +
+ ",E5 " + nc.E5.ToString() + ",E6 " + nc.E6.ToString() + "}");
+ SectOutput(block_dat1, "DECL FDAT FP" + Num_E6POS.ToString() + "={TOOL_NO " + nc.TOOL_DATA.ToString() + ",BASE_NO " +
+ nc.BASE_DATA.ToString() + ",IPO_FRAME #BASE,POINT2[] " + "34" + " " + "34" + ",TQ_STATE FALSE}");
+ SectOutput(block_dat1, "DECL PDAT PPDAT" + Num_PPDAT.ToString() + "={VEL " + Vel_PTP.ToString() + ",ACC " +
+ Acc_PTP.ToString() + ",APO_DIST " + APO_CDIS.ToString() + ".0,APO_MODE #CDIS,GEAR_JERK 50.0000,EXAX_IGN 0}");
+ SectOutput(block_dat1, "");
+ }
+ }
+
+ public override void OnPPFun(ICLDPPFunCommand cmd, CLDArray cld)
+ {
+ if (cld[1] == 58)
+ {
+ if (cmd.Str["PPFun(TechInfo).Tool.RevolverID"].IndexOf("ExtTool") != 0) WorkpieceHolder = 1;
+ if (cmd.Str["PPFun(TechInfo).Tool.RevolverID"].IndexOf("TableTool") != 0) WorkpieceHolder = 1;
+ }
+ }
+
+ public override void OnRapid(ICLDRapidCommand cmd, CLDArray cld)
+ {
+ nc.VEL_CP.v = cld[1] / 1000;
+ nc.VEL_CP.v = nc.VEL_CP.v / 60;
+ outstr = nc.VEL_CP.ToString();
+ if (outstr.Length > 0) SectOutput(block_src1, outstr+"; m/sec; " + (nc.VEL_CP.v * 60 * 1000).ToString() + " mm/min");
+ }
+
+ public void Big_small_file()
+ {
+
+ }
+
+ public void SectInit()
+ {
+ block_src1 = 1;
+ block_src2 = 2;
+ block_dat1 = 3;
+ block_dat2 = 4;
+ for (int i = 1; i <= 4; i++){
+ ResetSection(i);
+ }
+ }
+
+ public void ResetSection(int SectID)
+ {
+ SectLen[SectID] = 0;
+ }
+
+ public void RoundXYZABC()
+ {
+ if (nc.X.v > -0.001 && nc.X.v < 0) nc.X.v = 0;
+ if (nc.Y.v > -0.001 && nc.Y.v < 0) nc.Y.v = 0;
+ if (nc.Z.v > -0.001 && nc.Z.v < 0) nc.Z.v = 0;
+ if (nc.A.v > -0.001 && nc.A.v < 0) nc.A.v = 0;
+ if (nc.B.v > -0.001 && nc.B.v < 0) nc.B.v = 0;
+ if (nc.C.v > -0.001 && nc.C.v < 0) nc.C.v = 0;
+ }
+
+ public void Point_Position(string prm, string move_type, ICLDCommand cmd)
+ {
+ int ElbowFlag, fBase, fElbow, fWrist;
+ ElbowFlag = cmd.Int[prm];
+
+ //-----State------
+ if (ElbowFlag == 1 || ElbowFlag == 3 || ElbowFlag == 5) fWrist = 1;
+ else fWrist = 0;
+ if (ElbowFlag == 2 || ElbowFlag == 3 || ElbowFlag == 6 || ElbowFlag == 7) fElbow = 0;
+ else fElbow = 1;
+ if (ElbowFlag >= 4) fBase = 1;
+ else fBase = 0;
+ State = fBase + 2*fElbow + 4*fWrist;
+
+ //----Turn------
+ if (move_type == "line" || move_type == "ptp")
+ {
+ if (cmd.Ptr["Axes(AxisA1Pos)"] is not null) nc.A1.v = cmd.Flt["Axes(AxisA1Pos).Value"];
+ if (cmd.Ptr["Axes(AxisA2Pos)"] is not null) nc.A2.v = cmd.Flt["Axes(AxisA2Pos).Value"];
+ if (cmd.Ptr["Axes(AxisA3Pos)"] is not null) nc.A3.v = cmd.Flt["Axes(AxisA3Pos).Value"];
+ if (cmd.Ptr["Axes(AxisA4Pos)"] is not null) nc.A4.v = cmd.Flt["Axes(AxisA4Pos).Value"];
+ if (cmd.Ptr["Axes(AxisA5Pos)"] is not null) nc.A5.v = cmd.Flt["Axes(AxisA5Pos).Value"];
+ if (cmd.Ptr["Axes(AxisA6Pos)"] is not null) nc.A6.v = cmd.Flt["Axes(AxisA6Pos).Value"];
+ }
+ else if (move_type == "circ1")
+ {
+ if (cmd.Ptr["MidPos.Axes(AxisA1Pos)"] is not null) nc.A1.v = cmd.Flt["MidPos.Axes(AxisA1Pos).Value"];
+ if (cmd.Ptr["MidPos.Axes(AxisA2Pos)"] is not null) nc.A2.v = cmd.Flt["MidPos.Axes(AxisA2Pos).Value"];
+ if (cmd.Ptr["MidPos.Axes(AxisA3Pos)"] is not null) nc.A3.v = cmd.Flt["MidPos.Axes(AxisA3Pos).Value"];
+ if (cmd.Ptr["MidPos.Axes(AxisA4Pos)"] is not null) nc.A4.v = cmd.Flt["MidPos.Axes(AxisA4Pos).Value"];
+ if (cmd.Ptr["MidPos.Axes(AxisA5Pos)"] is not null) nc.A5.v = cmd.Flt["MidPos.Axes(AxisA5Pos).Value"];
+ if (cmd.Ptr["MidPos.Axes(AxisA6Pos)"] is not null) nc.A6.v = cmd.Flt["MidPos.Axes(AxisA6Pos).Value"];
+ }
+ else if (move_type == "circ2")
+ {
+ if (cmd.Ptr["EndPos.Axes(AxisA1Pos)"] is not null) nc.A1.v = cmd.Flt["EndPos.Axes(AxisA1Pos).Value"];
+ if (cmd.Ptr["EndPos.Axes(AxisA2Pos)"] is not null) nc.A2.v = cmd.Flt["EndPos.Axes(AxisA2Pos).Value"];
+ if (cmd.Ptr["EndPos.Axes(AxisA3Pos)"] is not null) nc.A3.v = cmd.Flt["EndPos.Axes(AxisA3Pos).Value"];
+ if (cmd.Ptr["EndPos.Axes(AxisA4Pos)"] is not null) nc.A4.v = cmd.Flt["EndPos.Axes(AxisA4Pos).Value"];
+ if (cmd.Ptr["EndPos.Axes(AxisA5Pos)"] is not null) nc.A5.v = cmd.Flt["EndPos.Axes(AxisA5Pos).Value"];
+ if (cmd.Ptr["EndPos.Axes(AxisA6Pos)"] is not null) nc.A6.v = cmd.Flt["EndPos.Axes(AxisA6Pos).Value"];
+ }
+
+ nc.A1.v0 = nc.A1.v; nc.A2.v0 = nc.A2.v; nc.A3.v0 = nc.A3.v; nc.A4.v0 = nc.A4.v; nc.A5.v0 = nc.A5.v; nc.A6.v0 = nc.A6.v;
+
+ Turn = 0;
+ if (nc.A1.v < 0) Turn = Turn + 1;
+ if (nc.A2.v < 0) Turn = Turn + 2;
+ if (nc.A3.v < 0) Turn = Turn + 4;
+ if (nc.A4.v < 0) Turn = Turn + 8;
+ if (nc.A5.v < 0) Turn = Turn + 16;
+ if (nc.A6.v < 0) Turn = Turn + 32;
+ }
+
+ public void if_first_point()
+ {
+ Num_E6POS = Num_E6POS + 1;
+ Num_CPDAT = Num_CPDAT + 1;
+ //-------------SRC----------------
+ SectOutput(block_src1, ";FOLD LIN P" + Num_E6POS.ToString() + " CONT Vel=" + nc.VEL_CP.ToString() + " m/s CPDAT" +
+ Num_CPDAT.ToString() + " Tool[" + nc.TOOL_DATA.ToString() + "]:Tool_main Base[" +
+ nc.BASE_DATA.ToString() + "]:Base_main;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN, %P 1:LIN, 2:P" +
+ Num_E6POS.ToString() + ", 3:C_DIS C_DIS,5:" + nc.VEL_CP.ToString() + ",7:CPDAT" + Num_CPDAT.ToString());
+ SectOutput(block_src1, "$BWDSTART=FALSE");
+ SectOutput(block_src1, "LDAT_ACT=LCPDAT" + Num_CPDAT.ToString() + "");
+ SectOutput(block_src1, "FDAT_ACT=FP" + Num_E6POS.ToString() + "");
+ SectOutput(block_src1, "BAS(#CP_PARAMS," + nc.VEL_CP.ToString() + ")");
+ SectOutput(block_src1, "LIN XP" + Num_E6POS.ToString() + " C_DIS C_DIS");
+ SectOutput(block_src1, ";ENDFOLD");
+ SectOutput(block_src1, "");
+ //------------DAT-----------------
+ SectOutput(block_dat1, "DECL E6POS XP" + Num_E6POS.ToString() + "={X " + nc.X.ToString() + ",Y " + nc.Y.ToString() +
+ ",Z " + nc.Z.ToString() + ",A " + nc.A.ToString() + ",B " + nc.B.ToString() + ",C " + nc.C.ToString() +
+ ",S " + State.ToString() + ",T " + Turn.ToString() + ",E1 " + nc.E1.ToString() + ",E2 " + nc.E2.ToString() +
+ ",E3 " + nc.E3.ToString() + ",E4 " + nc.E4.ToString() + ",E5 " + nc.E5.ToString() + ",E6 " + nc.E6.ToString() + "}");
+ SectOutput(block_dat1, "DECL FDAT FP" + Num_E6POS.ToString() + "={TOOL_NO " + nc.TOOL_DATA.ToString() + ",BASE_NO " +
+ nc.BASE_DATA.ToString() + ",IPO_FRAME #BASE,POINT2[] " + "34" + " " + "34" + ",TQ_STATE FALSE}");
+ SectOutput(block_dat1, "DECL LDAT LCPDAT" + Num_CPDAT.ToString() + "={VEL "+ nc.VEL_CP.ToString() + ",ACC " +
+ (ACC_CP * 100 / DEF_ACC).ToString() + ",APO_DIST " + APO_CDIS.ToString() + ".00000,APO_FAC 50.0000,AXIS_VEL " +
+ Vel_PTP.ToString() + ".000,AXIS_ACC " + Acc_PTP.ToString() + ".000,ORI_TYP #VAR,CIRC_TYP #BASE,JERK_FAC 50.0000,GEAR_JERK 50.0000,EXAX_IGN 0}");
+ SectOutput(block_dat1, "");
+ }
+
+ public void SectOutput(int SectID, string NCString)
+ {
+ switch (SectID)
+ {
+ case 1:
+ PrivateOutLineToSect(NCString, SectID, Sect1);
+ break;
+ case 2:
+ PrivateOutLineToSect(NCString, SectID, Sect2);
+ break;
+ case 3:
+ PrivateOutLineToSect(NCString, SectID, Sect3);
+ break;
+ case 4:
+ PrivateOutLineToSect(NCString, SectID, Sect4);
+ break;
+ }
+ }
+
+ public void PrivateOutLineToSect(string NCString, int SectID, string[] Sect)
+ {
+ int tmp = SectLen[SectID] + 1;
+ SectLen[SectID] = tmp;
+ Sect[tmp] = NCString;
+ }
+
+ public void head_src()
+ {
+ string begin_src_file = $@"DEF {Current_NAME_file} ()
+decl int i
+GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
+INTERRUPT ON 3
+;global Interrupt Decl 10 when ParStopAndRetract == 1 Do InterruptProg10()
+;ParStopAndRetract=0
+;INTERRUPT ON 10
+BAS (#INITMOV,0)""
+;dry_run=1""
+FOR I=1 TO 6
+ $VEL_AXIS[I]="" {Vel_PTP.ToString()}
+ $ACC_AXIS[I]="" {Acc_PTP.ToString()}
+ENDFOR
+$ADVANCE=5
+;--SET LIN AND ARC MOTION VARIABLES--
+$VEL.CP=0.05 ; m/s
+$ACC.CP="" {ACC_CP.ToString()} ; m/s^2
+;REAL DEF_ACC_CP="" {DEF_ACC.ToString()}
+$VEL.ORI1=200 ; grad/s
+$VEL.ORI2=200 ; grad/s
+$ACC.ORI1=200 ; grad/s^2
+$ACC.ORI2=200 ; grad/s^2
+; --approximation--
+$APO.CDIS = "" {APO_CDIS.ToString()} "".0 ; mm, C_DIS
+$APO.CPTP = "" {APO_CPT.ToString()} "" ; %, C_PTP
+$APO.CVEL = 50 ; %, c_vel
+; SET POSITIONING CRITERIA
+$ORI_TYPE = #VAR; #VAR, #CONSTANT, #JOINT
+$CIRC_TYPE = #base; #PATH, #BASE""";
+
+ nc.Output(begin_src_file);
+ }
+
+ public void OutSection(int SectID)
+ {
+ switch (SectID)
+ {
+ case 1:
+ PrivateOutSect(SectID, Sect1);
+ break;
+ case 2:
+ PrivateOutSect(SectID, Sect2);
+ break;
+ case 3:
+ PrivateOutSect(SectID, Sect3);
+ break;
+ case 4:
+ PrivateOutSect(SectID, Sect4);
+ break;
+ }
+ }
+
+ public void PrivateOutSect(int SectID, string[] Sect)
+ {
+ int i;
+ for (i = 1; i <= SectLen[SectID]; i++)
+ {
+ nc.WriteLine(Sect[i]);
+ Sect[i] = "";
+ }
+ }
+
+ public void head_dat()
+ {
+ string begin_dat_file = $@"&ACCESS RVP
+&REL 43
+&PARAM EDITMASK = *
+&PARAM TEMPLATE = C:\\KRC\\Roboter\\Template\vorgabe
+DEFDAT {Current_NAME_file}
+;FOLD EXTERNAL DECLARATIONS;%{{PE}}%MKUKATPBASIS,%CEXT,%VCOMMON,%P
+;FOLD BASISTECH EXT;%{{PE}}%MKUKATPBASIS,%CEXT,%VEXT,%P
+EXT BAS (BAS_COMMAND :IN,REAL :IN )
+DECL INT SUCCESS
+;ENDFOLD (BASISTECH EXT)
+;FOLD USER EXT;%{{E}}%MKUKATPUSER,%CEXT,%VEXT,%P
+;Make your modifications here
+
+;ENDFOLD (USER EXT)
+;ENDFOLD (EXTERNAL DECLARATIONS)
+;DECL BASIS_SUGG_T LAST_BASIS={{POINT1[] ""P53 "",POINT2[] ""P53 "",CP_PARAMS[] ""CPDAT41 "",PTP_PARAMS[] ""PDAT4 "",CONT[] ""C_DIS C_DIS "",CP_VEL[] ""0.02 "",PTP_VEL[] ""50 "",SYNC_PARAMS[] ""SYNCDAT "",SPL_NAME[] ""S0 "",A_PARAMS[] ""ADAT0 ""}}";
+
+ nc.Output(begin_dat_file);
+ }
+
+ public void A1_A6(int StartCLDIndex, int AxesCount, CLDArray cld)
+ {
+ int axi, cli;
+ for (axi = 1; axi <= AxesCount; axi++)
+ {
+ cli = StartCLDIndex + (axi - 1) * 2;
+ if (cld[cli] == AIndex[0]) nc.A1.v = cld[cli + 1];
+ if (cld[cli] == AIndex[1]) nc.A2.v = cld[cli + 1];
+ if (cld[cli] == AIndex[2]) nc.A3.v = cld[cli + 1];
+ if (cld[cli] == AIndex[3]) nc.A4.v = cld[cli + 1];
+ if (cld[cli] == AIndex[4]) nc.A5.v = cld[cli + 1];
+ if (cld[cli] == AIndex[5]) nc.A6.v = cld[cli + 1];
+ }
+ }
+
+ public void Ext_Axis(ICLDCommand cmd)
+ {
+ E1_prev = nc.E1.v; E2_prev = nc.E2.v; E3_prev = nc.E3.v; E4_prev = nc.E4.v; E5_prev = nc.E5.v; E6_prev = nc.E6.v;
+
+ // ===E1====
+ if (cmd.Ptr["Axes(ExtAxis1Pos)"] is not null)
+ {
+ nc.E1.v = cmd.Flt["Axes(ExtAxis1Pos).Value"];
+ nc.E1.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ if (cmd.Ptr["MidPos.Axes(ExtAxis1Pos)"] is not null && mid_end == 1)
+ {
+ nc.E1.v = cmd.Flt["MidPos.Axes(ExtAxis1Pos).Value"];
+ nc.E1.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ if (cmd.Ptr["EndPos.Axes(ExtAxis1Pos)"] is not null && mid_end == 2)
+ {
+ nc.E1.v = cmd.Flt["EndPos.Axes(ExtAxis1Pos).Value"];
+ nc.E1.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ // ===E2====
+ if (cmd.Ptr["Axes(ExtAxis2Pos)"] is not null)
+ {
+ nc.E2.v = cmd.Flt["Axes(ExtAxis2Pos).Value"];
+ nc.E2.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ if (cmd.Ptr["MidPos.Axes(ExtAxis2Pos)"] is not null && mid_end == 1)
+ {
+ nc.E2.v = cmd.Flt["MidPos.Axes(ExtAxis2Pos).Value"];
+ nc.E2.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ if (cmd.Ptr["EndPos.Axes(ExtAxis2Pos)"] is not null && mid_end == 2)
+ {
+ nc.E2.v = cmd.Flt["EndPos.Axes(ExtAxis2Pos).Value"];
+ nc.E2.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ // ===E3====
+ if (cmd.Ptr["Axes(ExtAxis3Pos)"] is not null)
+ {
+ nc.E3.v = cmd.Flt["Axes(ExtAxis3Pos).Value"];
+ nc.E3.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ if (cmd.Ptr["MidPos.Axes(ExtAxis3Pos)"] is not null && mid_end == 1)
+ {
+ nc.E3.v = cmd.Flt["MidPos.Axes(ExtAxis3Pos).Value"];
+ nc.E3.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ if (cmd.Ptr["EndPos.Axes(ExtAxis3Pos)"] is not null && mid_end == 2)
+ {
+ nc.E3.v = cmd.Flt["EndPos.Axes(ExtAxis3Pos).Value"];
+ nc.E3.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ // ===E4====
+ if (cmd.Ptr["Axes(ExtAxis4Pos)"] is not null)
+ {
+ nc.E4.v = cmd.Flt["Axes(ExtAxis4Pos).Value"];
+ nc.E4.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ if (cmd.Ptr["MidPos.Axes(ExtAxis4Pos)"] is not null && mid_end == 1)
+ {
+ nc.E4.v = cmd.Flt["MidPos.Axes(ExtAxis4Pos).Value"];
+ nc.E4.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ if (cmd.Ptr["EndPos.Axes(ExtAxis4Pos)"] is not null && mid_end == 2)
+ {
+ nc.E4.v = cmd.Flt["EndPos.Axes(ExtAxis4Pos).Value"];
+ nc.E4.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ // ===E5====
+ if (cmd.Ptr["Axes(ExtAxis5Pos)"] is not null)
+ {
+ nc.E5.v = cmd.Flt["Axes(ExtAxis5Pos).Value"];
+ nc.E5.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ if (cmd.Ptr["MidPos.Axes(ExtAxis5Pos)"] is not null && mid_end == 1)
+ {
+ nc.E5.v = cmd.Flt["MidPos.Axes(ExtAxis5Pos).Value"];
+ nc.E5.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ if (cmd.Ptr["EndPos.Axes(ExtAxis5Pos)"] is not null && mid_end == 2)
+ {
+ nc.E5.v = cmd.Flt["EndPos.Axes(ExtAxis5Pos).Value"];
+ nc.E5.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ // ===E6====
+ if (cmd.Ptr["Axes(ExtAxis6Pos)"] is not null)
+ {
+ nc.E6.v = cmd.Flt["Axes(ExtAxis6Pos).Value"];
+ nc.E6.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ if (cmd.Ptr["MidPos.Axes(ExtAxis6Pos)"] is not null && mid_end == 1)
+ {
+ nc.E6.v = cmd.Flt["MidPos.Axes(ExtAxis6Pos).Value"];
+ nc.E6.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+
+ if (cmd.Ptr["EndPos.Axes(ExtAxis6Pos)"] is not null && mid_end == 2)
+ {
+ nc.E6.v = cmd.Flt["EndPos.Axes(ExtAxis6Pos).Value"];
+ nc.E6.v0 = MaxReal;
+ PTP_main_axes = PTP_main_axes + 1;
+ }
+ }
+
}
-}
+}
\ No newline at end of file
diff --git a/Distributive/Robots/Kuka robot (src_dat)_DN/Registers.cs b/Distributive/Robots/Kuka robot (src_dat)_DN/Registers.cs
index 9fe19b1..6c03ab6 100644
--- a/Distributive/Robots/Kuka robot (src_dat)_DN/Registers.cs
+++ b/Distributive/Robots/Kuka robot (src_dat)_DN/Registers.cs
@@ -9,18 +9,75 @@ public partial class NCFile : TTextNCFile
///The block of the nc-file is an ordered list of nc-words
public NCBlock Block;
///X coordinate of the movement
- public NumericNCWord X = new NumericNCWord("X{-#####!####}", 0);
+ public NumericNCWord X = new NumericNCWord("X @{-#####!000}", 0);
///Y coordinate of the movement
- public NumericNCWord Y = new NumericNCWord("Y{-#####!####}", 0);
+ public NumericNCWord Y = new NumericNCWord(",Y @{-#####!000}", 0);
///
- public NumericNCWord Z = new NumericNCWord("Z{-#####!####}", 0);
+ public NumericNCWord Z = new NumericNCWord(",Z @{-#####!000}", 0);
+ ///
+ public NumericNCWord A = new NumericNCWord(",A @{-#####!000}", 0);
+ ///
+ public NumericNCWord B = new NumericNCWord(",B @{-#####!000}", 0);
+ ///
+ public NumericNCWord C = new NumericNCWord(",C @{-#####!000}", 0);
+ ///6
+ public NumericNCWord A1 = new NumericNCWord(" A1 @{-####!###}", 0);
+ ///
+ public NumericNCWord A2 = new NumericNCWord(",A2 @{-####!000}", 0);
+ ///
+ public NumericNCWord A3 = new NumericNCWord(",A3 @{-####!000}", 0);
+ ///
+ public NumericNCWord A4 = new NumericNCWord(",A4 @{-####!000}", 0);
+ ///
+ public NumericNCWord A5 = new NumericNCWord(",A5 @{-####!000}", 0);
+ ///
+ public NumericNCWord A6 = new NumericNCWord(",A6 @{-####!000}", 0);
+ ///
+ public NumericNCWord E1 = new NumericNCWord(",E1 @{-######!000}", 0);
+ ///
+ public NumericNCWord E2 = new NumericNCWord(",E2 @{-######!000}", 0);
+ ///
+ public NumericNCWord E3 = new NumericNCWord(",E3 @{-######!000}", 0);
+ ///
+ public NumericNCWord E4 = new NumericNCWord(",E4 @{-######!000}", 0);
+ ///
+ public NumericNCWord E5 = new NumericNCWord(",E5 @{-######!000}", 0);
+ ///
+ public NumericNCWord E6 = new NumericNCWord(",E6 @{-######!000}", 0);
+ ///
+ public NumericNCWord VEL_CP = new NumericNCWord("$VEL.CP={-###.###}", 0);
+ ///
+ public NumericNCWord TOOL_DATA = new NumericNCWord("$TOOL=TOOL_DATA[@]{##_##}", 0);
+ ///
+ public NumericNCWord BASE_DATA = new NumericNCWord("$BASE=BASE_DATA[@]{##_##}", 0);
+ ///
+ public NumericNCWord v_p = new NumericNCWord("{-######!###}", 0);
public NCFile(): base()
{
Block = new NCBlock(
this,
X,
Y,
- Z);
+ Z,
+ A,
+ B,
+ C,
+ A1,
+ A2,
+ A3,
+ A4,
+ A5,
+ A6,
+ E1,
+ E2,
+ E3,
+ E4,
+ E5,
+ E6,
+ VEL_CP,
+ TOOL_DATA,
+ BASE_DATA,
+ v_p);
OnInit();
}
}
From 5ac506c1c059808e1a227c314f1928ec68cb5f87 Mon Sep 17 00:00:00 2001
From: ArtemKhamzin <86554484+ArtemKhamzin@users.noreply.github.com>
Date: Sun, 7 Aug 2022 21:06:45 +0300
Subject: [PATCH 3/6] some refactor
---
Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs b/Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs
index 57f0932..023ea99 100644
--- a/Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs
+++ b/Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs
@@ -155,7 +155,7 @@ public override void OnMultiArc(ICLDMultiArcCommand cmd, CLDArray cld)
nc.C.ToString() + ",S " + State.ToString() + ",T " + Turn.ToString() + ",E1 " + nc.E1.ToString() +
",E2 " + nc.E2.ToString() + ",E3 " + nc.E3.ToString() + ",E4 " + nc.E4.ToString() + ",E5 " + nc.E5.ToString() +
",E6 " + nc.E6.ToString() + "}");
- SectOutput(block_dat1, "DECL FDAT FP" + Num_E6POS+1.ToString() + "={TOOL_NO " + nc.TOOL_DATA.ToString() + ",BASE_NO " +
+ SectOutput(block_dat1, "DECL FDAT FP" + (Num_E6POS + 1).ToString() + "={TOOL_NO " + nc.TOOL_DATA.ToString() + ",BASE_NO " +
nc.BASE_DATA.ToString() + ",IPO_FRAME #BASE,POINT2[] "+ "34" + "XP" + Num_E6POS.ToString() + "34" +",TQ_STATE FALSE}");
SectOutput(block_dat1, "DECL LDAT LCPDAT" + Num_CPDAT.ToString() + "={VEL " + nc.VEL_CP.ToString() + ",ACC " +
(ACC_CP * 100 / DEF_ACC).ToString() + ",APO_DIST " + APO_CDIS.ToString() + ".000,APO_FAC 50.0000,AXIS_VEL " +
From 328242bb0d9e704f8eed66c39ad3abe28baf8192 Mon Sep 17 00:00:00 2001
From: cepera
Date: Tue, 9 Aug 2022 00:56:22 +0300
Subject: [PATCH 4/6] =?UTF-8?q?=D0=92=20=D1=81=D1=82=D0=B0=D1=80=D0=BE?=
=?UTF-8?q?=D0=BC=20=D0=BF=D0=BE=D1=81=D1=82=D0=BF=D1=80=D0=BE=D1=86=D0=B5?=
=?UTF-8?q?=D1=81=D1=81=D0=BE=D1=80=D0=B5=20@=20=D0=BE=D0=B7=D0=BD=D0=B0?=
=?UTF-8?q?=D1=87=D0=B0=D0=B5=D1=82=20=D0=BA=D0=B0=D0=BA=20=D1=80=D0=B0?=
=?UTF-8?q?=D0=B7=20=D1=82=D0=BE=20=D1=87=D1=82=D0=BE=20=D0=B2=20=D0=BD?=
=?UTF-8?q?=D0=BE=D0=B2=D0=BE=D0=B9=20=D0=B5=D1=81=D1=82=D1=8C=20=D0=B2?=
=?UTF-8?q?=D1=8B=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=B5?=
=?UTF-8?q?=D0=B6=D0=B4=D1=83=20=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=BD=D1=8B?=
=?UTF-8?q?=D0=BC=D0=B8=20=D1=81=D0=BA=D0=BE=D0=B1=D0=BA=D0=B0=D0=BC=D0=B8?=
=?UTF-8?q?=20{}?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Метод ToString() работает для регистров не так как для обычных чисел. Он превращает значение в строку по правилам форматирования самого регистра.
---
.../Kuka robot (src_dat)_DN/Registers.cs | 40 +++++++++----------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/Distributive/Robots/Kuka robot (src_dat)_DN/Registers.cs b/Distributive/Robots/Kuka robot (src_dat)_DN/Registers.cs
index 6c03ab6..ee3e647 100644
--- a/Distributive/Robots/Kuka robot (src_dat)_DN/Registers.cs
+++ b/Distributive/Robots/Kuka robot (src_dat)_DN/Registers.cs
@@ -9,47 +9,47 @@ public partial class NCFile : TTextNCFile
///The block of the nc-file is an ordered list of nc-words
public NCBlock Block;
///X coordinate of the movement
- public NumericNCWord X = new NumericNCWord("X @{-#####!000}", 0);
+ public NumericNCWord X = new NumericNCWord("X {-#####!000}", 0);
///Y coordinate of the movement
- public NumericNCWord Y = new NumericNCWord(",Y @{-#####!000}", 0);
+ public NumericNCWord Y = new NumericNCWord(",Y {-#####!000}", 0);
///
- public NumericNCWord Z = new NumericNCWord(",Z @{-#####!000}", 0);
+ public NumericNCWord Z = new NumericNCWord(",Z {-#####!000}", 0);
///
- public NumericNCWord A = new NumericNCWord(",A @{-#####!000}", 0);
+ public NumericNCWord A = new NumericNCWord(",A {-#####!000}", 0);
///
- public NumericNCWord B = new NumericNCWord(",B @{-#####!000}", 0);
+ public NumericNCWord B = new NumericNCWord(",B {-#####!000}", 0);
///
- public NumericNCWord C = new NumericNCWord(",C @{-#####!000}", 0);
+ public NumericNCWord C = new NumericNCWord(",C {-#####!000}", 0);
///6
- public NumericNCWord A1 = new NumericNCWord(" A1 @{-####!###}", 0);
+ public NumericNCWord A1 = new NumericNCWord(" A1 {-####!###}", 0);
///
- public NumericNCWord A2 = new NumericNCWord(",A2 @{-####!000}", 0);
+ public NumericNCWord A2 = new NumericNCWord(",A2 {-####!000}", 0);
///
- public NumericNCWord A3 = new NumericNCWord(",A3 @{-####!000}", 0);
+ public NumericNCWord A3 = new NumericNCWord(",A3 {-####!000}", 0);
///
- public NumericNCWord A4 = new NumericNCWord(",A4 @{-####!000}", 0);
+ public NumericNCWord A4 = new NumericNCWord(",A4 {-####!000}", 0);
///
- public NumericNCWord A5 = new NumericNCWord(",A5 @{-####!000}", 0);
+ public NumericNCWord A5 = new NumericNCWord(",A5 {-####!000}", 0);
///
- public NumericNCWord A6 = new NumericNCWord(",A6 @{-####!000}", 0);
+ public NumericNCWord A6 = new NumericNCWord(",A6 {-####!000}", 0);
///
- public NumericNCWord E1 = new NumericNCWord(",E1 @{-######!000}", 0);
+ public NumericNCWord E1 = new NumericNCWord(",E1 {-######!000}", 0);
///
- public NumericNCWord E2 = new NumericNCWord(",E2 @{-######!000}", 0);
+ public NumericNCWord E2 = new NumericNCWord(",E2 {-######!000}", 0);
///
- public NumericNCWord E3 = new NumericNCWord(",E3 @{-######!000}", 0);
+ public NumericNCWord E3 = new NumericNCWord(",E3 {-######!000}", 0);
///
- public NumericNCWord E4 = new NumericNCWord(",E4 @{-######!000}", 0);
+ public NumericNCWord E4 = new NumericNCWord(",E4 {-######!000}", 0);
///
- public NumericNCWord E5 = new NumericNCWord(",E5 @{-######!000}", 0);
+ public NumericNCWord E5 = new NumericNCWord(",E5 {-######!000}", 0);
///
- public NumericNCWord E6 = new NumericNCWord(",E6 @{-######!000}", 0);
+ public NumericNCWord E6 = new NumericNCWord(",E6 {-######!000}", 0);
///
public NumericNCWord VEL_CP = new NumericNCWord("$VEL.CP={-###.###}", 0);
///
- public NumericNCWord TOOL_DATA = new NumericNCWord("$TOOL=TOOL_DATA[@]{##_##}", 0);
+ public NumericNCWord TOOL_DATA = new NumericNCWord("$TOOL=TOOL_DATA[{##_##}]", 0);
///
- public NumericNCWord BASE_DATA = new NumericNCWord("$BASE=BASE_DATA[@]{##_##}", 0);
+ public NumericNCWord BASE_DATA = new NumericNCWord("$BASE=BASE_DATA[{##_##}]", 0);
///
public NumericNCWord v_p = new NumericNCWord("{-######!###}", 0);
public NCFile(): base()
From a21226eaba43b84742485d4a5eab77f003053232 Mon Sep 17 00:00:00 2001
From: cepera
Date: Tue, 9 Aug 2022 00:57:53 +0300
Subject: [PATCH 5/6] =?UTF-8?q?=D0=9D=D0=B5=D0=BA=D0=BE=D1=82=D0=BE=D1=80?=
=?UTF-8?q?=D1=8B=D0=B5=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?=
=?UTF-8?q?=D1=8B,=20=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D1=8B=D0=B5=20=D0=B1?=
=?UTF-8?q?=D1=8B=D0=BB=D0=B8=20=D0=B7=D0=B0=D0=B1=D0=B8=D1=82=D1=8B=20?=
=?UTF-8?q?=D0=B6=D0=B5=D1=81=D1=82=D0=BA=D0=BE=20=D0=BA=D0=BE=D0=BD=D1=81?=
=?UTF-8?q?=D1=82=D0=B0=D0=BD=D1=82=D0=B0=D0=BC=D0=B8=20=D0=B2=20=D0=BA?=
=?UTF-8?q?=D0=BE=D0=B4=D0=B5=20=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=20=D0=B2?=
=?UTF-8?q?=D1=8B=D0=BD=D0=BE=D1=81=D0=B8=D1=82=D1=8C=20=D0=B2=20=D0=BF?=
=?UTF-8?q?=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D1=8B=20=D0=BF=D0=BE?=
=?UTF-8?q?=D1=81=D1=82=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=BE?=
=?UTF-8?q?=D1=80=D0=B0.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Robots/Kuka robot (src_dat)_DN/Settings.xml | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/Distributive/Robots/Kuka robot (src_dat)_DN/Settings.xml b/Distributive/Robots/Kuka robot (src_dat)_DN/Settings.xml
index 1a37484..e13a2ab 100644
--- a/Distributive/Robots/Kuka robot (src_dat)_DN/Settings.xml
+++ b/Distributive/Robots/Kuka robot (src_dat)_DN/Settings.xml
@@ -4,10 +4,10 @@
-
-
-
-
+
+
+
+
@@ -20,7 +20,9 @@
-
+
+
+ 1000000
From b73d942e8cc4d1a3f66081fea9171b3b9c5dfb30 Mon Sep 17 00:00:00 2001
From: cepera
Date: Tue, 9 Aug 2022 01:01:38 +0300
Subject: [PATCH 6/6] =?UTF-8?q?=D0=9E=D1=82=D1=80=D0=B5=D0=BC=D0=BE=D0=BD?=
=?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=B2=D1=8B=D0=B2?=
=?UTF-8?q?=D0=BE=D0=B4=20=D0=B2=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Завел два отдельных файла src и dat.
Весь вывод через SectOutput() можно в принципе заменить на src.WriteLine() и dat.WriteLine()
---
.../Kuka robot (src_dat)_DN/Postprocessor.cs | 455 ++++++++----------
1 file changed, 203 insertions(+), 252 deletions(-)
diff --git a/Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs b/Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs
index 023ea99..16c7232 100644
--- a/Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs
+++ b/Distributive/Robots/Kuka robot (src_dat)_DN/Postprocessor.cs
@@ -15,27 +15,22 @@ public partial class Postprocessor: TPostprocessor
E1_prev, E2_prev, E3_prev, E4_prev, E5_prev, E6_prev;
int Num_E6POS, Num_E6AXIS, Num_CPDAT, Num_PPDAT, MAX_num_line, Current_num_file, big_small_file, mid_end, State, Turn,
- block_src1, block_src2, block_dat1, block_dat2, PTP_main_axes, Vel_PTP, Acc_PTP, APO_CDIS, APO_CPT, WorkpieceHolder;
+ block_src1, block_dat1, PTP_main_axes, Vel_PTP, Acc_PTP, APO_CDIS, APO_CPT, WorkpieceHolder;
string Current_NAME_file, outstr;
- int[] SectLen = new int[6] { 0, 0, 0, 0, 0, 0 };
int[] AIndex = new int[6] { 0, 1, 2, 3, 4, 5 };
- string[] Sect1 = new string[1000];
- string[] Sect2 = new string[1000];
- string[] Sect3 = new string[1000];
- string[] Sect4 = new string[1000];
-
- ///Current nc-file
- NCFile nc;
+ ///Current src-file
+ NCFile src;
+ ///Current dat-file
+ NCFile dat;
#endregion
public override void OnStartProject(ICLDProject prj)
{
- nc = new NCFile();
- nc.OutputFileName = Settings.Params.Str["OutFiles.NCFileName"];
+
}
public override void OnFinishProject(ICLDProject prj)
@@ -50,7 +45,7 @@ public override void OnStartTechOperation(ICLDTechOperation op, ICLDPPFunCommand
public override void OnFinishTechOperation(ICLDTechOperation op, ICLDPPFunCommand cmd, CLDArray cld)
{
- nc.WriteLine();
+ src.WriteLine();
}
public override void StopOnCLData()
@@ -60,10 +55,10 @@ public override void StopOnCLData()
public override void OnFeedrate(ICLDFeedrateCommand cmd, CLDArray cld)
{
- nc.VEL_CP.v = cld[1] / 1000;
- nc.VEL_CP.v = nc.VEL_CP.v / 60;
- outstr = nc.VEL_CP.ToString();
- if (outstr.Length > 0) SectOutput(block_src1, outstr+"; m/sec; " + (nc.VEL_CP.v * 60 * 1000).ToString() + " mm/min");
+ src.VEL_CP.v = cld[1] / 1000;
+ src.VEL_CP.v = Round(src.VEL_CP.v / 60, 3);
+ outstr = src.VEL_CP.ToString();
+ if (outstr.Length > 0) SectOutput(block_src1, outstr+"; m/sec; " + Str(src.VEL_CP.v * 60 * 1000) + " mm/min");
}
public override void OnFini(ICLDFiniCommand cmd, CLDArray cld)
@@ -72,52 +67,50 @@ public override void OnFini(ICLDFiniCommand cmd, CLDArray cld)
// ChangeNcFile Current_NAME_file + ".src"
SectOutput(block_src1, "END");
head_src();
- OutSection(block_src1);
// ---.DAT----
// ChangeNcFile Current_NAME_file + ".dat"
SectOutput(block_dat1, "ENDDAT");
head_dat();
- OutSection(block_dat1);
}
public override void OnFrom(ICLDFromCommand cmd, CLDArray cld)
{
A1_A6(11, cld[10], cld);
- nc.A1.v0 = nc.A1;
- nc.A2.v0 = nc.A2;
- nc.A3.v0 = nc.A3;
- nc.A4.v0 = nc.A4;
- nc.A5.v0 = nc.A5;
- nc.A6.v0 = nc.A6;
+ src.A1.v0 = src.A1;
+ src.A2.v0 = src.A2;
+ src.A3.v0 = src.A3;
+ src.A4.v0 = src.A4;
+ src.A5.v0 = src.A5;
+ src.A6.v0 = src.A6;
Ext_Axis(cmd);
- nc.E1.v0 = nc.E1;
- nc.E2.v0 = nc.E2;
- nc.E3.v0 = nc.E3;
- nc.E4.v0 = nc.E4;
- nc.E5.v0 = nc.E5;
- nc.E6.v0 = nc.E6;
+ src.E1.v0 = src.E1;
+ src.E2.v0 = src.E2;
+ src.E3.v0 = src.E3;
+ src.E4.v0 = src.E4;
+ src.E5.v0 = src.E5;
+ src.E6.v0 = src.E6;
}
public override void OnLoadTool(ICLDLoadToolCommand cmd, CLDArray cld)
{
if (WorkpieceHolder == 0)
{
- nc.TOOL_DATA.v = cmd.Number;
- if (nc.TOOL_DATA.v != nc.TOOL_DATA.v0)
+ src.TOOL_DATA.v = cmd.Number;
+ if (src.TOOL_DATA.v != src.TOOL_DATA.v0)
{
- if (nc.TOOL_DATA.v == 0)
+ if (src.TOOL_DATA.v == 0)
{
- nc.Output("$TOOL = $NULLFRAME");
- nc.TOOL_DATA.v = 0;
- nc.TOOL_DATA.v0 = 0;
+ src.Output("$TOOL = $NULLFRAME");
+ src.TOOL_DATA.v = 0;
+ src.TOOL_DATA.v0 = 0;
}
else
{
- SectOutput(block_src1, "$ACT_TOOL=" + nc.TOOL_DATA.ToString());
- SectOutput(block_src1, "$TOOL=TOOL_DATA[" + nc.TOOL_DATA.ToString() + "]");
- SectOutput(block_src1, "$LOAD=LOAD_DATA[" + nc.TOOL_DATA.ToString() + "]");
+ SectOutput(block_src1, "$ACT_TOOL=" + src.TOOL_DATA.ToString());
+ SectOutput(block_src1, "$TOOL=TOOL_DATA[" + src.TOOL_DATA.ToString() + "]");
+ SectOutput(block_src1, "$LOAD=LOAD_DATA[" + src.TOOL_DATA.ToString() + "]");
}
}
}
@@ -130,46 +123,46 @@ public override void OnMultiArc(ICLDMultiArcCommand cmd, CLDArray cld)
Num_E6POS = Num_E6POS + 1;
//------------MID-DAT----------------
- nc.X.v = cld[8]; nc.Y.v = cld[9]; nc.Z.v = cld[10];
- nc.A.v = cld[11]; nc.B.v = cld[12]; nc.C.v = cld[13];
+ src.X.v = cld[8]; src.Y.v = cld[9]; src.Z.v = cld[10];
+ src.A.v = cld[11]; src.B.v = cld[12]; src.C.v = cld[13];
RoundXYZABC();
mid_end = 1;
Point_Position("MidPos.MachineStateFlags","circ1", cmd);
Ext_Axis(cmd);
- SectOutput(block_dat1, "DECL E6POS XP" + Num_E6POS.ToString() + "={X " + nc.X.ToString() + ",Y " +
- nc.Y.ToString() + ",Z " + nc.Z.ToString() + ",A "+ nc.A.ToString() + ",B " + nc.B.ToString() +",C " +
- nc.C.ToString() +",S " + State.ToString() + ",T " + Turn.ToString() + ",E1 " + nc.E1.ToString() + ",E2 " +
- nc.E2.ToString() + ",E3 " + nc.E3.ToString() + ",E4 " + nc.E4.ToString() + ",E5 " + nc.E5.ToString() + ",E6 " +
- nc.E6.ToString() + "}");
+ SectOutput(block_dat1, "DECL E6POS XP" + Num_E6POS.ToString() + "={X " + src.X.ToString() + ",Y " +
+ src.Y.ToString() + ",Z " + src.Z.ToString() + ",A "+ src.A.ToString() + ",B " + src.B.ToString() +",C " +
+ src.C.ToString() +",S " + State.ToString() + ",T " + Turn.ToString() + ",E1 " + src.E1.ToString() + ",E2 " +
+ src.E2.ToString() + ",E3 " + src.E3.ToString() + ",E4 " + src.E4.ToString() + ",E5 " + src.E5.ToString() + ",E6 " +
+ src.E6.ToString() + "}");
//------------END-DAT----------------
- nc.X.v = cld[1]; nc.Y.v = cld[2]; nc.Z.v = cld[3];
- nc.A.v = cld[4]; nc.B.v = cld[5]; nc.C.v = cld[6];
+ src.X.v = cld[1]; src.Y.v = cld[2]; src.Z.v = cld[3];
+ src.A.v = cld[4]; src.B.v = cld[5]; src.C.v = cld[6];
RoundXYZABC();
mid_end = 2;
Point_Position("EndPos.MachineStateFlags","circ2", cmd);
Ext_Axis(cmd);
- SectOutput(block_dat1, "DECL E6POS XP" + (Num_E6POS+1).ToString() + "={X " + nc.X.ToString() + ",Y " +
- nc.Y.ToString() + ",Z " + nc.Z.ToString() + ",A "+ nc.A.ToString() + ",B " + nc.B.ToString() + ",C " +
- nc.C.ToString() + ",S " + State.ToString() + ",T " + Turn.ToString() + ",E1 " + nc.E1.ToString() +
- ",E2 " + nc.E2.ToString() + ",E3 " + nc.E3.ToString() + ",E4 " + nc.E4.ToString() + ",E5 " + nc.E5.ToString() +
- ",E6 " + nc.E6.ToString() + "}");
- SectOutput(block_dat1, "DECL FDAT FP" + (Num_E6POS + 1).ToString() + "={TOOL_NO " + nc.TOOL_DATA.ToString() + ",BASE_NO " +
- nc.BASE_DATA.ToString() + ",IPO_FRAME #BASE,POINT2[] "+ "34" + "XP" + Num_E6POS.ToString() + "34" +",TQ_STATE FALSE}");
- SectOutput(block_dat1, "DECL LDAT LCPDAT" + Num_CPDAT.ToString() + "={VEL " + nc.VEL_CP.ToString() + ",ACC " +
+ SectOutput(block_dat1, "DECL E6POS XP" + (Num_E6POS+1).ToString() + "={X " + src.X.ToString() + ",Y " +
+ src.Y.ToString() + ",Z " + src.Z.ToString() + ",A "+ src.A.ToString() + ",B " + src.B.ToString() + ",C " +
+ src.C.ToString() + ",S " + State.ToString() + ",T " + Turn.ToString() + ",E1 " + src.E1.ToString() +
+ ",E2 " + src.E2.ToString() + ",E3 " + src.E3.ToString() + ",E4 " + src.E4.ToString() + ",E5 " + src.E5.ToString() +
+ ",E6 " + src.E6.ToString() + "}");
+ SectOutput(block_dat1, "DECL FDAT FP" + (Num_E6POS + 1).ToString() + "={TOOL_NO " + Str(src.TOOL_DATA) + ",BASE_NO " +
+ Str(src.BASE_DATA) + ",IPO_FRAME #BASE,POINT2[] "+ "34" + "XP" + Num_E6POS.ToString() + "34" +",TQ_STATE FALSE}");
+ SectOutput(block_dat1, "DECL LDAT LCPDAT" + Num_CPDAT.ToString() + "={VEL " + Str(src.VEL_CP.v) + ",ACC " +
(ACC_CP * 100 / DEF_ACC).ToString() + ",APO_DIST " + APO_CDIS.ToString() + ".000,APO_FAC 50.0000,AXIS_VEL " +
Vel_PTP.ToString() + ".000,AXIS_ACC " + Acc_PTP.ToString() + ".000,ORI_TYP #VAR,CIRC_TYP #BASE,JERK_FAC 50.0000,GEAR_JERK 50.0000,EXAX_IGN 0}");
SectOutput(block_dat1, "");
//-------------SRC----------------
- SectOutput(block_src1, ";FOLD CIRC P" + Num_E6POS.ToString() + " P" + (Num_E6POS+1).ToString() + " CONT Vel=" + nc.VEL_CP.ToString() +
- " m/s CPDAT" + Num_CPDAT.ToString() + " Tool[" + nc.TOOL_DATA.ToString() + "]:Tool_main Base[" + nc.BASE_DATA.ToString() +
+ SectOutput(block_src1, ";FOLD CIRC P" + Num_E6POS.ToString() + " P" + (Num_E6POS+1).ToString() + " CONT Vel=" + Str(src.VEL_CP.v) +
+ " m/s CPDAT" + Num_CPDAT.ToString() + " Tool[" + Str(src.TOOL_DATA) + "]:Tool_main Base[" + Str(src.BASE_DATA) +
"]:Base_main;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VCIRC, %P 1:CIRC, 2:P" + Num_E6POS.ToString() + ", 3:P" +
- (Num_E6POS+1).ToString() + ", 4:C_DIS C_DIS, 6:" + nc.VEL_CP.ToString() + ", 8:CPDAT" + Num_CPDAT.ToString());
+ (Num_E6POS+1).ToString() + ", 4:C_DIS C_DIS, 6:" + Str(src.VEL_CP.v) + ", 8:CPDAT" + Num_CPDAT.ToString());
SectOutput(block_src1, "$BWDSTART=FALSE");
SectOutput(block_src1, "LDAT_ACT=LCPDAT" + Num_CPDAT.ToString());
SectOutput(block_src1, "FDAT_ACT=FP" + (Num_E6POS+1).ToString());
- SectOutput(block_src1, "BAS(#CP_PARAMS," + nc.VEL_CP.ToString() + ")");
+ SectOutput(block_src1, "BAS(#CP_PARAMS," + Str(src.VEL_CP.v) + ")");
SectOutput(block_src1, "CIRC XP" + Num_E6POS.ToString() + ", XP" + (Num_E6POS+1).ToString() + " C_DIS C_DIS");
SectOutput(block_src1, ";ENDFOLD");
SectOutput(block_src1, "");
@@ -177,8 +170,8 @@ public override void OnMultiArc(ICLDMultiArcCommand cmd, CLDArray cld)
Num_E6POS = Num_E6POS + 1;
- X_prev = nc.X.v; Y_prev = nc.Y.v; Z_prev = nc.Z.v; A_prev = nc.A.v; B_prev = nc.B.v; C_prev = nc.C.v;
- E1_prev = nc.E1.v; E2_prev = nc.E2.v; E3_prev = nc.E3.v; E4_prev = nc.E4.v; E5_prev = nc.E5.v; E6_prev = nc.E6.v;
+ X_prev = src.X.v; Y_prev = src.Y.v; Z_prev = src.Z.v; A_prev = src.A.v; B_prev = src.B.v; C_prev = src.C.v;
+ E1_prev = src.E1.v; E2_prev = src.E2.v; E3_prev = src.E3.v; E4_prev = src.E4.v; E5_prev = src.E5.v; E6_prev = src.E6.v;
if (Num_CPDAT >= MAX_num_line)
{
@@ -186,60 +179,58 @@ public override void OnMultiArc(ICLDMultiArcCommand cmd, CLDArray cld)
// ChangeNcFile Current_NAME_file + ".src"
SectOutput(block_src1, "END");
head_src();
- OutSection(block_src1);
//---.DAT----
//ChangeNcFile Current_NAME_file + ".dat"
SectOutput(block_dat1, "ENDDAT");
head_dat();
- OutSection(block_dat1);
}
}
public override void OnMultiGoto(ICLDMultiGotoCommand cmd, CLDArray cld)
{
- nc.X.v = cld[1]; nc.Y.v = cld[2]; nc.Z.v = cld[3];
- nc.A.v = cld[4]; nc.B.v = cld[5]; nc.C.v = cld[6];
+ src.X.v = cld[1]; src.Y.v = cld[2]; src.Z.v = cld[3];
+ src.A.v = cld[4]; src.B.v = cld[5]; src.C.v = cld[6];
Point_Position("MachineStateFlags","line", cmd);
RoundXYZABC();
Ext_Axis(cmd);
- if (Math.Abs(nc.X.v - X_prev) > 0.001 || Math.Abs(nc.Y.v - Y_prev) > 0.001 || Math.Abs(nc.Z.v - Z_prev) > 0.001 ||
- Math.Abs(nc.A.v - A_prev) > 0.001 || Math.Abs(nc.B.v - B_prev) > 0.001 || Math.Abs(nc.C.v - C_prev) > 0.001 ||
- Math.Abs(nc.E1.v - E1_prev) > 0.001 || Math.Abs(nc.E2.v - E2_prev) > 0.001 || Math.Abs(nc.E3.v - E3_prev) > 0.001 ||
- Math.Abs(nc.E4.v - E4_prev) > 0.001 || Math.Abs(nc.E5.v - E5_prev) > 0.001 || Math.Abs(nc.E6.v - E6_prev) > 0.001)
+ if (Math.Abs(src.X.v - X_prev) > 0.001 || Math.Abs(src.Y.v - Y_prev) > 0.001 || Math.Abs(src.Z.v - Z_prev) > 0.001 ||
+ Math.Abs(src.A.v - A_prev) > 0.001 || Math.Abs(src.B.v - B_prev) > 0.001 || Math.Abs(src.C.v - C_prev) > 0.001 ||
+ Math.Abs(src.E1.v - E1_prev) > 0.001 || Math.Abs(src.E2.v - E2_prev) > 0.001 || Math.Abs(src.E3.v - E3_prev) > 0.001 ||
+ Math.Abs(src.E4.v - E4_prev) > 0.001 || Math.Abs(src.E5.v - E5_prev) > 0.001 || Math.Abs(src.E6.v - E6_prev) > 0.001)
{
Num_E6POS = Num_E6POS + 1;
Num_CPDAT = Num_CPDAT + 1;
//-------------SRC----------------
- SectOutput(block_src1, ";FOLD LIN P" + Num_E6POS.ToString() + " CONT Vel=" + nc.VEL_CP.ToString() + " m/s CPDAT" +
- Num_CPDAT.ToString() + " Tool[" + nc.TOOL_DATA.ToString() + "]:Tool_main Base[" + nc.BASE_DATA.ToString() +
+ SectOutput(block_src1, ";FOLD LIN P" + Num_E6POS.ToString() + " CONT Vel=" + Str(src.VEL_CP.v) + " m/s CPDAT" +
+ Num_CPDAT.ToString() + " Tool[" + Str(src.TOOL_DATA) + "]:Tool_main Base[" + Str(src.BASE_DATA) +
"]:Base_main;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN, %P 1:LIN, 2:P" + Num_E6POS.ToString() +
- ", 3:C_DIS C_DIS,5:" + nc.VEL_CP.ToString() + ",7:CPDAT" + Num_CPDAT.ToString());
+ ", 3:C_DIS C_DIS,5:" + Str(src.VEL_CP.v) + ",7:CPDAT" + Num_CPDAT.ToString());
SectOutput(block_src1, "$BWDSTART=FALSE");
SectOutput(block_src1, "LDAT_ACT=LCPDAT" + Num_CPDAT.ToString() + "");
SectOutput(block_src1, "FDAT_ACT=FP" + Num_E6POS.ToString() + "");
- SectOutput(block_src1, "BAS(#CP_PARAMS," + nc.VEL_CP.ToString() + ")");
+ SectOutput(block_src1, "BAS(#CP_PARAMS," + Str(src.VEL_CP.v) + ")");
SectOutput(block_src1, "LIN XP" + Num_E6POS.ToString() + " C_DIS C_DIS");
SectOutput(block_src1, ";ENDFOLD");
SectOutput(block_src1, "");
//------------DAT-----------------
- SectOutput(block_dat1, "DECL E6POS XP" + Num_E6POS.ToString() + "={X " + nc.X.ToString() + ",Y " + nc.Y.ToString() +
- ",Z " + nc.Z.ToString() + ",A " + nc.A.ToString() + ",B " + nc.B.ToString() + ",C " + nc.C.ToString() +
- ",S "+ State.ToString() + ",T " + Turn.ToString()+ ",E1 " + nc.E1.ToString() + ",E2 " + nc.E2.ToString() +
- ",E3 "+ nc.E3.ToString() +",E4 "+ nc.E4.ToString() + ",E5 " + nc.E5.ToString() +",E6 " + nc.E6.ToString() + "}");
- SectOutput(block_dat1, "DECL FDAT FP" + Num_E6POS.ToString() + "={TOOL_NO " + nc.TOOL_DATA.ToString() + ",BASE_NO " +
- nc.BASE_DATA.ToString() + ",IPO_FRAME #BASE,POINT2[] " + "34" + " " + "34" + ",TQ_STATE FALSE}");
- SectOutput(block_dat1, "DECL LDAT LCPDAT" + Num_CPDAT.ToString() + "={VEL " + nc.VEL_CP.ToString() + ",ACC " +
+ SectOutput(block_dat1, "DECL E6POS XP" + Num_E6POS.ToString() + "={X " + src.X.ToString() + ",Y " + src.Y.ToString() +
+ ",Z " + src.Z.ToString() + ",A " + src.A.ToString() + ",B " + src.B.ToString() + ",C " + src.C.ToString() +
+ ",S "+ State.ToString() + ",T " + Turn.ToString()+ ",E1 " + src.E1.ToString() + ",E2 " + src.E2.ToString() +
+ ",E3 "+ src.E3.ToString() +",E4 "+ src.E4.ToString() + ",E5 " + src.E5.ToString() +",E6 " + src.E6.ToString() + "}");
+ SectOutput(block_dat1, "DECL FDAT FP" + Num_E6POS.ToString() + "={TOOL_NO " + src.TOOL_DATA.ToString() + ",BASE_NO " +
+ src.BASE_DATA.ToString() + ",IPO_FRAME #BASE,POINT2[] " + "34" + " " + "34" + ",TQ_STATE FALSE}");
+ SectOutput(block_dat1, "DECL LDAT LCPDAT" + Num_CPDAT.ToString() + "={VEL " + Str(src.VEL_CP.v) + ",ACC " +
(ACC_CP * 100 / DEF_ACC).ToString() + ",APO_DIST " + APO_CDIS.ToString() + ".00000,APO_FAC 50.0000,AXIS_VEL " +
Vel_PTP.ToString() + ".000,AXIS_ACC " + Acc_PTP.ToString() +
".000,ORI_TYP #VAR,CIRC_TYP #BASE,JERK_FAC 50.0000,GEAR_JERK 50.0000,EXAX_IGN 0}");
SectOutput(block_dat1, "");
//--------------------------------
- X_prev = nc.X.v; Y_prev = nc.Y.v; Z_prev = nc.Z.v; A_prev = nc.A.v; B_prev = nc.B.v; C_prev = nc.C.v;
- E1_prev = nc.E1.v; E2_prev = nc.E2.v; E3_prev = nc.E3.v; E4_prev = nc.E4.v; E5_prev = nc.E5.v; E6_prev = nc.E6.v;
+ X_prev = src.X.v; Y_prev = src.Y.v; Z_prev = src.Z.v; A_prev = src.A.v; B_prev = src.B.v; C_prev = src.C.v;
+ E1_prev = src.E1.v; E2_prev = src.E2.v; E3_prev = src.E3.v; E4_prev = src.E4.v; E5_prev = src.E5.v; E6_prev = src.E6.v;
if (Num_CPDAT >= MAX_num_line)
{
@@ -247,37 +238,34 @@ public override void OnMultiGoto(ICLDMultiGotoCommand cmd, CLDArray cld)
// ChangeNcFile Current_NAME_file + ".src"
SectOutput(block_src1, "END");
head_src();
- OutSection(block_src1);
// !---.DAT----
// ChangeNcFile Current_NAME_file + ".dat"
SectOutput(block_dat1, "ENDDAT");
head_dat();
- OutSection(block_dat1);
}
}
}
public override void OnOrigin(ICLDOriginCommand cmd, CLDArray cld)
{
- if (cmd.Flt["CSNumber"] >= 53) nc.BASE_DATA.v = cmd.Flt["CSNumber"] - 53;
- else nc.BASE_DATA.v = cmd.Flt["CSNumber"];
+ if (cmd.Flt["CSNumber"] >= 53) src.BASE_DATA.v = cmd.Flt["CSNumber"] - 53;
+ else src.BASE_DATA.v = cmd.Flt["CSNumber"];
- if (nc.BASE_DATA.v != nc.BASE_DATA.v0)
+ if (src.BASE_DATA.v != src.BASE_DATA.v0)
{
if (cld[1] == 0 && cld[2] == 0 && cld[3] == 0 && cld[6] == 0 && cld[7] == 0 && cld[8] == 0)
{
SectOutput(block_src1, "$BASE = $WORLD");
- nc.BASE_DATA.v = 0;
- nc.BASE_DATA.v0 = nc.BASE_DATA.v;
+ src.BASE_DATA.v = 0;
+ src.BASE_DATA.v0 = src.BASE_DATA.v;
}
- else SectOutput(block_src1, "$BASE=BASE_DATA[" + nc.BASE_DATA.ToString() + "]");
+ else SectOutput(block_src1, "$BASE=BASE_DATA[" + src.BASE_DATA.ToString() + "]");
}
}
public override void OnPartNo(ICLDPartNoCommand cmd, CLDArray cld)
{
MaxReal = 9999999;
- SectInit();
Vel_PTP = 20;
Acc_PTP = 20;
@@ -285,10 +273,27 @@ public override void OnPartNo(ICLDPartNoCommand cmd, CLDArray cld)
APO_CPT = 3;
ACC_CP = 1;
DEF_ACC = 2.3;
+
+ // От использования следующих двух переменных в принципе можно избавится
+ block_src1 = 1;
+ block_dat1 = 3;
+
+ MAX_num_line = Settings.Params.Int["OutFiles.MaxLinesCount"];
+
+ var prj = CLDProject;
+ string dir = Settings.Params.Str["OutFiles.NCFilesOutDir"];
+ if (String.IsNullOrEmpty(dir))
+ dir = prj.FilePath;
+ string progName = Settings.Params.Str["OutFiles.ProgName"];
+ if (String.IsNullOrEmpty(progName))
+ progName = prj.ProjectName;
+ src = new NCFile();
+ dat = new NCFile();
+ src.OutputFileName = Path.Combine(dir, progName + ".src");
+ dat.OutputFileName = Path.Combine(dir, progName + ".dat");
+ Current_NAME_file = progName.ToUpper();
- MAX_num_line = 99999999;
-
// Big_small_file();
// if (Big_small_file == 1)
// {
@@ -318,7 +323,7 @@ public override void OnPhysicGoto(ICLDPhysicGotoCommand cmd, CLDArray cld)
Num_PPDAT = Num_PPDAT + 1;
SectOutput(block_src1, ";FOLD PTP P" + Num_E6POS.ToString() + " Vel=" + Vel_PTP.ToString() + " % PDAT" +
- Num_PPDAT.ToString() + " Tool[" + nc.TOOL_DATA.ToString() + "]:Tool_main Base[" + nc.BASE_DATA.ToString() +
+ Num_PPDAT.ToString() + " Tool[" + Str(src.TOOL_DATA) + "]:Tool_main Base[" + Str(src.BASE_DATA) +
"]:Base_main;%{PE};%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P" +
Num_E6POS.ToString() + ", 3:, 5:" + Vel_PTP.ToString() + ", 7:PDAT" + Num_PPDAT.ToString());
SectOutput(block_src1, "$BWDSTART=FALSE");
@@ -330,12 +335,12 @@ public override void OnPhysicGoto(ICLDPhysicGotoCommand cmd, CLDArray cld)
SectOutput(block_src1, "");
//------------DAT-----------------
- SectOutput(block_dat1, "DECL E6AXIS XP" + Num_E6POS.ToString() + "={A1 " + nc.A1.ToString() + ",A2 " + nc.A2.ToString() +
- ",A3 " + nc.A3.ToString() + ",A4 " + nc.A4.ToString() + ",A5 " + nc.A5.ToString() + ",A6 " + nc.A6.ToString() +
- ",E1 " + nc.E1.ToString() + ",E2 " + nc.E2.ToString() + ",E3 " + nc.E3.ToString() + ",E4 " + nc.E4.ToString() +
- ",E5 " + nc.E5.ToString() + ",E6 " + nc.E6.ToString() + "}");
- SectOutput(block_dat1, "DECL FDAT FP" + Num_E6POS.ToString() + "={TOOL_NO " + nc.TOOL_DATA.ToString() + ",BASE_NO " +
- nc.BASE_DATA.ToString() + ",IPO_FRAME #BASE,POINT2[] " + "34" + " " + "34" + ",TQ_STATE FALSE}");
+ SectOutput(block_dat1, "DECL E6AXIS XP" + Num_E6POS.ToString() + "={A1 " + src.A1.ToString() + ",A2 " + src.A2.ToString() +
+ ",A3 " + src.A3.ToString() + ",A4 " + src.A4.ToString() + ",A5 " + src.A5.ToString() + ",A6 " + src.A6.ToString() +
+ ",E1 " + src.E1.ToString() + ",E2 " + src.E2.ToString() + ",E3 " + src.E3.ToString() + ",E4 " + src.E4.ToString() +
+ ",E5 " + src.E5.ToString() + ",E6 " + src.E6.ToString() + "}");
+ SectOutput(block_dat1, "DECL FDAT FP" + Num_E6POS.ToString() + "={TOOL_NO " + Str(src.TOOL_DATA) + ",BASE_NO " +
+ Str(src.BASE_DATA) + ",IPO_FRAME #BASE,POINT2[] " + "34" + " " + "34" + ",TQ_STATE FALSE}");
SectOutput(block_dat1, "DECL PDAT PPDAT" + Num_PPDAT.ToString() + "={VEL " + Vel_PTP.ToString() + ",ACC " +
Acc_PTP.ToString() + ",APO_DIST " + APO_CDIS.ToString() + ".0,APO_MODE #CDIS,GEAR_JERK 50.0000,EXAX_IGN 0}");
SectOutput(block_dat1, "");
@@ -353,10 +358,10 @@ public override void OnPPFun(ICLDPPFunCommand cmd, CLDArray cld)
public override void OnRapid(ICLDRapidCommand cmd, CLDArray cld)
{
- nc.VEL_CP.v = cld[1] / 1000;
- nc.VEL_CP.v = nc.VEL_CP.v / 60;
- outstr = nc.VEL_CP.ToString();
- if (outstr.Length > 0) SectOutput(block_src1, outstr+"; m/sec; " + (nc.VEL_CP.v * 60 * 1000).ToString() + " mm/min");
+ src.VEL_CP.v = cld[1] / 1000;
+ src.VEL_CP.v = Round(src.VEL_CP.v / 60, 3);
+ outstr = src.VEL_CP.ToString();
+ if (outstr.Length > 0) SectOutput(block_src1, outstr+"; m/sec; " + Str(src.VEL_CP.v * 60 * 1000) + " mm/min");
}
public void Big_small_file()
@@ -364,30 +369,14 @@ public void Big_small_file()
}
- public void SectInit()
- {
- block_src1 = 1;
- block_src2 = 2;
- block_dat1 = 3;
- block_dat2 = 4;
- for (int i = 1; i <= 4; i++){
- ResetSection(i);
- }
- }
-
- public void ResetSection(int SectID)
- {
- SectLen[SectID] = 0;
- }
-
public void RoundXYZABC()
{
- if (nc.X.v > -0.001 && nc.X.v < 0) nc.X.v = 0;
- if (nc.Y.v > -0.001 && nc.Y.v < 0) nc.Y.v = 0;
- if (nc.Z.v > -0.001 && nc.Z.v < 0) nc.Z.v = 0;
- if (nc.A.v > -0.001 && nc.A.v < 0) nc.A.v = 0;
- if (nc.B.v > -0.001 && nc.B.v < 0) nc.B.v = 0;
- if (nc.C.v > -0.001 && nc.C.v < 0) nc.C.v = 0;
+ if (src.X.v > -0.001 && src.X.v < 0) src.X.v = 0;
+ if (src.Y.v > -0.001 && src.Y.v < 0) src.Y.v = 0;
+ if (src.Z.v > -0.001 && src.Z.v < 0) src.Z.v = 0;
+ if (src.A.v > -0.001 && src.A.v < 0) src.A.v = 0;
+ if (src.B.v > -0.001 && src.B.v < 0) src.B.v = 0;
+ if (src.C.v > -0.001 && src.C.v < 0) src.C.v = 0;
}
public void Point_Position(string prm, string move_type, ICLDCommand cmd)
@@ -407,41 +396,41 @@ public void Point_Position(string prm, string move_type, ICLDCommand cmd)
//----Turn------
if (move_type == "line" || move_type == "ptp")
{
- if (cmd.Ptr["Axes(AxisA1Pos)"] is not null) nc.A1.v = cmd.Flt["Axes(AxisA1Pos).Value"];
- if (cmd.Ptr["Axes(AxisA2Pos)"] is not null) nc.A2.v = cmd.Flt["Axes(AxisA2Pos).Value"];
- if (cmd.Ptr["Axes(AxisA3Pos)"] is not null) nc.A3.v = cmd.Flt["Axes(AxisA3Pos).Value"];
- if (cmd.Ptr["Axes(AxisA4Pos)"] is not null) nc.A4.v = cmd.Flt["Axes(AxisA4Pos).Value"];
- if (cmd.Ptr["Axes(AxisA5Pos)"] is not null) nc.A5.v = cmd.Flt["Axes(AxisA5Pos).Value"];
- if (cmd.Ptr["Axes(AxisA6Pos)"] is not null) nc.A6.v = cmd.Flt["Axes(AxisA6Pos).Value"];
+ if (cmd.Ptr["Axes(AxisA1Pos)"] is not null) src.A1.v = cmd.Flt["Axes(AxisA1Pos).Value"];
+ if (cmd.Ptr["Axes(AxisA2Pos)"] is not null) src.A2.v = cmd.Flt["Axes(AxisA2Pos).Value"];
+ if (cmd.Ptr["Axes(AxisA3Pos)"] is not null) src.A3.v = cmd.Flt["Axes(AxisA3Pos).Value"];
+ if (cmd.Ptr["Axes(AxisA4Pos)"] is not null) src.A4.v = cmd.Flt["Axes(AxisA4Pos).Value"];
+ if (cmd.Ptr["Axes(AxisA5Pos)"] is not null) src.A5.v = cmd.Flt["Axes(AxisA5Pos).Value"];
+ if (cmd.Ptr["Axes(AxisA6Pos)"] is not null) src.A6.v = cmd.Flt["Axes(AxisA6Pos).Value"];
}
else if (move_type == "circ1")
{
- if (cmd.Ptr["MidPos.Axes(AxisA1Pos)"] is not null) nc.A1.v = cmd.Flt["MidPos.Axes(AxisA1Pos).Value"];
- if (cmd.Ptr["MidPos.Axes(AxisA2Pos)"] is not null) nc.A2.v = cmd.Flt["MidPos.Axes(AxisA2Pos).Value"];
- if (cmd.Ptr["MidPos.Axes(AxisA3Pos)"] is not null) nc.A3.v = cmd.Flt["MidPos.Axes(AxisA3Pos).Value"];
- if (cmd.Ptr["MidPos.Axes(AxisA4Pos)"] is not null) nc.A4.v = cmd.Flt["MidPos.Axes(AxisA4Pos).Value"];
- if (cmd.Ptr["MidPos.Axes(AxisA5Pos)"] is not null) nc.A5.v = cmd.Flt["MidPos.Axes(AxisA5Pos).Value"];
- if (cmd.Ptr["MidPos.Axes(AxisA6Pos)"] is not null) nc.A6.v = cmd.Flt["MidPos.Axes(AxisA6Pos).Value"];
+ if (cmd.Ptr["MidPos.Axes(AxisA1Pos)"] is not null) src.A1.v = cmd.Flt["MidPos.Axes(AxisA1Pos).Value"];
+ if (cmd.Ptr["MidPos.Axes(AxisA2Pos)"] is not null) src.A2.v = cmd.Flt["MidPos.Axes(AxisA2Pos).Value"];
+ if (cmd.Ptr["MidPos.Axes(AxisA3Pos)"] is not null) src.A3.v = cmd.Flt["MidPos.Axes(AxisA3Pos).Value"];
+ if (cmd.Ptr["MidPos.Axes(AxisA4Pos)"] is not null) src.A4.v = cmd.Flt["MidPos.Axes(AxisA4Pos).Value"];
+ if (cmd.Ptr["MidPos.Axes(AxisA5Pos)"] is not null) src.A5.v = cmd.Flt["MidPos.Axes(AxisA5Pos).Value"];
+ if (cmd.Ptr["MidPos.Axes(AxisA6Pos)"] is not null) src.A6.v = cmd.Flt["MidPos.Axes(AxisA6Pos).Value"];
}
else if (move_type == "circ2")
{
- if (cmd.Ptr["EndPos.Axes(AxisA1Pos)"] is not null) nc.A1.v = cmd.Flt["EndPos.Axes(AxisA1Pos).Value"];
- if (cmd.Ptr["EndPos.Axes(AxisA2Pos)"] is not null) nc.A2.v = cmd.Flt["EndPos.Axes(AxisA2Pos).Value"];
- if (cmd.Ptr["EndPos.Axes(AxisA3Pos)"] is not null) nc.A3.v = cmd.Flt["EndPos.Axes(AxisA3Pos).Value"];
- if (cmd.Ptr["EndPos.Axes(AxisA4Pos)"] is not null) nc.A4.v = cmd.Flt["EndPos.Axes(AxisA4Pos).Value"];
- if (cmd.Ptr["EndPos.Axes(AxisA5Pos)"] is not null) nc.A5.v = cmd.Flt["EndPos.Axes(AxisA5Pos).Value"];
- if (cmd.Ptr["EndPos.Axes(AxisA6Pos)"] is not null) nc.A6.v = cmd.Flt["EndPos.Axes(AxisA6Pos).Value"];
+ if (cmd.Ptr["EndPos.Axes(AxisA1Pos)"] is not null) src.A1.v = cmd.Flt["EndPos.Axes(AxisA1Pos).Value"];
+ if (cmd.Ptr["EndPos.Axes(AxisA2Pos)"] is not null) src.A2.v = cmd.Flt["EndPos.Axes(AxisA2Pos).Value"];
+ if (cmd.Ptr["EndPos.Axes(AxisA3Pos)"] is not null) src.A3.v = cmd.Flt["EndPos.Axes(AxisA3Pos).Value"];
+ if (cmd.Ptr["EndPos.Axes(AxisA4Pos)"] is not null) src.A4.v = cmd.Flt["EndPos.Axes(AxisA4Pos).Value"];
+ if (cmd.Ptr["EndPos.Axes(AxisA5Pos)"] is not null) src.A5.v = cmd.Flt["EndPos.Axes(AxisA5Pos).Value"];
+ if (cmd.Ptr["EndPos.Axes(AxisA6Pos)"] is not null) src.A6.v = cmd.Flt["EndPos.Axes(AxisA6Pos).Value"];
}
- nc.A1.v0 = nc.A1.v; nc.A2.v0 = nc.A2.v; nc.A3.v0 = nc.A3.v; nc.A4.v0 = nc.A4.v; nc.A5.v0 = nc.A5.v; nc.A6.v0 = nc.A6.v;
+ src.A1.v0 = src.A1.v; src.A2.v0 = src.A2.v; src.A3.v0 = src.A3.v; src.A4.v0 = src.A4.v; src.A5.v0 = src.A5.v; src.A6.v0 = src.A6.v;
Turn = 0;
- if (nc.A1.v < 0) Turn = Turn + 1;
- if (nc.A2.v < 0) Turn = Turn + 2;
- if (nc.A3.v < 0) Turn = Turn + 4;
- if (nc.A4.v < 0) Turn = Turn + 8;
- if (nc.A5.v < 0) Turn = Turn + 16;
- if (nc.A6.v < 0) Turn = Turn + 32;
+ if (src.A1.v < 0) Turn = Turn + 1;
+ if (src.A2.v < 0) Turn = Turn + 2;
+ if (src.A3.v < 0) Turn = Turn + 4;
+ if (src.A4.v < 0) Turn = Turn + 8;
+ if (src.A5.v < 0) Turn = Turn + 16;
+ if (src.A6.v < 0) Turn = Turn + 32;
}
public void if_first_point()
@@ -449,25 +438,25 @@ public void if_first_point()
Num_E6POS = Num_E6POS + 1;
Num_CPDAT = Num_CPDAT + 1;
//-------------SRC----------------
- SectOutput(block_src1, ";FOLD LIN P" + Num_E6POS.ToString() + " CONT Vel=" + nc.VEL_CP.ToString() + " m/s CPDAT" +
- Num_CPDAT.ToString() + " Tool[" + nc.TOOL_DATA.ToString() + "]:Tool_main Base[" +
- nc.BASE_DATA.ToString() + "]:Base_main;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN, %P 1:LIN, 2:P" +
- Num_E6POS.ToString() + ", 3:C_DIS C_DIS,5:" + nc.VEL_CP.ToString() + ",7:CPDAT" + Num_CPDAT.ToString());
+ SectOutput(block_src1, ";FOLD LIN P" + Num_E6POS.ToString() + " CONT Vel=" + Str(src.VEL_CP.v) + " m/s CPDAT" +
+ Num_CPDAT.ToString() + " Tool[" + src.TOOL_DATA.ToString() + "]:Tool_main Base[" +
+ src.BASE_DATA.ToString() + "]:Base_main;%{PE}%R 8.3.40,%MKUKATPBASIS,%CMOVE,%VLIN, %P 1:LIN, 2:P" +
+ Num_E6POS.ToString() + ", 3:C_DIS C_DIS,5:" + Str(src.VEL_CP.v) + ",7:CPDAT" + Num_CPDAT.ToString());
SectOutput(block_src1, "$BWDSTART=FALSE");
SectOutput(block_src1, "LDAT_ACT=LCPDAT" + Num_CPDAT.ToString() + "");
SectOutput(block_src1, "FDAT_ACT=FP" + Num_E6POS.ToString() + "");
- SectOutput(block_src1, "BAS(#CP_PARAMS," + nc.VEL_CP.ToString() + ")");
+ SectOutput(block_src1, "BAS(#CP_PARAMS," + Str(src.VEL_CP.v) + ")");
SectOutput(block_src1, "LIN XP" + Num_E6POS.ToString() + " C_DIS C_DIS");
SectOutput(block_src1, ";ENDFOLD");
SectOutput(block_src1, "");
//------------DAT-----------------
- SectOutput(block_dat1, "DECL E6POS XP" + Num_E6POS.ToString() + "={X " + nc.X.ToString() + ",Y " + nc.Y.ToString() +
- ",Z " + nc.Z.ToString() + ",A " + nc.A.ToString() + ",B " + nc.B.ToString() + ",C " + nc.C.ToString() +
- ",S " + State.ToString() + ",T " + Turn.ToString() + ",E1 " + nc.E1.ToString() + ",E2 " + nc.E2.ToString() +
- ",E3 " + nc.E3.ToString() + ",E4 " + nc.E4.ToString() + ",E5 " + nc.E5.ToString() + ",E6 " + nc.E6.ToString() + "}");
- SectOutput(block_dat1, "DECL FDAT FP" + Num_E6POS.ToString() + "={TOOL_NO " + nc.TOOL_DATA.ToString() + ",BASE_NO " +
- nc.BASE_DATA.ToString() + ",IPO_FRAME #BASE,POINT2[] " + "34" + " " + "34" + ",TQ_STATE FALSE}");
- SectOutput(block_dat1, "DECL LDAT LCPDAT" + Num_CPDAT.ToString() + "={VEL "+ nc.VEL_CP.ToString() + ",ACC " +
+ SectOutput(block_dat1, "DECL E6POS XP" + Num_E6POS.ToString() + "={X " + src.X.ToString() + ",Y " + src.Y.ToString() +
+ ",Z " + src.Z.ToString() + ",A " + src.A.ToString() + ",B " + src.B.ToString() + ",C " + src.C.ToString() +
+ ",S " + State.ToString() + ",T " + Turn.ToString() + ",E1 " + src.E1.ToString() + ",E2 " + src.E2.ToString() +
+ ",E3 " + src.E3.ToString() + ",E4 " + src.E4.ToString() + ",E5 " + src.E5.ToString() + ",E6 " + src.E6.ToString() + "}");
+ SectOutput(block_dat1, "DECL FDAT FP" + Num_E6POS.ToString() + "={TOOL_NO " + src.TOOL_DATA.ToString() + ",BASE_NO " +
+ src.BASE_DATA.ToString() + ",IPO_FRAME #BASE,POINT2[] " + "34" + " " + "34" + ",TQ_STATE FALSE}");
+ SectOutput(block_dat1, "DECL LDAT LCPDAT" + Num_CPDAT.ToString() + "={VEL "+ Str(src.VEL_CP.v) + ",ACC " +
(ACC_CP * 100 / DEF_ACC).ToString() + ",APO_DIST " + APO_CDIS.ToString() + ".00000,APO_FAC 50.0000,AXIS_VEL " +
Vel_PTP.ToString() + ".000,AXIS_ACC " + Acc_PTP.ToString() + ".000,ORI_TYP #VAR,CIRC_TYP #BASE,JERK_FAC 50.0000,GEAR_JERK 50.0000,EXAX_IGN 0}");
SectOutput(block_dat1, "");
@@ -478,30 +467,21 @@ public void SectOutput(int SectID, string NCString)
switch (SectID)
{
case 1:
- PrivateOutLineToSect(NCString, SectID, Sect1);
+ src.WriteLine(NCString);
break;
case 2:
- PrivateOutLineToSect(NCString, SectID, Sect2);
- break;
+ throw new Exception("Output to section 2 not implemented");
case 3:
- PrivateOutLineToSect(NCString, SectID, Sect3);
+ dat.WriteLine(NCString);
break;
case 4:
- PrivateOutLineToSect(NCString, SectID, Sect4);
- break;
+ throw new Exception("Output to section 4 not implemented");
}
}
- public void PrivateOutLineToSect(string NCString, int SectID, string[] Sect)
- {
- int tmp = SectLen[SectID] + 1;
- SectLen[SectID] = tmp;
- Sect[tmp] = NCString;
- }
-
public void head_src()
{
- string begin_src_file = $@"DEF {Current_NAME_file} ()
+ string begin_src_file = $@"DEF {Current_NAME_file}()
decl int i
GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
@@ -531,36 +511,7 @@ INTERRUPT ON 3
$ORI_TYPE = #VAR; #VAR, #CONSTANT, #JOINT
$CIRC_TYPE = #base; #PATH, #BASE""";
- nc.Output(begin_src_file);
- }
-
- public void OutSection(int SectID)
- {
- switch (SectID)
- {
- case 1:
- PrivateOutSect(SectID, Sect1);
- break;
- case 2:
- PrivateOutSect(SectID, Sect2);
- break;
- case 3:
- PrivateOutSect(SectID, Sect3);
- break;
- case 4:
- PrivateOutSect(SectID, Sect4);
- break;
- }
- }
-
- public void PrivateOutSect(int SectID, string[] Sect)
- {
- int i;
- for (i = 1; i <= SectLen[SectID]; i++)
- {
- nc.WriteLine(Sect[i]);
- Sect[i] = "";
- }
+ src.Output(begin_src_file, src.FileStart);
}
public void head_dat()
@@ -582,7 +533,7 @@ DECL INT SUCCESS
;ENDFOLD (EXTERNAL DECLARATIONS)
;DECL BASIS_SUGG_T LAST_BASIS={{POINT1[] ""P53 "",POINT2[] ""P53 "",CP_PARAMS[] ""CPDAT41 "",PTP_PARAMS[] ""PDAT4 "",CONT[] ""C_DIS C_DIS "",CP_VEL[] ""0.02 "",PTP_VEL[] ""50 "",SYNC_PARAMS[] ""SYNCDAT "",SPL_NAME[] ""S0 "",A_PARAMS[] ""ADAT0 ""}}";
- nc.Output(begin_dat_file);
+ dat.Output(begin_dat_file, dat.FileStart);
}
public void A1_A6(int StartCLDIndex, int AxesCount, CLDArray cld)
@@ -591,148 +542,148 @@ public void A1_A6(int StartCLDIndex, int AxesCount, CLDArray cld)
for (axi = 1; axi <= AxesCount; axi++)
{
cli = StartCLDIndex + (axi - 1) * 2;
- if (cld[cli] == AIndex[0]) nc.A1.v = cld[cli + 1];
- if (cld[cli] == AIndex[1]) nc.A2.v = cld[cli + 1];
- if (cld[cli] == AIndex[2]) nc.A3.v = cld[cli + 1];
- if (cld[cli] == AIndex[3]) nc.A4.v = cld[cli + 1];
- if (cld[cli] == AIndex[4]) nc.A5.v = cld[cli + 1];
- if (cld[cli] == AIndex[5]) nc.A6.v = cld[cli + 1];
+ if (cld[cli] == AIndex[0]) src.A1.v = cld[cli + 1];
+ if (cld[cli] == AIndex[1]) src.A2.v = cld[cli + 1];
+ if (cld[cli] == AIndex[2]) src.A3.v = cld[cli + 1];
+ if (cld[cli] == AIndex[3]) src.A4.v = cld[cli + 1];
+ if (cld[cli] == AIndex[4]) src.A5.v = cld[cli + 1];
+ if (cld[cli] == AIndex[5]) src.A6.v = cld[cli + 1];
}
}
public void Ext_Axis(ICLDCommand cmd)
{
- E1_prev = nc.E1.v; E2_prev = nc.E2.v; E3_prev = nc.E3.v; E4_prev = nc.E4.v; E5_prev = nc.E5.v; E6_prev = nc.E6.v;
+ E1_prev = src.E1.v; E2_prev = src.E2.v; E3_prev = src.E3.v; E4_prev = src.E4.v; E5_prev = src.E5.v; E6_prev = src.E6.v;
// ===E1====
if (cmd.Ptr["Axes(ExtAxis1Pos)"] is not null)
{
- nc.E1.v = cmd.Flt["Axes(ExtAxis1Pos).Value"];
- nc.E1.v0 = MaxReal;
+ src.E1.v = cmd.Flt["Axes(ExtAxis1Pos).Value"];
+ src.E1.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
if (cmd.Ptr["MidPos.Axes(ExtAxis1Pos)"] is not null && mid_end == 1)
{
- nc.E1.v = cmd.Flt["MidPos.Axes(ExtAxis1Pos).Value"];
- nc.E1.v0 = MaxReal;
+ src.E1.v = cmd.Flt["MidPos.Axes(ExtAxis1Pos).Value"];
+ src.E1.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
if (cmd.Ptr["EndPos.Axes(ExtAxis1Pos)"] is not null && mid_end == 2)
{
- nc.E1.v = cmd.Flt["EndPos.Axes(ExtAxis1Pos).Value"];
- nc.E1.v0 = MaxReal;
+ src.E1.v = cmd.Flt["EndPos.Axes(ExtAxis1Pos).Value"];
+ src.E1.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
// ===E2====
if (cmd.Ptr["Axes(ExtAxis2Pos)"] is not null)
{
- nc.E2.v = cmd.Flt["Axes(ExtAxis2Pos).Value"];
- nc.E2.v0 = MaxReal;
+ src.E2.v = cmd.Flt["Axes(ExtAxis2Pos).Value"];
+ src.E2.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
if (cmd.Ptr["MidPos.Axes(ExtAxis2Pos)"] is not null && mid_end == 1)
{
- nc.E2.v = cmd.Flt["MidPos.Axes(ExtAxis2Pos).Value"];
- nc.E2.v0 = MaxReal;
+ src.E2.v = cmd.Flt["MidPos.Axes(ExtAxis2Pos).Value"];
+ src.E2.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
if (cmd.Ptr["EndPos.Axes(ExtAxis2Pos)"] is not null && mid_end == 2)
{
- nc.E2.v = cmd.Flt["EndPos.Axes(ExtAxis2Pos).Value"];
- nc.E2.v0 = MaxReal;
+ src.E2.v = cmd.Flt["EndPos.Axes(ExtAxis2Pos).Value"];
+ src.E2.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
// ===E3====
if (cmd.Ptr["Axes(ExtAxis3Pos)"] is not null)
{
- nc.E3.v = cmd.Flt["Axes(ExtAxis3Pos).Value"];
- nc.E3.v0 = MaxReal;
+ src.E3.v = cmd.Flt["Axes(ExtAxis3Pos).Value"];
+ src.E3.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
if (cmd.Ptr["MidPos.Axes(ExtAxis3Pos)"] is not null && mid_end == 1)
{
- nc.E3.v = cmd.Flt["MidPos.Axes(ExtAxis3Pos).Value"];
- nc.E3.v0 = MaxReal;
+ src.E3.v = cmd.Flt["MidPos.Axes(ExtAxis3Pos).Value"];
+ src.E3.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
if (cmd.Ptr["EndPos.Axes(ExtAxis3Pos)"] is not null && mid_end == 2)
{
- nc.E3.v = cmd.Flt["EndPos.Axes(ExtAxis3Pos).Value"];
- nc.E3.v0 = MaxReal;
+ src.E3.v = cmd.Flt["EndPos.Axes(ExtAxis3Pos).Value"];
+ src.E3.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
// ===E4====
if (cmd.Ptr["Axes(ExtAxis4Pos)"] is not null)
{
- nc.E4.v = cmd.Flt["Axes(ExtAxis4Pos).Value"];
- nc.E4.v0 = MaxReal;
+ src.E4.v = cmd.Flt["Axes(ExtAxis4Pos).Value"];
+ src.E4.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
if (cmd.Ptr["MidPos.Axes(ExtAxis4Pos)"] is not null && mid_end == 1)
{
- nc.E4.v = cmd.Flt["MidPos.Axes(ExtAxis4Pos).Value"];
- nc.E4.v0 = MaxReal;
+ src.E4.v = cmd.Flt["MidPos.Axes(ExtAxis4Pos).Value"];
+ src.E4.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
if (cmd.Ptr["EndPos.Axes(ExtAxis4Pos)"] is not null && mid_end == 2)
{
- nc.E4.v = cmd.Flt["EndPos.Axes(ExtAxis4Pos).Value"];
- nc.E4.v0 = MaxReal;
+ src.E4.v = cmd.Flt["EndPos.Axes(ExtAxis4Pos).Value"];
+ src.E4.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
// ===E5====
if (cmd.Ptr["Axes(ExtAxis5Pos)"] is not null)
{
- nc.E5.v = cmd.Flt["Axes(ExtAxis5Pos).Value"];
- nc.E5.v0 = MaxReal;
+ src.E5.v = cmd.Flt["Axes(ExtAxis5Pos).Value"];
+ src.E5.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
if (cmd.Ptr["MidPos.Axes(ExtAxis5Pos)"] is not null && mid_end == 1)
{
- nc.E5.v = cmd.Flt["MidPos.Axes(ExtAxis5Pos).Value"];
- nc.E5.v0 = MaxReal;
+ src.E5.v = cmd.Flt["MidPos.Axes(ExtAxis5Pos).Value"];
+ src.E5.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
if (cmd.Ptr["EndPos.Axes(ExtAxis5Pos)"] is not null && mid_end == 2)
{
- nc.E5.v = cmd.Flt["EndPos.Axes(ExtAxis5Pos).Value"];
- nc.E5.v0 = MaxReal;
+ src.E5.v = cmd.Flt["EndPos.Axes(ExtAxis5Pos).Value"];
+ src.E5.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
// ===E6====
if (cmd.Ptr["Axes(ExtAxis6Pos)"] is not null)
{
- nc.E6.v = cmd.Flt["Axes(ExtAxis6Pos).Value"];
- nc.E6.v0 = MaxReal;
+ src.E6.v = cmd.Flt["Axes(ExtAxis6Pos).Value"];
+ src.E6.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
if (cmd.Ptr["MidPos.Axes(ExtAxis6Pos)"] is not null && mid_end == 1)
{
- nc.E6.v = cmd.Flt["MidPos.Axes(ExtAxis6Pos).Value"];
- nc.E6.v0 = MaxReal;
+ src.E6.v = cmd.Flt["MidPos.Axes(ExtAxis6Pos).Value"];
+ src.E6.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
if (cmd.Ptr["EndPos.Axes(ExtAxis6Pos)"] is not null && mid_end == 2)
{
- nc.E6.v = cmd.Flt["EndPos.Axes(ExtAxis6Pos).Value"];
- nc.E6.v0 = MaxReal;
+ src.E6.v = cmd.Flt["EndPos.Axes(ExtAxis6Pos).Value"];
+ src.E6.v0 = MaxReal;
PTP_main_axes = PTP_main_axes + 1;
}
}