Пример #1
0
        /// <summary>
        /// 获取单通道(Bit)输入IO状态,函数执行成功 判断status参数值 TRUE 有信号输入  FALSE无信号输入
        /// </summary>
        /// <param name="stationName"></param>
        /// <param name="ioName"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        public static short GetInputIoBitStatus(string stationName, string ioName, out bool status)
        {
            short shrResult;

            status = false;
            if (ioName == null)
            {
                status = true;
                return(0);
            }
            IOParameter     ioP   = StationManage.FindInputIo(ioName);
            NewCtrlCardBase Base_ = tag_NewCtrlCardBase[(int)ioP.tag_MotionCardManufacturer];

            if (Base_ == null)
            {
                MessageBoxLog.Show(NewCtrlCardBase.GetManufacturerName((int)ioP.tag_MotionCardManufacturer) + "控制卡初始化失败!");
                return(shrFail);
            }
            if (ioP == null)
            {
                MessageBoxLog.Show(stationName + "\r\nIO:<" + ioName + ">没有找到,请配置");
                return(shrFail);
            }

            shrResult = Base_.SR_GetInputBit(ioP.CardNum, ioP.IOBit, out status);
            if (ioP.Logic == 0)
            {
                if (status)
                {
                    status = false;
                }
                else
                {
                    status = true;
                }
            }
            if (shrResult
                == -1)
            {
                return(shrFail);
            }

            return(shrSuccess);
        }
Пример #2
0
        public static void ReadAllIo(object o)
        {
            while (true)
            {
                int CardIndex = 0;
                int axisIndex = 0;
                for (MotionCardManufacturer i = 0; i < MotionCardManufacturer.MotionCardManufacturer_max; i++)
                {
                    NewCtrlCardBase Base  = NewCtrlCardV0.tag_NewCtrlCardBase[(int)i];
                    short           j     = 0;
                    short           n     = 0;
                    short           mInIo = 0;
                    if (Base == null || tag_CardHave[(int)i] == 0)
                    {
                        continue;
                    }

                    while (j < NewCtrlCardV0.tag_CardCount[(int)i])
                    {
                        ulong pLimitNValue = 0;
                        ulong pLimitPValue = 0;
                        ulong pOrgValue    = 0;

                        ulong pCardAxisAlarmValue = 0;
                        ulong pOnAxisEnableValue  = 0;

                        ulong pCardInIO  = 0;
                        ulong pCardOutIO = 0;
                        ulong one        = 1;
                        mInIo = 0;
                        while (mInIo < 64)
                        {
                            bool bInio  = true;
                            bool bOutio = true;
                            Base.SR_GetInputBit(j, mInIo, out bInio);
                            Base.SR_GetOutputBit(j, mInIo, out bOutio);
                            if (bInio == true)
                            {
                                pCardInIO = pCardInIO + (ulong)(one << mInIo);
                            }
                            else
                            {
                            }
                            if (bOutio == true)
                            {
                                pCardOutIO = pCardOutIO + (ulong)(one << mInIo);
                            }
                            mInIo++;
                        }

                        n = 1;
                        while (n <= NewCtrlCardV0.tag_CardAxisCount[(int)i])
                        {
                            bool   LimitNvar           = true;
                            bool   LimitPvar           = true;
                            bool   LimitOrgvar         = true;
                            bool   bCardAxisAlarmValue = true;
                            bool   bOnAxisEnableValue  = true;
                            double bOnAxisEncPosChange = 0;
                            double bOnAxisPrfPosChange = 0;
                            Base.SR_GetLimitNInput(j, n, out LimitNvar);
                            Base.SR_GetLimitPInput(j, n, out LimitPvar);
                            Base.SR_GetOriginInput(j, n, out LimitOrgvar);
                            Base.SR_GetAlarmInput(j, n, out bCardAxisAlarmValue);
                            //  Base.SR_GetServoEnable(j, n, out bOnAxisEnableValue);
                            //Base.SR_GetEncPos(j, n, ref bOnAxisEncPosChange);
                            //Base.SR_GetPrfPos(j, n, ref bOnAxisPrfPosChange);
                            if (LimitNvar == true)
                            {
                                pLimitNValue = pLimitNValue + (ulong)(one << n);
                            }
                            if (LimitPvar == true)
                            {
                                pLimitPValue = pLimitPValue + (ulong)(one << n);
                            }
                            if (LimitOrgvar == true)
                            {
                                pOrgValue = pOrgValue + (ulong)(one << n);
                            }
                            if (bCardAxisAlarmValue == true)
                            {
                                pCardAxisAlarmValue = pCardAxisAlarmValue + (ulong)(one << n);
                            }
                            if (bOnAxisEnableValue == true)
                            {
                                pOnAxisEnableValue = pOnAxisEnableValue + (ulong)(one << n);
                            }

                            Base.SR_GetEncPos(j, n, ref bOnAxisEncPosChange);
                            Base.SR_GetPrfPos(j, n, ref bOnAxisPrfPosChange);
                            if (tag_OnAxisEncPosChange[axisIndex] != bOnAxisEncPosChange || tag_IO_refresh > 0)
                            {
                                tag_OnAxisEncPosChange[axisIndex] = bOnAxisEncPosChange;
                                OnAxisEncPosChange((int)i, j, n, (int)bOnAxisEncPosChange);
                            }
                            if (tag_OnAxisPrfPosChange[axisIndex] != bOnAxisPrfPosChange || tag_IO_refresh > 0)
                            {
                                tag_OnAxisPrfPosChange[axisIndex] = bOnAxisPrfPosChange;
                                OnAxisPrfPosChange((int)i, j, n, (int)bOnAxisPrfPosChange);
                            }
                            axisIndex++;
                            n++;
                        }
                        if (tag_CardAxisLimitNIO[CardIndex] != pLimitNValue || tag_IO_refresh > 0)
                        {
                            tag_CardAxisLimitNIO[CardIndex] = pLimitNValue;
                            OnAxisLimitNChange((int)i, j, n, pLimitNValue);
                        }
                        if (tag_CardAxisLimitPIO[CardIndex] != pLimitPValue || tag_IO_refresh > 0)
                        {
                            tag_CardAxisLimitPIO[CardIndex] = pLimitPValue;
                            OnAxisLimitPChange((int)i, j, n, pLimitPValue);
                        }
                        if (tag_CardAxisOrgIO[CardIndex] != pOrgValue || tag_IO_refresh > 0)
                        {
                            tag_CardAxisOrgIO[CardIndex] = pOrgValue;
                            OnAxisHomeChange((int)i, j, n, pOrgValue);
                        }
                        if (tag_CardAxisAlarm[CardIndex] != pCardAxisAlarmValue || tag_IO_refresh > 0)
                        {
                            tag_CardAxisAlarm[CardIndex] = pCardAxisAlarmValue;
                            OnAxisAlarmChange((int)i, j, n, pCardAxisAlarmValue);
                        }

                        if (pCardInIO != tag_CardInIO[CardIndex] || tag_IO_refresh > 0)
                        {
                            tag_CardInIO[CardIndex] = pCardInIO;
                            OnInputIOChange((int)i, j, pCardInIO);
                        }
                        if (pCardOutIO != tag_CardInIO[CardIndex] || tag_IO_refresh > 0)
                        {
                            tag_CardOutIO[CardIndex] = pCardOutIO;
                            OnOutputIOChange((int)i, j, pCardOutIO);
                        }
                        if (tag_IO_refresh > 0)
                        {
                            tag_IO_refresh--;
                        }
                        CardIndex++;
                        j++;
                    }
                    //
                }
                Thread.Sleep(1);
            }
        }