Software/C#
Flow Meter(FML300-D SERIES) 제어 클래스 - C#
sihwankim
2025. 3. 11. 15:35
반응형
public class FML300
{
private readonly SerialPort commPort ;
private readonly ModbusSerialMaster modbusSerialMaster ;
public FML300(ModbusSerialMaster modbusSerial)
{
modbusSerialMaster = modbusSerial;
}
//---------------------------------------------------------------------------
public FML300(SerialPort serialPort)
{
commPort = serialPort ;
modbusSerialMaster = ModbusSerialMaster.CreateRtu(commPort) ;
}
//---------------------------------------------------------------------------
public FML300(string portNumber)
{
try
{
commPort = new SerialPort(portNumber, 38400) ;
commPort.Parity = Parity.None;
commPort.StopBits = StopBits.One;
commPort.ReadTimeout = 100;
commPort.WriteTimeout = 100;
commPort.Open();
modbusSerialMaster = ModbusSerialMaster.CreateRtu(commPort) ;
}
catch
{
}
}
//---------------------------------------------------------------------------
public bool InstantaneousFlowRate(byte DeviceAddress, ref double FlowRate)
{
bool result = true ;
try
{
var buffer = modbusSerialMaster.ReadInputRegisters(DeviceAddress, 3, 1);
FlowRate = buffer[0] ;
}
catch
{
result = false ;
}
return result ;
}
//---------------------------------------------------------------------------
public bool FlowTemperature(byte DeviceAddress, ref double Temperature)
{
bool result = true ;
try
{
var buffer = modbusSerialMaster.ReadInputRegisters(DeviceAddress, 4, 1) ;
Temperature = buffer[0] ;
if(Temperature > 6000) Temperature = 0; // 물이 흐르지 않으면 온도가 큰값이 읽혀진다.
}
catch
{
result = false ;
}
return result ;
}
//---------------------------------------------------------------------------
public int FlowRateAndTemperature(byte DeviceAddress, ref double FlowRate, ref double Temperature)
{
int result = 0 ;
try
{
var buffer = modbusSerialMaster.ReadInputRegisters(DeviceAddress, 1, 4) ;
FlowRate = (double)buffer[1] / 100.0 ;
Temperature = (double)buffer[2] / 10.0 ;
if(Temperature > 6000) Temperature = 0; // 물이 흐르지 않으면 온도가 큰값이 읽혀진다.
}
catch
{
result = -1 ;
}
return result ;
}
//---------------------------------------------------------------------------
}
반응형