// // 
// // (c) 2010 eedv holger@eiboeck.de
// // 
using System;

namespace KaltgasTool
{
    public class Leistungssteller
    {
        public enum Register
        {
            Jet = 0x0050,
            ComputerJet = 0x0056,
            Masterrelais = 0x0052,
            Hilfsrelais = 0x0053,
            Slavetaster = 0x0054,
            Eeprom = 0x0041,
            Grenzwertalarm = 0x0042,
        }

        [Flags]
        public enum EGrenzwertalarm
        {
            Jet = 0x0001,
            Heater = 0x0002
        }

        public const byte ModBusAddress = 11;
    }

    public class JumoDTron
    {
        #region Register enum

        public enum Register
        {
            ParamaterPage = 0x0013,

            ReglerStatus = 0x0020,
            Binaerausgaenge1Bis10 = 0x0021,
            Analogeingang1Temp = 0x0035,
            Analogeingang2Temp = 0x0037,
            SollwertW1 = 0x3100,
            Binaerausgaenge1Bis10Steuerung = 0x0027,
            ParameterSplSph = 0x3008, // 4 worte
            ParameterInp12 = 0x3500, // 26 worte
            ParameterOut12 = 0x3618, // wort
            ParameterDisuDisl = 0x3800, // 1 
            ParametersatzUmschaltung = 0x0074, // int 1=P1, 2=P2
            BinaerfunktionenRegler = 0x0070, // starten der selbstoptimierung = 0x0080
            ParameterCprAnalogSelector = 0x300c,
            RegelparameterSet1 = 0x3000,
            RegelparameterSet2 = 0x3014,
        } ;

        #endregion

        [Flags]
        public enum EBinaerausgaenge
        {
            Ausgang1 = 0x0001,
            Ausgang2 = 0x0002
        }

        public const ushort Binaerausgaenge110Steuerung1Mask = 0x8001;
        public const ushort Binaerausgaenge110Steuerung2Mask = 0x8002;
        public const ushort Binaerausgang1Mask = 0x0001;
        public const ushort Binaerausgang2Mask = 0x0002;

        public const byte ModBusAddress = 1;

        [Serializable]
        public class AutotuneParameters
        {
            public ParameterSet ParameterSet1;
            public ParameterSet ParameterSet2;
        }

        [Serializable]
        public struct ParameterSet
        {
            public float Pb1;
            public float Pb2;
            public int Dt;
            public int Rt;
            public float Cy1;
            public float Cy2;
            public float Db;
            public float HyS1;
            public float HyS2;
            public int Tt;
            public int Y0;
            public int Y1;
            public int Y2;
        }
    }
}