/* ========================================================================
* Copyright (c) 2005-2026 The OPC Foundation, Inc. All rights reserved.
*
* OPC Foundation MIT License 1.00
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* The complete license agreement can be found here:
* http://opcfoundation.org/License/MIT/1.00/
* ======================================================================*/
namespace MachinerySample
{
///
/// The published data of the simulated machine. The simulation and the
/// address space both read it from here, so a value can never disagree
/// between the two.
///
internal static class PressDatasheet
{
public const string Manufacturer = "Acme Machine Tools";
public const string ManufacturerUri = "urn:acme-machine-tools.example";
public const string Model = "HydraPress 500";
public const string ProductCode = "HP-500-EU";
public const string SerialNumber = "HP500-2024-0001";
public const string ProductInstanceUri =
"urn:acme-machine-tools.example:hydrapress:HP500-2024-0001";
public const string DeviceClass = "HydraulicPress";
public const string HardwareRevision = "C";
public const string SoftwareRevision = "4.2.1";
public const string Location = "Hall 3 / Line 2";
public const ushort YearOfConstruction = 2024;
public const byte MonthOfConstruction = 6;
/// Nominal press force, in kN.
public const double NominalForceKiloNewton = 5000.0;
/// Hydraulic oil temperature alarm limits, in °C.
public const double OilTemperatureLowLimit = 15.0;
public const double OilTemperatureHighLimit = 65.0;
public const double OilTemperatureLowLowLimit = 5.0;
public const double OilTemperatureHighHighLimit = 80.0;
public const double OilTemperatureSetpoint = 45.0;
/// Instrument range of the oil-temperature sensor, in °C.
public const double OilTemperatureRangeLow = -20.0;
public const double OilTemperatureRangeHigh = 120.0;
///
/// Compressed-air supply pressure. OPC 40001-4 pins
/// 3:Pressure to pascal, so 6.2 bar is published as 620 000 Pa.
///
public const float CompressedAirPressurePascal = 620_000.0f;
///
/// Compressed-air supply temperature. OPC 40001-4 pins
/// 3:Temperature to kelvin, so 21.5 °C is published as
/// 294.65 K.
///
public const float CompressedAirTemperatureKelvin = 294.65f;
/// Cumulative compressed-air volume, in m³.
public const float CompressedAirVolume = 184_320.0f;
/// Compressed-air volume flow rate, in m³/h.
public const float CompressedAirVolumeFlowRate = 18.4f;
/// Cumulative electrical energy drawn, in W·h.
public const double ElectricalEnergyImportWattHours = 4_812_600.0;
/// Total active power the press draws, in W.
public const float ElectricalActivePowerTotal = 41_250.0f;
/// Upper die lifetime, in press cycles.
public const double DieLifetimeCycles = 250_000.0;
public const double DieRemainingCycles = 118_400.0;
public const double DieWarningCycles = 25_000.0;
/// Hours the press has been powered on since commissioning.
public const double PowerOnDurationHours = 12_480.0;
/// Hours the press has been pressing since commissioning.
public const double OperationDurationHours = 9_215.5;
/// Seal lifetime, in press cycles.
public const double SealLifetimeCycles = 2_000_000.0;
public const double SealRemainingCycles = 1_412_500.0;
public const double SealWarningCycles = 200_000.0;
/// Nominal cycle time of one press stroke.
public const double CycleSeconds = 4.0;
}
}