/*
This is a minimum demo program to troubleshoot / document an issue I am seeing with erroneous reporting
of inputs bits on a Konnect board.
The issue is two IO bits are reported as ALWAY ON, regardless of actual input state
- Bits 1046 & 1047 are reported/read as ALWAYS ON (Board 0)
- Bits 1110 & 1111 are reported/read as ALWAYS ON (Board 1)
This happens for sure when the following conditions are met:
- ch3 is configured as a step/dir driver
- ch4 is configure as a step/dir driver
- ch3 is ENABLED while ch4 is DISABLED
*** If both axis are Enabled, the Inputs are reported/read correctly
*** If ch3 is enabled and ch4 is disabled, the Inputs are reported as ALWAY ON
*** If ch3 is disabled, the Inputs are reported correctly, regardless of the state of ch4
Other notes:
- I am documenting a dual Konnect setup. This happens with just a single Konnect system as well.
- I have not tested with triple or quad Konnect systems.
*/
#include "KMotionDef.h"
//define for drive mode for Step/Dir generators
#define DRIVE_MODE_OC_QUAD 16
//step/dir geneator ID's
#define STEPDIR_CH3 3
#define STEPDIR_CH7 7
main()
{
InitAux();
AddKonnect(0,&VirtualBits,VirtualBitsEx); //JP6, first connect
AddKonnect(1,VirtualBitsEx+1,VirtualBitsEx+2); //JP6, second Konnect
//initialize ch4 as a step/dir output using STEPGEN#7 in open collector mode
ch4->InputMode=NO_INPUT_MODE;
ch4->OutputMode=STEP_DIR_MODE;
ch4->OutputChan0= STEPDIR_CH7 + DRIVE_MODE_OC_QUAD;
EnableAxis(4);
//initialize ch3 as a step/dir output using STEPGEN#3 in open collector mode
ch3->InputMode=NO_INPUT_MODE;
ch3->OutputMode=STEP_DIR_MODE;
ch3->OutputChan0= STEPDIR_CH3 + DRIVE_MODE_OC_QUAD;
EnableAxis(3);
//now, using the Kmotioin GUI, go to the Axis screen and toggle ENABLE of ch3/ch4 while watching
//the state of I/O 1046/1047,1110/1110 with NOTHING connected to the Konnect Board
}
Erroneous Reporting of IO bits on Konnect - minimum example program
Moderators: TomKerekes, dynomotion
- TomKerekes
- Posts: 2676
- Joined: Mon Dec 04, 2017 1:49 am
Re: Erroneous Reporting of IO bits on Konnect - minimum example program
Hi Tremel,
You are correct that is a bug and we are able to reproduce it. Thanks for the precise problem description.
A Konnect operation is performed before and after processing Axis 4. If Axis 4 is doing nothing the time between Konnect operations is very marginal. Due to complex reasons enabling Axis 3 makes the disabled Axis 4 process in slightly less time.
We will release a fixed Test Version soon. In the meantime as a workaround if you set Axis 4 Input Mode to Encoder (reading any encoder channel) it should always work properly.
You are correct that is a bug and we are able to reproduce it. Thanks for the precise problem description.
A Konnect operation is performed before and after processing Axis 4. If Axis 4 is doing nothing the time between Konnect operations is very marginal. Due to complex reasons enabling Axis 3 makes the disabled Axis 4 process in slightly less time.
We will release a fixed Test Version soon. In the meantime as a workaround if you set Axis 4 Input Mode to Encoder (reading any encoder channel) it should always work properly.
Regards,
Tom Kerekes
Dynomotion, Inc.
Tom Kerekes
Dynomotion, Inc.
Re: Erroneous Reporting of IO bits on Konnect - minimum example program
Thanks Tom!
I appreciate the explanation and the work-around suggestion. I will implement the Encoder Input configuration on my Axis 4.
I am using this setup on fairly complex automated inspection machine - with the various axis being enabled and disabled throughout operation. It just so happens that the sensors hooked up to 1046/1047 are typically only "used" when Axis 4 is enabled, so I didn't notice the behavior for the last several months of development.
I swapped sensors on a re-design - and while setting them up on the machine (with axis 4 disabled) - I got really confused...
Glad to know the root cause!
I appreciate the explanation and the work-around suggestion. I will implement the Encoder Input configuration on my Axis 4.
I am using this setup on fairly complex automated inspection machine - with the various axis being enabled and disabled throughout operation. It just so happens that the sensors hooked up to 1046/1047 are typically only "used" when Axis 4 is enabled, so I didn't notice the behavior for the last several months of development.
I swapped sensors on a re-design - and while setting them up on the machine (with axis 4 disabled) - I got really confused...
Glad to know the root cause!
- TomKerekes
- Posts: 2676
- Joined: Mon Dec 04, 2017 1:49 am
Re: Erroneous Reporting of IO bits on Konnect - minimum example program
Regards,
Tom Kerekes
Dynomotion, Inc.
Tom Kerekes
Dynomotion, Inc.