const int INPUT_INDEX = 0;
const int OUTPUT_INDEX = 1;
controller.AxisCountSet(1);
controller.UserLimitCountSet(1);
controller.InterruptEnableSet(true);
IOPoint input0 = IOPoint.CreateDigitalInput(controller, userBufferAddress, INPUT_INDEX);
IOPoint output0 = IOPoint.CreateDigitalOutput(controller, userBufferAddress, OUTPUT_INDEX);
int userLimitNumber = 0;
int condition = 0;
UInt64 inputAddress = input0.AddressGet();
uint test = (uint)input0.MaskGet();
uint inputMask = (uint)input0.MaskGet();
uint limtValue = (uint)input0.MaskGet();
controller.UserLimitConditionSet(userLimitNumber,
condition,
logic,
inputAddress,
inputMask,
limtValue);
int axisNumber = 0;
int duration = 0;
controller.UserLimitConfigSet(userLimitNumber,
triggerType,
action,
axisNumber,
duration);
uint andMask = (uint)output0.MaskGet();
uint orMask = (uint)output0.MaskGet();
UInt64 outputAddress = output0.AddressGet();
bool enableOutput = true;
controller.UserLimitOutputSet(userLimitNumber,
andMask,
orMask,
outputAddress,
enableOutput);
while (controller.InterruptWait(250) !=
RSIEventType.RSIEventTypeUSER_LIMIT)
{
Assert.False(output0.Get(), "We expect the output to NOT be triggered");
controller.MemorySet(input0.AddressGet(), 1);
}
Assert.True(output0.Get(), "We expect the output to be triggered");
controller.UserLimitDisable(userLimitNumber);
output0.Set(false);