I noticed that when turning Conveyor on <=> off, the value change does not come across the SDK.
class Program
{
//In this sample we are showing how to use the InputsNameChanged, InputsValueChange, OutputsNameChanged and OutputsValueChange events.
//Add, change and remove Tags in Factory I/O to get notified about its memories changes (no Saved Scene needed).
static void Main(string[] args)
{
//Registering on the events
MemoryMap.Instance.InputsNameChanged += new MemoriesChangedEventHandler(Instance_NameChanged);
MemoryMap.Instance.InputsValueChanged += new MemoriesChangedEventHandler(Instance_ValueChanged);
MemoryMap.Instance.OutputsNameChanged += new MemoriesChangedEventHandler(Instance_NameChanged);
MemoryMap.Instance.OutputsValueChanged += new MemoriesChangedEventHandler(Instance_ValueChanged);
Console.WriteLine("Press any key to exit...");
//Calling the Update method will fire events if any memory value or name changed.
//When a Tag is created in Factory I/O a name is given to its memory, firing the name changed event, and when a tag's value is changed, it is fired the value changed event.
//In this case we are updating the MemoryMap each 16 milliseconds (the typical update rate of Factory I/O).
while (!Console.KeyAvailable)
{
MemoryMap.Instance.Update();
How are you changing the conveyor tag?
Using the Factory IO UI , forces the tag to a certain value only inside Factory IO, so the forced value is not propagated to the SDK.
You will get the outputs value changed event when using other controller to set the value, for example by using Control I/O to change the conveyor tag.
Ah, this makes sense. Thank you for the explanation.