Beispiel #1
0
        /// <summary>
        /// IO输出
        /// </summary>
        /// <param name="io">IO类对象</param>
        /// <param name="ioValue">输出状态</param>
        /// <returns></returns>
        public static short GetOutputIoBit(IOParameter io, short ioValue)
        {
            short shrResult = 0;
            bool  bioValue  = false;

            if (io == null)
            {
                return(shrFail);
            }
            NewCtrlCardBase Base_ = tag_NewCtrlCardBase[(int)io.tag_MotionCardManufacturer];

            if (Base_ == null)
            {
                MessageBoxLog.Show(NewCtrlCardBase.GetManufacturerName((int)io.tag_MotionCardManufacturer) + "控制卡初始化失败!");
                return(shrFail);
            }
            shrResult = Base_.SR_GetOutputBit(io.CardNum, io.IOBit, out bioValue);
            if (shrResult != shrSuccess)
            {
                shrResult = -1;
                return(shrResult);
            }
            if (bioValue)
            {
                shrResult = 1;
            }
            else
            {
                shrResult = 0;
            }
            return(shrResult);
        }
Beispiel #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);
            }
        }