MPG for positioning and FRO control
Moderators: TomKerekes, dynomotion
-
- Posts: 59
- Joined: Sun Aug 21, 2022 11:22 pm
Re: MPG for positioning and FRO control
Hello,
I've done the test using a default screen, but still without success
So, I'm still looking for a solution. Please let me know if there is anything else I could do.
Sincerely,
Guilherme
I've done the test using a default screen, but still without success
So, I'm still looking for a solution. Please let me know if there is anything else I could do.
Sincerely,
Guilherme
- TomKerekes
- Posts: 2676
- Joined: Mon Dec 04, 2017 1:49 am
Re: MPG for positioning and FRO control
Hi Guilherme,
Please post your Initialization C Program which calls ChangeFROAndRRO() etc.
Please post your Initialization C Program which calls ChangeFROAndRRO() etc.
Regards,
Tom Kerekes
Dynomotion, Inc.
Tom Kerekes
Dynomotion, Inc.
-
- Posts: 59
- Joined: Sun Aug 21, 2022 11:22 pm
Re: MPG for positioning and FRO control
Hello Tom,
Ok. Here is a simplified version from the code that is in my machine, having just MPG service attached to the initialization's infinite loop.
Sincerely,
Guilherme
Ok. Here is a simplified version from the code that is in my machine, having just MPG service attached to the initialization's infinite loop.
Sincerely,
Guilherme
- Attachments
-
- MPG_test.zip
- (48.42 KiB) Downloaded 188 times
- TomKerekes
- Posts: 2676
- Joined: Mon Dec 04, 2017 1:49 am
Re: MPG for positioning and FRO control
Hi Guilherme,
I think I see the issue.
is called before it has been defined and passes the FRO as a double where the function is expecting a float.
The includes are in this order:
MPGWatch.c calls DoPCFloat before KflopToKMotionCNCFunctions.c has been included.
The standard TCC67 compiler is very fast but not great at giving warnings. If you check the TI Compiler (right click) it will flag these errors. It reports:
"C:\KMotion435h\C Programs\MPG_test\MPGWatch.c", line 113: warning: missing return statement at end of non-void function "EvaluateSelectedAxis"
"C:\KMotion435h\C Programs\MPG_test\MPGWatch.c", line 143: warning: function declared implicitly
"C:\KMotion435h\C Programs\MPG_test\MPGWatch.c", line 120: warning: variable "LastUpdateEncoder" was declared but never referenced
"C:\KMotion435h\C Programs\MPG_test\MPGWatch.c", line 164: warning: function declared implicitly
"C:\KMotion435h\C Programs\MPG_test\MPGWatch.c", line 246: warning: last line of file ends without a newline
"C:\KMotion435h\C Programs\KflopToKMotionCNCFunctions.c", line 4: error: declaration is incompatible with previous "DoPCFloat" (declared at line 143 of "C:\KMotion435h\C Programs\MPG_test\MPGWatch.c")
"C:\KMotion435h\C Programs\MPG_test\InitConfigButtonAction.c", line 23: warning: last line of file ends without a newline
1 error detected in the compilation of "C:\KMotion435h\C Programs\MPG_test\InitConfigButtonAction.c".
>> Compilation failure
Please correct this and try again.
HTH
I think I see the issue.
Code: Select all
DoPCFloat(PC_COMM_SET_FRO,FRO);
The includes are in this order:
Code: Select all
#include "KMotionDef.h"
#include "InitConfig.c"
#include "MPGWatch.c"
#ifndef TMP
#define TMP 10 // which spare persist to use to transfer data
#include "KflopToKMotionCNCFunctions.c"
#endif
The standard TCC67 compiler is very fast but not great at giving warnings. If you check the TI Compiler (right click) it will flag these errors. It reports:
"C:\KMotion435h\C Programs\MPG_test\MPGWatch.c", line 113: warning: missing return statement at end of non-void function "EvaluateSelectedAxis"
"C:\KMotion435h\C Programs\MPG_test\MPGWatch.c", line 143: warning: function declared implicitly
"C:\KMotion435h\C Programs\MPG_test\MPGWatch.c", line 120: warning: variable "LastUpdateEncoder" was declared but never referenced
"C:\KMotion435h\C Programs\MPG_test\MPGWatch.c", line 164: warning: function declared implicitly
"C:\KMotion435h\C Programs\MPG_test\MPGWatch.c", line 246: warning: last line of file ends without a newline
"C:\KMotion435h\C Programs\KflopToKMotionCNCFunctions.c", line 4: error: declaration is incompatible with previous "DoPCFloat" (declared at line 143 of "C:\KMotion435h\C Programs\MPG_test\MPGWatch.c")
"C:\KMotion435h\C Programs\MPG_test\InitConfigButtonAction.c", line 23: warning: last line of file ends without a newline
1 error detected in the compilation of "C:\KMotion435h\C Programs\MPG_test\InitConfigButtonAction.c".
>> Compilation failure
Please correct this and try again.
HTH
Regards,
Tom Kerekes
Dynomotion, Inc.
Tom Kerekes
Dynomotion, Inc.
-
- Posts: 59
- Joined: Sun Aug 21, 2022 11:22 pm
Re: MPG for positioning and FRO control
Hello,
Thanks a lot Tom, this finally solved my problem!!
Nice tip about the TI compiler.
Sincerely,
Guilherme
Thanks a lot Tom, this finally solved my problem!!
Nice tip about the TI compiler.
Sincerely,
Guilherme
-
- Posts: 59
- Joined: Sun Aug 21, 2022 11:22 pm
Re: MPG for positioning and FRO control
Hello,
Tom, I tried to use the incremental mode to set FRO and RRO intending to have some sync with the values commanded by the UI, but I got an issue when commanding the multiplier to a value less than 0.1.
I thought that KMotionCNC would block the value, but what happens is that it lets the value go less than the limit, and when I try to raise the number again it blocks stating that the value should be greater than 0.1.
To be able to command the values again via the MPG controller I needed to change the multiplier via the UI.
That being said, is it possible to keep track of the multipliers (FRO and RRO) written in the UI, so that I can block the command via code when reaching near that limit?
Or, do you see any other alternative to synchronize the values commanded via MPG and the values coming from the UI?
The current code that handles the MPG is attached. BasicServiceMPG() is called in the infinite loop from the init program. ChangeFROAndRRO() is the function to handle the incremental set of FRO and RRO. I am using version 4.35h from KMotionCNC.
Sincerely,
Guilherme
Tom, I tried to use the incremental mode to set FRO and RRO intending to have some sync with the values commanded by the UI, but I got an issue when commanding the multiplier to a value less than 0.1.
I thought that KMotionCNC would block the value, but what happens is that it lets the value go less than the limit, and when I try to raise the number again it blocks stating that the value should be greater than 0.1.
To be able to command the values again via the MPG controller I needed to change the multiplier via the UI.
That being said, is it possible to keep track of the multipliers (FRO and RRO) written in the UI, so that I can block the command via code when reaching near that limit?
Or, do you see any other alternative to synchronize the values commanded via MPG and the values coming from the UI?
The current code that handles the MPG is attached. BasicServiceMPG() is called in the infinite loop from the init program. ChangeFROAndRRO() is the function to handle the incremental set of FRO and RRO. I am using version 4.35h from KMotionCNC.
Sincerely,
Guilherme
- Attachments
-
- MPGWatch.c
- (6.53 KiB) Downloaded 198 times
- TomKerekes
- Posts: 2676
- Joined: Mon Dec 04, 2017 1:49 am
Re: MPG for positioning and FRO control
Hi Guilherme,
Please post your include files.
Please post your include files.
Regards,
Tom Kerekes
Dynomotion, Inc.
Tom Kerekes
Dynomotion, Inc.
-
- Posts: 59
- Joined: Sun Aug 21, 2022 11:22 pm
Re: MPG for positioning and FRO control
Hello,
Find attached my source files. InitConfigButtonAction.c contains the program that runs when the Init button is pressed, and MPGWatch.c contains MPG related code.
Sincerely,
Guilherme
Find attached my source files. InitConfigButtonAction.c contains the program that runs when the Init button is pressed, and MPGWatch.c contains MPG related code.
Sincerely,
Guilherme
- Attachments
-
- source_files.zip
- (27.69 KiB) Downloaded 206 times
- TomKerekes
- Posts: 2676
- Joined: Mon Dec 04, 2017 1:49 am
Re: MPG for positioning and FRO control
Hi Guilherme,
CS0_LastFRO and CS0_LastRapidFRO can be used as the last commanded Hardware FROs. The code below seems to work for preventing below 0.1. But I don't have a proper solution for above 1.0. Do you wish to allow FRO or RRO above 1.0? If no you could also limit changes above 1.0. Do you wish to use Software FRO?
CS0_LastFRO and CS0_LastRapidFRO can be used as the last commanded Hardware FROs. The code below seems to work for preventing below 0.1. But I don't have a proper solution for above 1.0. Do you wish to allow FRO or RRO above 1.0? If no you could also limit changes above 1.0. Do you wish to use Software FRO?
Code: Select all
if ((Encoder > CHANGE_TOL || Encoder < -CHANGE_TOL) && T > LastTime+CHANGE_TIME)
{
incrementFactorFRO = (Encoder > 0) ? 1.1 : 0.9;
if (CS0_LastFRO * incrementFactorFRO < 0.1)incrementFactorFRO = CS0_LastFRO/0.1;
printf("FRO increment factor: %f. MPGWatch.c.\n", incrementFactorFRO);
DoPCFloat(PC_COMM_SET_FRO_INC, incrementFactorFRO);
incrementFactorRRO = (Encoder > 0) ? 1.1 : 0.9;
if (CS0_LastRapidFRO * incrementFactorRRO < 0.1)incrementFactorRRO = CS0_LastRapidFRO/0.1;
printf("RRO increment factor: %f. MPGWatch.c.\n", incrementFactorRRO);
DoPCFloat(PC_COMM_SET_RRO_INC, incrementFactorRRO);
LastTime=T;
Encoder = 0;
}
Regards,
Tom Kerekes
Dynomotion, Inc.
Tom Kerekes
Dynomotion, Inc.
-
- Posts: 59
- Joined: Sun Aug 21, 2022 11:22 pm
Re: MPG for positioning and FRO control
Hello Tom,
Thanks for the response. I'll try it on my machine using these variables you mentioned to keep track of FRO and RRO, also adding a limit in the positive end at 1.0.
I'm not sure about the difference between software and hardware FRO. My intent is to have sync between UI, and MPG FRO and RRO commands.
Sincerely,
Guilherme
Thanks for the response. I'll try it on my machine using these variables you mentioned to keep track of FRO and RRO, also adding a limit in the positive end at 1.0.
I'm not sure about the difference between software and hardware FRO. My intent is to have sync between UI, and MPG FRO and RRO commands.
Sincerely,
Guilherme