Ejemplo n.º 1
0
        static public bool OpenDevice(out short _nModuleIP)
        {
            _nModuleIP = m_nModuleIP;
            if (bOpened)
            {
                return(true);
            }

            short nRet;

            if (NMC2.nmc_PingCheck(m_nModuleIP, 200) != 0)
            {
                Log.ShowMessage("PAIX", "Ping Test Error 192.168.0." + m_nModuleIP.ToString());
                return(false);
            }

            nRet = NMC2.nmc_OpenDevice(m_nModuleIP);

            if (nRet == 0)
            {
                bOpened = true;
            }
            else
            {
                Log.ShowMessage("PAIX", "NMC2 Open Failed");
                return(false);
            }

            return(bOpened);
        }
Ejemplo n.º 2
0
        public bool SetOut(int _iNo, bool _bOn, bool _bDirect = false)
        {
            //Check Error.
            if (_iNo >= m_iMaxOut || _iNo < 0)
            {
                return(false);
            }

            //Get Addr.
            int iBitAddr;
            int iModule;
            int iModuleDp;

            GetInfoOutput(_iNo, out iModule, out iModuleDp, out iBitAddr);

            short nOn = _bOn ? (short)1 : (short)0;

            if (_bDirect)
            {
                NMC2.nmc_SetDIOOutPin(m_aModuleInfo[iModule].nNmcNo, (short)iBitAddr, nOn);
            }
            else
            {
                m_aModuleInfo[iModule].nDataOutSet[iBitAddr] = nOn;
            }

            return(true);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 홈을 수행한다.
        /// </summary>
        /// <returns>수행 성공여부.</returns>
        public bool GoHome(double _dHomeVelFirst, double _dHomeVelLast, double _dHomeAccFirst)
        {
            SetServo(true);

            short nRet;
            bool  bRet;

            nRet = NMC2.nmc_SetSpeed(m_nDevId, (short)Para.iPhysicalNo, 200, _dHomeAccFirst, _dHomeAccFirst, _dHomeVelFirst);
            nRet = NMC2.nmc_SetAccSpeed(m_nDevId, (short)Para.iPhysicalNo, _dHomeAccFirst);
            nRet = NMC2.nmc_SetDecSpeed(m_nDevId, (short)Para.iPhysicalNo, _dHomeAccFirst);
            nRet = NMC2.nmc_SetHomeSpeed(m_nDevId, (short)Para.iPhysicalNo, _dHomeVelFirst, _dHomeVelFirst, _dHomeVelLast);


            // 1. 0번 축의 원점 이동 모드 : +Near
            // 2. 원점 검색후(3차이동 까지 완료) CW회전으로 Z상 검출
            // 3. 지령/엔코더 위치 0으로 초기화
            // 4. Offset 300위치로 이동
            // 5. Offset이동후 지령/엔코더 위치 0으로 초기화
            //nRet = nmc_HomeMove(11, 0, 0x82 | 3, 0xF, 300);


            const short nHomeEndMode = NMC2.NMC_END_CMD_CLEAR_A_OFFSET |
                                       NMC2.NMC_END_ENC_CLEAR_A_OFFSET |
                                       NMC2.NMC_END_CMD_CLEAR_B_OFFSET |
                                       NMC2.NMC_END_ENC_CLEAR_B_OFFSET;

            //메뉴얼과 샘플이 달라서 샘플 방식으로 함...eHomeMethode 여기다 0x80을 덮어 씌워야 된다고
            //메뉴얼에 나와 있었는데 잘 모르겠음...
            nRet = NMC2.nmc_HomeMove(m_nDevId, (short)Para.iPhysicalNo, (short)Para.eHomeMode, nHomeEndMode, Para.dHomeOffset * m_dPulsePerUnit, 0);
            bRet = nRet == 0;


            return(bRet);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Command Encoder Target포지션 세팅.
        /// </summary>
        /// <param name="_dPos">세팅할 펄스</param>
        public void SetPos(double _dPos)
        {
            short nRet;

            nRet = NMC2.nmc_SetCmdPos(m_nDevId, (short)Para.iPhysicalNo, _dPos);
            nRet = NMC2.nmc_SetEncPos(m_nDevId, (short)Para.iPhysicalNo, _dPos);
        }
Ejemplo n.º 5
0
        public bool GetIn(int _iNo)
        {
            //Check Error.
            if (_iNo >= m_iMaxIn || _iNo < 0)
            {
                return(false);
            }

            bool _bOn;

            //Controller 추가 연결시 사용 되는거 같다.
            //NMC2.nmc_GetDIOInput(m_nDevId, ReadStat);
            NMC2.nmc_GetMDIOInput(m_nDevId, ReadStat);

            if (ReadStat[_iNo] == 0)
            {
                _bOn = false;
            }
            else
            {
                _bOn = true;
            }

            return(_bOn);
        }
Ejemplo n.º 6
0
        public bool Init()
        {
            short nRet;

            if (!MotionNMC2.CModule.OpenDevice(out m_nDevId))
            {
                return(false);
            }

            // DIO 입/출력 개수 정보 가져오기 ========================
            short nMotionType, nIOType, nExtIo, nMDio;

            nRet = NMC2.nmc_GetDeviceInfo(m_nDevId, out nMotionType, out nIOType, out nExtIo, out nMDio);
            //nIOType은 IO Controller 사용시.
            //switch (nIOType)
            //{
            //    case  1: m_iMaxIn = 16; m_iMaxOut = 16; break;
            //    case  2: m_iMaxIn = 32; m_iMaxOut = 32; break;
            //    case  3: m_iMaxIn = 48; m_iMaxOut = 48; break;
            //    case  4: m_iMaxIn = 64; m_iMaxOut = 64; break;
            //    default: m_iMaxIn = 0 ; m_iMaxOut = 0 ; break;
            //}
            //기본 Motion Controller 사용시는 NMDio사용.
            switch (nMDio)
            {
            case  1: m_iMaxIn = 8; m_iMaxOut = 8; break;

            default: m_iMaxIn = 0; m_iMaxOut = 0; break;
            }

            return(true);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// -방향 조그 이동
        /// </summary>
        /// <param name="_dVel">초당 구동 속도 펄스</param>
        /// <param name="_dAcc">구동 가속율 펄스</param>
        /// <param name="_dDec">감속율 펄스</param>
        public void JogN(double _dVel, double _dAcc, double _dDec)
        {
            short nRet;

            nRet = NMC2.nmc_SetSpeed(m_nDevId, (short)Para.iPhysicalNo, 200, _dAcc, _dDec, _dVel);
            nRet = NMC2.nmc_JogMove(m_nDevId, (short)Para.iPhysicalNo, 1);
        }
Ejemplo n.º 8
0
        public bool GetOut(int _iNo)
        {
            //Check Error.
            if (_iNo >= m_iMaxOut || _iNo < 0)
            {
                return(false);
            }

            bool _bOn;

            short nRet;

            //Controller 추가 연결시 사용 되는거 같다.
            //nRet = NMC2.nmc_GetDIOOutput(m_nDevId, ReadStat);
            nRet = NMC2.nmc_GetMDIOOutput(m_nDevId, ReadStat);

            //OutPut
            if (ReadStat[_iNo] == 0)
            {
                _bOn = false;
            }
            else
            {
                _bOn = true;
            }

            return(_bOn);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 홈센서 기준 절대 위치로 이동.
        /// </summary>
        /// <param name="_dPos">이동할 위치 펄스단위</param>
        /// <param name="_dVel">이동할 속도 펄스단위</param>
        /// <param name="_dAcc">이동할 가속 펄스단위</param>
        /// <param name="_dDec">이동할 감속 펄스단위</param>
        /// <returns>성공여부</returns>
        public void GoAbs(double _dPos, double _dVel, double _dAcc, double _dDec)
        {
            short nRet;

            nRet = NMC2.nmc_SetSpeed(m_nDevId, (short)Para.iPhysicalNo, 200, _dAcc, _dDec, _dVel);
            nRet = NMC2.nmc_AbsMove(m_nDevId, (short)Para.iPhysicalNo, _dPos);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 홈센서 기준 절대 위치로 다축 이동.
        /// </summary>
        /// <param name="Para.iPhysicalNos">이동할축들 0번이 마스터</param>
        /// <param name="_dPoses">이동할 위치 펄스단위</param>
        /// <param name="_dVel">이동할 속도 펄스단위</param>
        /// <param name="_dAcc">이동할 가속 펄스단위</param>
        /// <param name="_dDec">이동할 감속 펄스단위</param>
        /// <returns>성공여부</returns>
        /// 일단 2축만 구현한다.
        /// 축번호는 오름차순으로 배열 해야함.
        public void GoMultiAbs(int [] _iPhysicalNos, double [] _dPoses, double _dVel, double _dAcc, double _dDec)
        {
            if (_iPhysicalNos.Count() > 3 || _dPoses.Count() > 3)
            {
                return;
            }
            if (_iPhysicalNos.Count() < 2 || _dPoses.Count() < 2)
            {
                return;
            }
            if (_iPhysicalNos.Count() != _dPoses.Count())
            {
                return;
            }


            short nRet;

            nRet = NMC2.nmc_SetSpeed(m_nDevId, (short)_iPhysicalNos[0], 200, _dAcc, _dDec, _dVel);
            if (_iPhysicalNos.Count() == 2)
            {
                nRet = NMC2.nmc_Interpolation2Axis(m_nDevId, (short)_iPhysicalNos[0], (double)_dPoses[0], (short)_iPhysicalNos[1], (double)_dPoses[1], 1);
            }
            if (_iPhysicalNos.Count() == 3)
            {
                nRet = NMC2.nmc_Interpolation3Axis(m_nDevId, (short)_iPhysicalNos[0], (double)_dPoses[0], (short)_iPhysicalNos[1], (double)_dPoses[1], (short)_iPhysicalNos[2], (double)_dPoses[2], 1);
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 현재 파라미터들을 아진 함수를 이용하여 세팅함.
        /// </summary>
        public void ApplyPara(double _dPulsePerUnit)
        {
            m_dPulsePerUnit = _dPulsePerUnit;
            short nRet;

            //이머전시 로직은 한모듈에서 그룹별로 나눠놨는데
            //4축 이하는 그룹이 무조건 1개 이다.
            //왜 이렇게 만들었는지 이해가 안됨...
            nRet = NMC2.nmc_SetEmgLogic(m_nDevId, 0, 0);
            nRet = NMC2.nmc_SetUnitPerPulse(m_nDevId, (short)Para.iPhysicalNo, 1); //1펄스당 1펄스로 세팅.

            nRet = NMC2.nmc_SetNearLogic(m_nDevId, (short)Para.iPhysicalNo, (short)Para.eHomeLogic);
            nRet = NMC2.nmc_SetMinusLimitLogic(m_nDevId, (short)Para.iPhysicalNo, (short)Para.eMinusLimitLogic);
            nRet = NMC2.nmc_SetPlusLimitLogic(m_nDevId, (short)Para.iPhysicalNo, (short)Para.ePlusLimitLogic);
            nRet = NMC2.nmc_SetAlarmLogic(m_nDevId, (short)Para.iPhysicalNo, (short)Para.eAlarmLogic);
            nRet = NMC2.nmc_SetEncoderZLogic(m_nDevId, (short)Para.iPhysicalNo, (short)Para.eZLogic);

            nRet = NMC2.nmc_SetEncoderCount(m_nDevId, (short)Para.iPhysicalNo, (short)Para.eEncMulti);
            nRet = NMC2.nmc_SetEncoderDir(m_nDevId, (short)Para.iPhysicalNo, (short)Para.eEncInputMode);        //진입점이 없다고 뻑남... 메뉴얼 샘플 과 DLL버전이 다른듯.

            nRet = NMC2.nmc_SetPulseLogic(m_nDevId, (short)Para.iPhysicalNo, (short)Para.ePulseLogic);
            nRet = NMC2.nmc_SetSReadyLogic(m_nDevId, (short)Para.iPhysicalNo, (short)Para.eServoLogic);

            //nRet = NMC2
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 서보 온오프
        /// </summary>
        /// <param name="_bOn">온오프</param>
        public void SetServo(bool _bOn)
        {
            short nRet;
            short nSignal = _bOn ? (short)0 : (short)1; //이지서보 다이렉트 케이블일 경우 접점이 반대라서 우선 뒤집어 놓는다.

            nRet = NMC2.nmc_SetServoOn(m_nDevId, (short)Para.iPhysicalNo, nSignal);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 홈이 지원 안되는 보드 같은경우 돌려주고 Update 함수 내부에서 처리 해야 한다.
        /// 파익스는 네트워크 타입이라 너무 느려서 업데이트에서 한번만 스캔하여 담아두고
        /// </summary>
        public void Update()
        {
            if (Para.iPhysicalNo != 0)
            {
                return;
            }
            short nRet;

            nRet = NMC2.nmc_GetAxesExpress(m_nDevId, out NmcAxesExpr);
            nRet = NMC2.nmc_GetAxesMotionOut(m_nDevId, out NmcAxesMotionOut);
            nRet = NMC2.nmc_GetHomeStatus(m_nDevId, out NmcHomeFlag);

            if (nRet != 0)
            {
                if (!m_bNeededReopen)
                {
                    Log.ShowMessage("PAIX", "Needed Reopen 192.168.0." + m_nDevId.ToString());
                }
                m_bNeededReopen = true;
            }
            if (m_bNeededReopen)
            {
                if (CModule.ReOpenDevice())
                {
                    m_bNeededReopen = false;
                }
            }
        }
Ejemplo n.º 14
0
 static public void CloseDevice()
 {
     if (!bOpened)
     {
         return;
     }
     NMC2.nmc_CloseDevice(m_nModuleIP);
     bOpened = false;
 }
Ejemplo n.º 15
0
        public bool SetOut(int _iNo, bool _bOn)
        {
            //Check Error.
            if (_iNo >= m_iMaxOut || _iNo < 0)
            {
                return(false);
            }

            //OutPut
            short nOn = _bOn ? (short)1 : (short)0;
            short nRet;

            //Controller 추가 연결시 사용 되는거 같다.
            //nRet = NMC2.nmc_SetDIOOutPin(m_nDevId, (short)_iNo, nOn);
            nRet = NMC2.nmc_SetMDIOOutPin(m_nDevId, (short)_iNo, nOn);

            return(true);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// 리셑 시그널 온오프 제어
        /// </summary>
        /// <param name="_bOn">온오프</param>
        public void SetReset(bool _bOn)
        {
            short nRet;
            short nSignal = _bOn ? (short)1 : (short)0;



            nRet = NMC2.nmc_SetAlarmResetOn(m_nDevId, (short)Para.iPhysicalNo, nSignal);

            //이상하게 이머진시 오래 유지 되고 난후에 이머전시 풀르면 A접점들이 안살아나면서
            //병신이 되서 프로그램 껏따 켜야되는데...
            //밑에 테스트 결과 안됌.
            //전기 문제 혹은 파익스 문제 인듯.
            //if (!_bOn)
            //{
            //    bool bRet = CModule.ReOpenDevice();
            //}
        }
Ejemplo n.º 17
0
        private void Btn_Disital_Output_Click(object sender, EventArgs e)
        {
            Button btn = (Button)sender;

            short bitno = -1;

            if (btn != null)
            {
                bitno = Convert.ToInt16(btn.Tag);

                if (MultiMotion.OutStatus[bitno] == 1)
                {
                    NMC2.nmc_SetDIOOutputBit(DeviceManager.g_ndevIdC_4, bitno, 0);
                }
                else
                {
                    NMC2.nmc_SetDIOOutputBit(DeviceManager.g_ndevIdC_4, bitno, 1);
                }
            }
        }
Ejemplo n.º 18
0
        static public bool ReOpenDevice()
        {
            NMC2.nmc_CloseDevice(m_nModuleIP);

            if (NMC2.nmc_PingCheck(m_nModuleIP, 200) != 0)
            {
                Log.Trace("PAIX", "ReOpen Ping Test Error 192.168.0." + m_nModuleIP.ToString());
                return(false);
            }

            short nRet = NMC2.nmc_OpenDevice(m_nModuleIP);

            if (nRet == 0)
            {
                Log.ShowMessage("PAIX", "ReOpen Success! 192.168.0." + m_nModuleIP.ToString());
                return(true);
            }
            Log.Trace("PAIX", "ReOpen Failed! 192.168.0." + m_nModuleIP.ToString());
            return(false);
        }
Ejemplo n.º 19
0
        /// <summary>
        /// 초기화 함수.
        /// </summary>
        /// <returns>초기화 성공여부</returns>
        public bool Init()
        {
            if (m_bInit == false)
            {
                m_bInit = true;
                //통합 보드 초기화 부분.
                if (!MotionNMC2.CModule.OpenDevice(out m_nDevId))
                {
                    return(false);
                }


                //Motor 개수 정보 가져오기 ========================
                short nRet;
                short nMotionType, nIOType, nExtIo, nMDio;
                nRet        = NMC2.nmc_GetDeviceInfo(m_nDevId, out nMotionType, out nIOType, out nExtIo, out nMDio);
                m_iMaxMotor = nMotionType;
            }

            return(true);
        }
Ejemplo n.º 20
0
        /*
         * public void Update()
         * {
         *  //NMC2.nmc_GetMDIOOutput(m_nDevId, ReadStatOut);
         *  //NMC2.nmc_GetMDIOInput (m_nDevId, ReadStatIn );
         *  for(int i=0; i < m_iModuleCnt; i++)
         *  {
         *      NMC2.nmc_SetDIOOutPins(m_aModuleInfo[i].nNmcNo, (short)m_aModuleInfo[i].nDataOutSet.Length , m_aModuleInfo[i].nDataOutNo, m_aModuleInfo[i].nDataOutSet);
         *
         *      //short s = m_aModuleInfo[i].nDataOutSet[0] ;
         *      //NMC2.nmc_SetDIOOutPin(m_aModuleInfo[i].nNmcNo , 0 , s);
         *
         *      //NMC2.nmc_GetDIOOutput (m_aModuleInfo[i].nNmcNo, m_aModuleInfo[i].nDataOutGet);
         *      //NMC2.nmc_GetDIOInput  (m_aModuleInfo[i].nNmcNo, m_aModuleInfo[i].nDataIn    );
         *      NMC2.nmc_GetDIOOutput128 (m_aModuleInfo[i].nNmcNo, m_aModuleInfo[i].nDataOutGet);
         *      NMC2.nmc_GetDIOInput128  (m_aModuleInfo[i].nNmcNo, m_aModuleInfo[i].nDataIn    );
         *
         *
         *  }
         *
         *
         *
         * }
         */
        public void Update()
        {
            //NMC2.nmc_GetMDIOOutput(m_nDevId, ReadStatOut);
            //NMC2.nmc_GetMDIOInput (m_nDevId, ReadStatIn );
            bool bDisconnected = false;

            for (int i = 0; i < m_iModuleCnt; i++)
            {
                if (NMC2.nmc_SetDIOOutPins(m_aModuleInfo[i].nNmcNo, (short)m_aModuleInfo[i].nDataOutSet.Length, m_aModuleInfo[i].nDataOutNo, m_aModuleInfo[i].nDataOutSet) == NMC2.NMC_NOTCONNECT)
                {
                    bDisconnected = true;
                }


                //short s = m_aModuleInfo[i].nDataOutSet[0] ;
                //NMC2.nmc_SetDIOOutPin(m_aModuleInfo[i].nNmcNo , 0 , s);

                //NMC2.nmc_GetDIOOutput (m_aModuleInfo[i].nNmcNo, m_aModuleInfo[i].nDataOutGet);
                //NMC2.nmc_GetDIOInput  (m_aModuleInfo[i].nNmcNo, m_aModuleInfo[i].nDataIn    );
                if (NMC2.nmc_GetDIOOutput128(m_aModuleInfo[i].nNmcNo, m_aModuleInfo[i].nDataOutGet) == NMC2.NMC_NOTCONNECT)
                {
                    bDisconnected = true;
                }
                if (NMC2.nmc_GetDIOInput128(m_aModuleInfo[i].nNmcNo, m_aModuleInfo[i].nDataIn) == NMC2.NMC_NOTCONNECT)
                {
                    bDisconnected = true;
                }
            }

            //이건 아예 첨부터 장비 파워 안들어갔을때. 중간에 장비 전원 껐다켰을때.
            if (m_iModuleCnt == 0 || bDisconnected)
            {
                short[] nIp    = new short[] { 192, 168, 0, 255 }; // 192.168.0.XXX로 되는 모든 주소로 장치 검색
                int     nCount = NMC2.nmc_GetEnumList(nIp, out NMC2.NMCEQUIPLIST NmcEquipList);
                if (nCount != 0)
                {
                    Init();
                }
            }
        }
Ejemplo n.º 21
0
        public bool Init()
        {
            short[] nIp = new short [] { 192, 168, 0, 255 }; // 192.168.0.XXX로 되는 모든 주소로 장치 검색
            //무조건 첫모듈은 1번이여야 하고 순서대로 설정해야 함. 1,2,3,4,5,6,
            //이함수에서 모듈을 선착순 순서로 리턴해서 순서가 렌덤임.
            int nCount = NMC2.nmc_GetEnumList(nIp, out NMC2.NMCEQUIPLIST NmcEquipList);

            if (nCount <= 0)
            {
                Log.ShowMessage("Dio", "Module Count is 0, plz Check IP Add");
                return(false);
            }

            for (int i = 0; i < nCount; i++)
            {
                if (NmcEquipList.nDioType[i] != 0)
                {
                    m_iModuleCnt++;
                }
            }
            m_aModuleInfo = new TModuleInfo[m_iModuleCnt];

            m_iModuleCnt = 0;
            //string sTemp = "";
            for (int j = 1; j < nCount + 1; j++)
            {
                for (int i = 0; i < nCount; i++)//2개이상 모듈을 사용할때 IP작은순으로 들어오지 않고 선착순으로 들어옴....
                {
                    if (NmcEquipList.lModelType[i] == NMC2.NMC2_UDIO)
                    {
                        //int i1 = NmcEquipList.lIp[0]     & 0xff;
                        //int i2 = NmcEquipList.lIp[0]>>8  & 0xff;
                        //int i3 = NmcEquipList.lIp[0]>>16 & 0xff;

                        int i4 = NmcEquipList.lIp[i] >> 24 & 0xff;
                        if (i4 != j)
                        {
                            continue;
                        }

                        //sTemp = sTemp + i4.ToString();
                        m_aModuleInfo[m_iModuleCnt].nNmcNo = (short)i4;
                        if (NMC2.nmc_OpenDevice(m_aModuleInfo[m_iModuleCnt].nNmcNo) != 0)
                        {
                            Log.ShowMessage("Dio", "Paiz NMC2 IO Module Port Open Fail");
                            return(false);
                        }

                        NMC2.nmc_GetDIOInfo(m_aModuleInfo[m_iModuleCnt].nNmcNo, out short iCntIn, out short iCntOut);
                        m_aModuleInfo[m_iModuleCnt].iCntIn      = iCntIn;
                        m_aModuleInfo[m_iModuleCnt].iCntOut     = iCntOut;
                        m_aModuleInfo[m_iModuleCnt].nDataIn     = new short[128];
                        m_aModuleInfo[m_iModuleCnt].nDataOutGet = new short[128];
                        m_aModuleInfo[m_iModuleCnt].nDataOutSet = new short[128]; //new short[iCntOut]; 16개나 128개나 시간상 똑같아서 128
                        m_aModuleInfo[m_iModuleCnt].nDataOutNo  = new short[128]; //new short[iCntOut];
                        m_iMaxIn  += iCntIn;
                        m_iMaxOut += iCntOut;
                        for (int k = 0; k < 128; k++)
                        {
                            m_aModuleInfo[m_iModuleCnt].nDataOutNo[k] = (short)k;
                        }
                        m_iModuleCnt++;
                    }
                }
            }


            //for(int y = 0; y < m_iMaxOut; y++)
            //{
            //    SetOut(y,GetOut(y));
            //}

            for (int i = 0; i < m_iModuleCnt; i++)
            {
                NMC2.nmc_GetDIOOutput128(m_aModuleInfo[i].nNmcNo, m_aModuleInfo[i].nDataOutSet);
                NMC2.nmc_GetDIOOutput128(m_aModuleInfo[i].nNmcNo, m_aModuleInfo[i].nDataOutGet);
                NMC2.nmc_GetDIOInput128(m_aModuleInfo[i].nNmcNo, m_aModuleInfo[i].nDataIn);
            }
            //Log.ShowMessage(sTemp, sTemp);

            /*
             * short nRet;
             * // DIO 입/출력 개수 정보 가져오기 ========================
             * short nMotionType, nIOType, nExtIo, nMDio;
             * nRet = NMC2.nmc_GetDeviceInfo(m_nDevId, out nMotionType, out nIOType, out nExtIo, out nMDio);
             * //nIOType은 IO Controller 사용시.
             * //switch (nIOType)
             * //{
             * //    case  1: m_iMaxIn = 16; m_iMaxOut = 16; break;
             * //    case  2: m_iMaxIn = 32; m_iMaxOut = 32; break;
             * //    case  3: m_iMaxIn = 48; m_iMaxOut = 48; break;
             * //    case  4: m_iMaxIn = 64; m_iMaxOut = 64; break;
             * //    default: m_iMaxIn = 0 ; m_iMaxOut = 0 ; break;
             * //}
             * //기본 Motion Controller 사용시는 NMDio사용.
             * switch(nMDio)
             * {
             *  case  1: m_iMaxIn = 8 ; m_iMaxOut = 8 ; break;
             *  default: m_iMaxIn = 0 ; m_iMaxOut = 0 ; break;
             * }
             */

            //NMC2E-UDIO-CPU, NMC2E-UD16&UDO16 사용시
            //int plDeviceType;
            //NMC2.nmc_GetDeviceType(m_nDevId, out plDeviceType);
            //short pnInCount, pnOutCount ;
            //int iRet = NMC2.nmc_GetDIOInfo(m_nDevId, out pnInCount, out pnOutCount);
            //m_iMaxIn  = pnInCount ;
            //m_iMaxOut = pnOutCount;
            //if(iRet != 0) {
            //    m_iMaxIn = 0 ; m_iMaxOut = 0 ;
            //}
            //ReadStatIn  = new short[m_iMaxIn ];
            //ReadStatOut = new short[m_iMaxOut];

            return(true);
        }
Ejemplo n.º 22
0
 public void Update()
 {
     NMC2.nmc_GetMDIOOutput(m_nDevId, ReadStat);
     NMC2.nmc_GetMDIOInput(m_nDevId, ReadStat);
 }
Ejemplo n.º 23
0
        /// <summary>
        /// 모터 감속 무시 긴급정지.
        /// </summary>
        public void EmgStop()
        {
            short nRet;

            nRet = NMC2.nmc_SuddenStop(m_nDevId, (short)Para.iPhysicalNo);
        }
Ejemplo n.º 24
0
        //Motion Functions.
        /// <summary>
        /// 모터 정지 명령.
        /// </summary>
        public void Stop()
        {
            short nRet;

            nRet = NMC2.nmc_DecStop(m_nDevId, (short)Para.iPhysicalNo);
        }
Ejemplo n.º 25
0
 public static short SetPin(short nNmfNo, short nPinNo, short nOutStatus)
 {
     //SubForm.SmallLog.Instance.LogReport(string.Format("핀번호={0} 상태값={1}", nPinNo, nOutStatus));
     return(NMC2.nmc_SetDIOOutputBit(nNmfNo, nPinNo, nOutStatus));
 }