//Vänta på ingång (Modbus)

int timeoutInputs = 0;
int timeOutTime = 500;


//if ((Evar == null) || (Hvar == null) || (Qvar == null))
if ((Evar == null) || (Qvar == null))

{

	exec.AddStatusmessage("Wait for input. Parameters: E<Modbus address> Q<0|1>(NC/NO)");
	exec.Stop();
	return;

}
if (Evar < 30 || Evar > 37)
{

  exec.AddStatusmessage("Only inputs 30-37");
  exec.Stop();
  return;

}

int Eint = Convert.ToInt32(Evar);

//int Hint = Convert.ToInt32(Hvar);

int Qint = Convert.ToInt32(Qvar);

 //exec.AddStatusmessage("E = " + Eint + " Q = " + Qint);
 



ushort Readvalue = 0;
if (Qint == 0)
{
	if(exec.GetModbusregister(Eint, out Readvalue))
	{
		
		while(Readvalue == 1) //Vänta tills 0
		{
		  exec.GetModbusregister(Eint, out Readvalue);
		  exec.Wait(10); // Wait one 100msec
		  timeoutInputs = timeoutInputs + 1;
		  if(timeoutInputs > timeOutTime)
		  {
				Console.WriteLine("Mobusregister " + Eint + " = " + Readvalue);
				exec.Stop();
				exec.AddStatusmessage("Givare ej paverkad (NC)");
				
				return;
		  }
		}
	}
  
}

else
{
	if(exec.GetModbusregister(Eint, out Readvalue))
	{
		
		while(Readvalue == 0) //Vänta tills 1
		{
		  exec.GetModbusregister(Eint, out Readvalue);
		  exec.Wait(10); // Wait one 100msec
		  timeoutInputs = timeoutInputs + 1;
		  if(timeoutInputs > timeOutTime)
		  {
				Console.WriteLine("Mobusregister " + Eint + " = " + Readvalue);
				exec.Stop();
				exec.AddStatusmessage("Givare ej paverkad (NO)");
				
				return;
		  }
		}
	}
  
}
Console.WriteLine("Mobusregister " + Eint + " = " + Readvalue);
while(exec.IsMoving());
  
  
  
  
  

