예제 #1
0
 public PlcBitModel(string memArea, int wordAddress, int bitAddress)
 {
     MemArea        = memArea.ToUpper();
     WordAddress    = wordAddress;
     BitAddress     = bitAddress;
     WordAddressStr = OmronFINsProcessor.HexConvert10(wordAddress.ToString()).PadLeft(4, '0');
     BitAddressStr  = OmronFINsProcessor.HexConvert10(bitAddress.ToString()).PadLeft(2, '0');
 }
예제 #2
0
        /// <summary>
        /// Get the decimal Value and convert to Hex string that can be passed to PLC
        /// </summary>
        /// <returns>Hex string, Length: 2 words (32bit)</returns>
        public string GetValueHexStr()
        {
            //assume PLC addressing 0..511, where LSB before MSB. i.e. W0+W1=LSB+MSB
            string temp = OmronFINsProcessor.HexConvert10(Value.ToString()).PadLeft(8, '0');

            return(temp.Substring(4, 4) + temp.Substring(0, 4));//return LSB + MSB (low address + high address)

            //assume PLC addressing 0..511, where MSB before LSB. i.e. W1+W0=LSB+MSB
            //return OmronFINsProcessor.HexConvert10(Value.ToString()).PadLeft(8, '0');
        }
예제 #3
0
 /// <summary>
 /// Set a value of a individual Bit inside a Word. Update Word value
 /// </summary>
 /// <param name="BitNumber">The address of individual Bit</param>
 /// <param name="BitValue">Value to be set 0 or 1</param>
 public void SetBitValue(int BitAddress, int BitValue)
 {
     if (BitValue == 0 || BitValue == 1)
     {
         Bits[BitAddress] = BitValue;
         List <int> BitsReversed = new List <int>(Bits);
         BitsReversed.Reverse();
         _binaryValueStr = string.Join("", BitsReversed);
         _hexValueStr    = OmronFINsProcessor.HexConvert2(_binaryValueStr);
     }
 }
예제 #4
0
        private void RdAllW()
        {
            //string StrRx1 = OmronFINsProcessor.GenericRdPLC("WR", "000000", "012B00", PlcSerialPort);
            string StrRx1 = OmronFINsProcessor.GenericRdPLC(PlcMemArea.WR, "0000", "0049", PlcSerialPort);
            //string StrRx2 = OmronFINsProcessor.GenericRdPLC("WR", "012C00", "01FF00", PlcSerialPort);
            string StrRx2 = OmronFINsProcessor.GenericRdPLC(PlcMemArea.WR, "0050", "0099", PlcSerialPort);
            //TODO: verify Rx string is valid before processing
            string StrRx = StrRx1 + StrRx2;

            PlcData.AllW = OmronFINsProcessor.ConvWordStrToWordArray(StrRx);
        }
예제 #5
0
 public PlcBitModel(string memArea, int wordAddress, int bitAddress, string value)
 {
     MemArea        = memArea.ToUpper();
     WordAddress    = wordAddress;
     BitAddress     = bitAddress;
     WordAddressStr = OmronFINsProcessor.HexConvert10(wordAddress.ToString()).PadLeft(4, '0');
     BitAddressStr  = OmronFINsProcessor.HexConvert10(bitAddress.ToString()).PadLeft(2, '0');
     if (value == "0" || value == "1")
     {
         Value = int.Parse(value);
     }
 }
예제 #6
0
        private void BtnExportMUBA_Click(object sender, EventArgs e)
        {
            try
            {
                string xAddrB  = "";
                string xAddrE  = "";
                string RdValue = "";
                int    MUBA    = 0;
                xAddrB = OmronFINsProcessor.HexConvert10(MUBAdata.AddrB.ToString());
                xAddrE = OmronFINsProcessor.HexConvert10(MUBAdata.AddrE.ToString());
                //MainForm.PlcPort.Open();
                //ReadFromPLC();
                //serialPort1.Open();

                // RdValue = Omron.GenericRdPLC(PLCcmd.DM, xAddrB, xAddrE, MainForm.PlcPort);
                //RdValue = Omron.GenericRdPLC(PLCcmd.DM, xAddrB, xAddrE, serialPort1);
                DistMUBAdata(RdValue);
                MUBA          = GetMUBA();
                TBoxMUBA.Text = MUBA.ToString();
            }catch (Exception) { }
        }
예제 #7
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="memArea">Bit memory area, WR or HR</param>
        /// <param name="wordAddress">Word address that bit is belonged to 0-511</param>
        /// <param name="bitAddress">Bit address 0-15</param>
        /// <param name="value">Bit value 0 or 1</param>
        public PlcBitModel(PlcMemArea memArea, int wordAddress, int bitAddress, int value)
        {
            if (wordAddress < OmronFINsClass.Size_WR && bitAddress < OmronFINsClass.Width_Word)
            {
                switch (memArea)
                {
                case PlcMemArea.CIO:
                    MemArea = "C";
                    break;

                case PlcMemArea.WR:
                    MemArea = "W";
                    break;

                case PlcMemArea.HR:
                    MemArea = "H";
                    break;

                case PlcMemArea.AR:
                    MemArea = "A";
                    break;

                case PlcMemArea.DM:
                    MemArea = "D";
                    break;

                case PlcMemArea.WR_bit:
                    MemArea = "W";
                    break;

                default:
                    break;
                }
                WordAddress    = wordAddress;
                BitAddress     = bitAddress;
                WordAddressStr = OmronFINsProcessor.HexConvert10(wordAddress.ToString()).PadLeft(4, '0');
                BitAddressStr  = OmronFINsProcessor.HexConvert10(bitAddress.ToString()).PadLeft(2, '0');
                Value          = value;
            }
        }
예제 #8
0
 public void SetValue(string ValueStr)
 {
     this.ValueStr = ValueStr;
     Value         = uint.Parse(ValueStr);
     ValueHexStr   = OmronFINsProcessor.HexConvert10(ValueStr).PadLeft(8, '0');
 }
예제 #9
0
        //public bool WrtOnStop { get; set; }
        //public bool WrtOnStart { get; set; }
        //public bool WrtOnRun { get; set; }

        /// <summary>
        /// Set UInt Value
        /// </summary>
        /// <param name="Value">Uint value</param>
        public void SetValue(uint Value)
        {
            this.Value  = Value;
            ValueStr    = Value.ToString();
            ValueHexStr = OmronFINsProcessor.HexConvert10(Value.ToString()).PadLeft(8, '0');
        }
예제 #10
0
 /// <summary>
 /// Set the Word Hex value
 /// </summary>
 /// <param name="ValueStr">The Hex Value string</param>
 public void SetValue(string ValueStr)
 {
     _hexValueStr    = ValueStr.PadLeft(4, '0');
     _binaryValueStr = OmronFINsProcessor.BinaryConvert16(_hexValueStr).PadLeft(16, '0');
     SetAllBitsValue();
 }
예제 #11
0
 /// <summary>
 /// Get the decimal Value and convert to Hex string that can be passed to PLC
 /// </summary>
 /// <returns>Hex string, Length: 1 word (16bit)</returns>
 public string GetValueHexStr()
 {
     return(OmronFINsProcessor.HexConvert10(Value.ToString()).PadLeft(4, '0'));
 }