Beispiel #1
0
        public bool[] readInput_Map()
        {
            short nIndex = 0;
            uint  uDataHigh = 0, uDataLow = 0, uFlagHigh = 0, uFlagLow = 0, uModuleID = 0;
            int   nBoardNo = 0, nModulePos = 0;

            int boolArrayQuentity = this.m_Inp_Module_Quentity * 32;

            bool[] m_bReadResultIOMap = new bool[boolArrayQuentity];

            for (int moduleNo = 0; moduleNo < this.m_Inp_Module_Quentity; moduleNo++)
            {
                CAXD.AxdInfoGetModule(moduleNo, ref nBoardNo, ref nModulePos, ref uModuleID);
                CAXD.AxdiReadInportWord(moduleNo, 0, ref uDataHigh);
                CAXD.AxdiReadInportWord(moduleNo, 1, ref uDataLow);

                for (nIndex = 0; nIndex < 16; nIndex++)
                {
                    int wIndex = nIndex + 32 * moduleNo;
                    // Verify the last bit value of data read
                    uFlagHigh = uDataHigh & 0x0001;
                    uFlagLow  = uDataLow & 0x0001;

                    // Shift rightward by bit by bit
                    uDataHigh = uDataHigh >> 1;
                    uDataLow  = uDataLow >> 1;

                    // Updat bit value in control
                    if (uFlagHigh == 1)
                    {
                        m_bReadResultIOMap[wIndex] = true;
                    }
                    else
                    {
                        m_bReadResultIOMap[wIndex] = false;
                    }

                    if (uFlagLow == 1)
                    {
                        m_bReadResultIOMap[wIndex + 16] = true;
                    }
                    else
                    {
                        m_bReadResultIOMap[wIndex + 16] = false;
                    }
                }
            }
            return(m_bReadResultIOMap);
        }
Beispiel #2
0
        public void Read()
        {
            int    i     = 0;
            UInt32 value = 0;

            lock (this)
            {
                if (Type == EAxtDio.DI)
                {
                    foreach (AxtDioWordModule module in modules)
                    {
                        i = module.ModuleNo * 2;
                        Validate(CAXD.AxdiReadInportWord(module.ModuleNo, module.Offset, ref value));

                        oldValue.Word(i, nowValue.Word(i));
                        nowValue.Word(i, (UInt16)value);
                    }

                    foreach (KeyValuePair <int, UlTripState> trip in trips)
                    {
                        if (trip.Value.Tripped(nowValue[trip.Key]) == true)
                        {
                            TripCode = trip.Value.Code;
                            break;
                        }
                    }

                    foreach (KeyValuePair <int, UlRelayTimer> timer in timers)
                    {
                        timer.Value.IN = nowValue[timer.Key];
                    }
                }
                else
                {
                    foreach (AxtDioWordModule module in modules)
                    {
                        i = module.ModuleNo * 2;
                        Validate(CAXD.AxdoReadOutportWord(module.ModuleNo, module.Offset, ref value));

                        oldValue.Word(i, nowValue.Word(i));
                        nowValue.Word(i, (UInt16)value);
                        tempValue.Word(i, (UInt16)value);
                    }
                }
            }
        }
Beispiel #3
0
 public void Update()
 {
     for (int i = 0; i < m_iModuleCnt; i++)
     {
         if (m_aModuleInfo[i].iCntIn == 32 || m_aModuleInfo[i].iCntOut == 32)
         {
             CAXD.AxdoWriteOutportDword(i, 0, m_aModuleInfo[i].uDataOutSet);
             CAXD.AxdoReadOutportDword(i, 0, ref m_aModuleInfo[i].uDataOutGet);
             CAXD.AxdiReadInportDword(i, 0, ref m_aModuleInfo[i].uDataIn);
         }
         else if (m_aModuleInfo[i].iCntIn == 16 || m_aModuleInfo[i].iCntOut == 16)
         {
             CAXD.AxdoWriteOutportWord(i, 0, m_aModuleInfo[i].uDataOutSet);
             CAXD.AxdoReadOutportWord(i, 0, ref m_aModuleInfo[i].uDataOutGet);
             CAXD.AxdiReadInportWord(i, 0, ref m_aModuleInfo[i].uDataIn);
         }
         //m_aModuleInfo[i].uDataOutSet = 0;// m_aModuleInfo[i].uDataOutGet;
     }
 }
Beispiel #4
0
        private void Threading_Timer()
        {
            short nIndex     = 0;
            uint  uDataHigh  = 0;
            uint  uDataLow   = 0;
            uint  uFlagHigh  = 0;
            uint  uFlagLow   = 0;
            int   nBoardNo   = 0;
            int   nModulePos = 0;
            uint  uModuleID  = 0;

            CAXD.AxdInfoGetModule(comboModule.SelectedIndex, ref nBoardNo, ref nModulePos, ref uModuleID);

            switch ((AXT_MODULE)uModuleID)
            {
            case AXT_MODULE.AXT_SIO_DI32:
            case AXT_MODULE.AXT_SIO_RDI32:
                //++
                // Read inputting signal in WORD
                CAXD.AxdiReadInportWord(comboModule.SelectedIndex, 0, ref uDataHigh);
                CAXD.AxdiReadInportWord(comboModule.SelectedIndex, 1, ref uDataLow);

                for (nIndex = 0; nIndex < 16; nIndex++)
                {
                    // Verify the last bit value of data read
                    uFlagHigh = uDataHigh & 0x0001;
                    uFlagLow  = uDataLow & 0x0001;

                    // Shift rightward by bit by bit
                    uDataHigh = uDataHigh >> 1;
                    uDataLow  = uDataLow >> 1;

                    // Updat bit value in control
                    if (uFlagHigh == 1)
                    {
                        checkHigh[nIndex].Checked = true;
                    }
                    else
                    {
                        checkHigh[nIndex].Checked = false;
                    }

                    if (uFlagLow == 1)
                    {
                        checkLow[nIndex].Checked = true;
                    }
                    else
                    {
                        checkLow[nIndex].Checked = false;
                    }
                }
                break;

            case AXT_MODULE.AXT_SIO_DB32P:
            case AXT_MODULE.AXT_SIO_DB32T:
                //++
                // Read inputting signal in WORD
                CAXD.AxdiReadInportWord(comboModule.SelectedIndex, 0, ref uDataHigh);

                for (nIndex = 0; nIndex < 16; nIndex++)
                {
                    // Verify the last bit value of data read
                    uFlagHigh = uDataHigh & 0x0001;

                    // Shift rightward by bit by bit
                    uDataHigh = uDataHigh >> 1;

                    // Updat bit value in control
                    if (uFlagHigh == 1)
                    {
                        checkHigh[nIndex].Checked = true;
                    }
                    else
                    {
                        checkHigh[nIndex].Checked = false;
                    }
                }
                break;
            }
        }