Example of Touch Probe for Panasonic Drives.
- Warning
- This is a sample program to assist in the integration of the RMP motion controller with your application. It may not contain all of the logic and safety features that your application requires. We recommend that you wire an external hardware emergency stop (e-stop) button for safety when using our code sample apps. Doing so will help ensure the safety of you and those around you and will prevent potential injury or damage.
The sample apps assume that the system (network, axes, I/O) are configured prior to running the code featured in the sample app. See the Configuration page for more information.
📜 Touch Probe Panasonic
Learn how to use Touch Probe with Panasonic Drives:
1. Things you need to know for Panasonics.
2. Understand Touch Probe Function (0x60B8 Sub 0 Size 2)
3. Understand Touch Probe Status (0x60B9 Sub 0 Size 2)
4. Understand Touch Probe captured values (0x60BA-0x60BD Sub 0 Size 4)
- Note
- Things you need to know for Panasonics:
1. There are two Touch Probes available.
2. They default to SI5 (EXT1) & SI6 (EXT2) and are configurable.
3. Do not try to capture on both the Positive and Negative Edge of a Signal on the same Touch Probe.
4. Do not configure to the Falling Edge of the Z-phase.
5. If you change configuration of a Touch Probe after you have enabled it, you will need to disable it for changes to take place.
6. Depending on your Configuration you may have have to use PDO or SDO calls. By default, Touch Probe 1 is available as a cyclically exchanged value.
TOUCH PROBE FUNCTION (0x60B8 Sub 0 Size 2)
Bit 0 - Enable(1) Touch Probe 1
Bit 1 - First Event(0), Continuous(1) [Continuous will overwrite old values on each new signal]
Bit 2 - Trigger on EXT1(0), Z-phase(1)
Bit 4 - Sample Positive Edge(1) (Store position to 0x60BA Sub 0 Size 4)
Bit 5 - Sample Negative Edge(1) (Store position to 0x60BB Sub 0 Size 4)
Bit 8 - Enable(1) Touch Probe 2
Bit 9 - First Event(0), Continuous(1) [Continuous will overwrite old values on each new signal]
Bit 10 - Trigger on EXT2(0), Z-phase(1)
Bit 12 - Sample Positive Edge(1) (Store position to 0x60BC Sub 0 Size 4)
Bit 13 - Sample Negative Edge(1) (Store position to 0x60BD Sub 0 Size 4)
TOUCH PROBE STATUS (0x60B9 Sub 0 Size 2)
Bit 0 - Touch Probe 1 Enabled(1)
Bit 1 - Positive Edge Value Stored(1)
Bit 2 - Negative Edge Value Stored(1)
Bit 8 - Touch Probe 2 Enabled(1)
Bit 9 - Positive Edge Value Stored(1)
Bit 10 - Negative Edge Value Stored(1)
static void Main(string[] args)
{
CaptureEachIndexPulseDuringMotion(controller);
CapturePositionOnFallingEdgeOfSI6(controller, axis);
}
{
const int TOUCH_PROBE_OUTPUT_INDEX = 3;
const int TOUCH_PROBE_STATUS_INDEX = 6;
const int TOUCH_PROBE_VALUE_INDEX = 7;
const ulong TOUCH_PROBE_ON_EACH_Z_PHASE_COMMAND = 0x17;
}
{
const int TOUCH_PROBE_OUTPUT_INDEX = 3;
const int TOUCH_PROBE_STATUS_INDEX = 6;
const int TOUCH_PROBE_2_FALLING_EDGE_VALUE_INDEX = 0x60BD;
const int TOUCH_PROBE_2_FALLING_EDGE_VALUE_SUB_INDEX = 0x0;
const int TOUCH_PROBE_2_FALLING_EDGE_VALUE_SIZE = 0x4;
const ulong TOUCH_PROBE_2_ON_FIRST_FALLING_EXT2_COMMAND = 0x2100;
int fallingEdgeExt2 = axis.
NetworkNode.
ServiceChannelRead(TOUCH_PROBE_2_FALLING_EDGE_VALUE_INDEX, TOUCH_PROBE_2_FALLING_EDGE_VALUE_SUB_INDEX, TOUCH_PROBE_2_FALLING_EDGE_VALUE_SIZE);
}
Learn more in topic page.