private void CopyTag(PLCNckTag oldTag, object tag = null)
        {
            if (oldTag != null)
            {
                this.TagDataSource        = oldTag.TagDataSource;
                this.TagDataType          = oldTag.TagDataType;
                this.ByteAddress          = oldTag.ByteAddress;
                this.BitAddress           = oldTag.BitAddress;
                this.ArraySize            = oldTag.ArraySize;
                this.DataTypeStringFormat = oldTag.DataTypeStringFormat;
                this.DataBlockNumber      = oldTag.DataBlockNumber;
                this.Controlvalue         = oldTag.Controlvalue;
                this.DontSplitValue       = oldTag.DontSplitValue;

                this.Tag = oldTag.Tag;

                this.NckArea      = oldTag.NckArea;
                this.NckUnit      = oldTag.NckUnit;
                this.NckColumn    = oldTag.NckColumn;
                this.NckLine      = oldTag.NckLine;
                this.NckModule    = oldTag.NckModule;
                this.NckLinecount = oldTag.NckLinecount;
            }
            if (tag != null)
            {
                this.Tag = tag;
            }
        }
예제 #2
0
        private void OK_Click(object sender, EventArgs e)
        {
            byte _bereich = (byte)((pNCK.bereich_u_einheit & 0xE0) >> 5);         // (bereich_u_einheit & 2#11100000) schiebe rechts um 5 Bit
            byte _einheit = (byte)(pNCK.bereich_u_einheit & 0x1F);                // & 2#00011111

            #region TYP
            TagDataType dataType   = new TagDataType();
            int         _ArraySize = 0;
            switch (pNCK.typ)
            {
            case 1:
                dataType = TagDataType.Bool;
                break;

            case 3:
                dataType = TagDataType.Byte;     //eNCK_LE_Int8;
                break;

            case 4:
                dataType = TagDataType.Word;
                break;

            case 5:
                dataType = TagDataType.Int;     //eNCK_LE_Int16;
                break;

            case 6:
                dataType = TagDataType.Dword;     //eNCK_LE_Uint32;
                break;

            case 7:
                dataType = TagDataType.Dint;     //eNCK_LE_Int32;
                break;

            case 8:
                dataType = TagDataType.Float;     //eNCK_LE_Float32;
                break;

            case 15:
                dataType = TagDataType.LReal;     //eNCK_LE_Float64;
                break;

            case 19:
                dataType   = TagDataType.CharArray;   //eNCK_LE_String;
                _ArraySize = pNCK.laenge;
                break;

            default:
                throw new Exception("Unknown Type");
                break;
            }
            #endregion

            _libnodavevalue = new PLCNckTag()
            {
                TagDataType = dataType, NckArea = _bereich, NckUnit = _einheit, NckColumn = (int)pNCK.spalte, NckLine = (int)pNCK.zeile, NckModule = pNCK.bausteintyp, NckLinecount = pNCK.ZEILENANZAHL, ArraySize = _ArraySize
            };

            this.Close();
        }
예제 #3
0
        public static PLCNckTag ShowPLCTagEditor(PLCNckTag tag)
        {
            NckTagEditor tagedt = new NckTagEditor();

            tagedt._libnodavevalue = tag;
            tagedt.ShowDialog();
            return(tagedt._libnodavevalue);
        }
예제 #4
0
 private void Cancel_Click(object sender, EventArgs e)
 {
     if (startWasNull)
     {
         _libnodavevalue = null;
     }
     this.Close();
 }
예제 #5
0
        private void LibNoDaveValueEditor_Load(object sender, EventArgs e)
        {
            if (_libnodavevalue != null)
            {
                ncVar = new NC_Var(_libnodavevalue);
            }
            else
            {
                startWasNull    = true;
                _libnodavevalue = new PLCNckTag();
            }

            pGridNCK.SelectedObject = ncVar;
        }
 public NC_Var(PLCNckTag nckTag)
 {
     if (nckTag != null)
     {
         this.SYNTAX_ID         = 0x82;
         this.Bereich_u_einheit = (byte)((byte)nckTag.NckArea << 5 | nckTag.NckUnit);
         this.Spalte            = (UInt16)nckTag.NckColumn;
         this.Zeile             = (UInt16)nckTag.NckLine;
         this.Bausteintyp       = (byte)nckTag.NckModule;
         this.ZEILENANZAHL      = (byte)nckTag.NckLinecount;
         this.Typ    = GetNckType(nckTag.TagDataType);
         this.Laenge = (UInt16)nckTag._internalGetSize();
     }
 }
        public static NC_Var GetNC_Var(PLCNckTag nckTag)
        {
            var ret = new NC_Var();

            if (nckTag != null)
            {
                ret.SYNTAX_ID         = 0x82;
                ret.Bereich_u_einheit = (byte)((byte)nckTag.NckArea << 5 | nckTag.NckUnit);
                ret.Spalte            = (UInt16)nckTag.NckColumn;
                ret.Zeile             = (UInt16)nckTag.NckLine;
                ret.Bausteintyp       = (byte)nckTag.NckModule;
                ret.ZEILENANZAHL      = (byte)nckTag.NckLinecount;
                ret.Typ    = GetNckType(nckTag.TagDataType);
                ret.Laenge = (UInt16)nckTag._internalGetSize();
            }
            return(ret);
        }
예제 #8
0
        private void LibNoDaveValueEditor_Load(object sender, EventArgs e)
        {
            if (_libnodavevalue != null)
            {
                pNCK.SYNTAX_ID         = 0x82;
                pNCK.bereich_u_einheit = (byte)(_libnodavevalue.NckArea << 5 | _libnodavevalue.NckUnit);
                pNCK.spalte            = (uint)_libnodavevalue.NckColumn;
                pNCK.zeile             = (uint)_libnodavevalue.NckLine;
                pNCK.bausteintyp       = (byte)_libnodavevalue.NckModule;
                pNCK.ZEILENANZAHL      = (byte)_libnodavevalue.NckLinecount;
                pNCK.typ    = getType(_libnodavevalue.TagDataType);
                pNCK.laenge = (byte)_libnodavevalue._internalGetSize();
            }
            else
            {
                startWasNull    = true;
                _libnodavevalue = new PLCNckTag();
            }

            pGridNCK.SelectedObject = pNCK;
        }
예제 #9
0
        private void OK_Click(object sender, EventArgs e)
        {
            _libnodavevalue = ncVar.GetNckTag();

            this.Close();
        }
 /// <summary>
 /// Create an new Nck tag from an existing one by copying its information
 /// </summary>
 /// <param name="oldTag"></param>
 /// <param name="tag"></param>
 public PLCNckTag(PLCNckTag oldTag, object tag = null)
 {
     CopyTag(oldTag, tag);
 }