10#include "rttaskglobals.h"
18using namespace RSI::RapidCode::RealTimeTasks;
27 std::srand(std::time(
nullptr));
43 int random = std::rand() % 2;
44 double step = random ? 0.05 : -0.025;
45 data->average += step;
48 RTAxisGet(0)->MoveSCurve(data->average);
55RSI_TASK(CalculateTarget)
57 constexpr int NODE_INDEX = 0;
58 constexpr int ANALOG_INDEX = 0;
59 constexpr int ANALOG_MAX = 65536;
60 constexpr int ANALOG_ORIGIN = 42800;
62 auto networkNode = RTNetworkNodeGet(NODE_INDEX);
65 int32_t analogInVal = networkNode->AnalogInGet(ANALOG_INDEX);
68 int32_t shiftedVal = analogInVal - ANALOG_ORIGIN;
71 int32_t modVal = (shiftedVal + ANALOG_MAX) % ANALOG_MAX;
74 data->targetPosition = double(modVal) / ANALOG_MAX;
83 constexpr int AXIS_INDEX = 1;
84 constexpr double TOLERANCE = 0.02;
86 auto axis = RTAxisGet(AXIS_INDEX);
88 if (abs(axis->ActualPositionGet() - data->targetPosition) > TOLERANCE)
91 axis->MoveSCurve(data->targetPosition);