You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
3.9 KiB
C#
113 lines
3.9 KiB
C#
namespace OPCDA
|
|
{
|
|
using System;
|
|
|
|
public class OPCQuality
|
|
{
|
|
public limitBits LimitField;
|
|
public qualityBits QualityField;
|
|
public byte VendorField;
|
|
|
|
public OPCQuality(qualityBits qstat)
|
|
{
|
|
this.QualityField = qualityBits.good;
|
|
this.LimitField = limitBits.none;
|
|
this.VendorField = 0;
|
|
this.QualityField = qstat;
|
|
}
|
|
|
|
public OPCQuality(short qVal)
|
|
{
|
|
this.QualityField = qualityBits.good;
|
|
this.LimitField = limitBits.none;
|
|
this.VendorField = 0;
|
|
this.QualityField = ((qualityBits) qVal) & (qualityBits.goodLocalOverride | qualityBits.badWaitingForInitialData | qualityBits.badConfigurationError);
|
|
this.LimitField = ((limitBits) qVal) & limitBits.constant;
|
|
this.VendorField = (byte) (this.VendorField >> 8);
|
|
}
|
|
|
|
public short GetCode()
|
|
{
|
|
ushort num = 0;
|
|
num = (ushort) (num | ((ushort) this.QualityField));
|
|
num = (ushort) (num | ((ushort) this.LimitField));
|
|
num = (ushort) (num | ((ushort) (this.VendorField << 8)));
|
|
if (num > 0x7fff)
|
|
{
|
|
return (short) -(0x10000 - num);
|
|
}
|
|
return (short) num;
|
|
}
|
|
|
|
public static qualityBits ParseQualityBits(string qs)
|
|
{
|
|
qs = qs.ToLower();
|
|
if (qualityBits.good.ToString() == qs)
|
|
{
|
|
return qualityBits.good;
|
|
}
|
|
if (qualityBits.goodLocalOverride.ToString() == qs)
|
|
{
|
|
return qualityBits.goodLocalOverride;
|
|
}
|
|
if (qualityBits.bad.ToString() != qs)
|
|
{
|
|
if (qualityBits.badConfigurationError.ToString() == qs)
|
|
{
|
|
return qualityBits.badConfigurationError;
|
|
}
|
|
if (qualityBits.badNotConnected.ToString() == qs)
|
|
{
|
|
return qualityBits.badNotConnected;
|
|
}
|
|
if (qualityBits.badDeviceFailure.ToString() == qs)
|
|
{
|
|
return qualityBits.badDeviceFailure;
|
|
}
|
|
if (qualityBits.badSensorFailure.ToString() == qs)
|
|
{
|
|
return qualityBits.badSensorFailure;
|
|
}
|
|
if (qualityBits.badLastKnownValue.ToString() == qs)
|
|
{
|
|
return qualityBits.badLastKnownValue;
|
|
}
|
|
if (qualityBits.badCommFailure.ToString() == qs)
|
|
{
|
|
return qualityBits.badCommFailure;
|
|
}
|
|
if (qualityBits.badOutOfService.ToString() == qs)
|
|
{
|
|
return qualityBits.badOutOfService;
|
|
}
|
|
if (qualityBits.badWaitingForInitialData.ToString() == qs)
|
|
{
|
|
return qualityBits.badWaitingForInitialData;
|
|
}
|
|
if (qualityBits.uncertain.ToString() == qs)
|
|
{
|
|
return qualityBits.uncertain;
|
|
}
|
|
if (qualityBits.uncertainLastUsableValue.ToString() == qs)
|
|
{
|
|
return qualityBits.uncertainLastUsableValue;
|
|
}
|
|
if (qualityBits.uncertainSensorNotAccurate.ToString() == qs)
|
|
{
|
|
return qualityBits.uncertainSensorNotAccurate;
|
|
}
|
|
if (qualityBits.uncertainEUExceeded.ToString() == qs)
|
|
{
|
|
return qualityBits.uncertainEUExceeded;
|
|
}
|
|
if (qualityBits.uncertainSubNormal.ToString() == qs)
|
|
{
|
|
return qualityBits.uncertainSubNormal;
|
|
}
|
|
}
|
|
return qualityBits.bad;
|
|
}
|
|
}
|
|
}
|
|
|