public ushort HomeServo(ushort g_uESCCardNo, ushort g_uESCNodeID, ushort uMode, uint nStrVel, uint nMaxVel, ref ushort _mDone, int nOffset = 0)
        {
            uint _uTacc = Convert.ToUInt32(Convert.ToDouble(0.1));

            g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_Home_Config(g_uESCCardNo, g_uESCNodeID, 0, uMode, nOffset, nStrVel, nMaxVel, _uTacc);
            if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                MessageBox.Show("_ECAT_Slave_Home_Config, ErrorCode = " + g_uRet.ToString());
                return(g_uRet);
            }
            else
            {
                g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_Home_Move(g_uESCCardNo, g_uESCNodeID, 0);
                if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
                {
                    MessageBox.Show("_ECAT_Slave_Home_Move, ErrorCode = " + g_uRet.ToString());
                }
                else
                {
                    do
                    {
                        g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_Motion_Get_Mdone(0, g_uESCNodeID, 0, ref _mDone);
                    } while ((_mDone) != 0);
                }
                return(g_uRet);
            }
        }
Beispiel #2
0
        //scan DIO slave status
        private void systemScan(FlowVar fv)
        {
            //while (true)
            //{
            if (keyOfIOScan)
            {
                ushort uValue = BitConverterEx.ConvertToUInt16(Status1);
                if (uValue != _lastOutputValue)
                {
                    _lastOutputValue = uValue;
                    ushort uRet = CEtherCAT_DLL.CS_ECAT_Slave_DIO_Set_Output_Value(dIOPara.CardNo, dIOPara.NodeNo, g_uESCSlotID, uValue);

                    if (uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
                    {
                        throw new Exception("CS_ECAT_Slave_DIO_Set_Output_Value, " + GetEtherCATErrorCode(uRet));
                    }

                    //Thread.Sleep(15);
                    //if (Environment.ProcessorCount == 1 || (++_loops % 100) == 0)
                    //{
                    //    Thread.Sleep(1);
                    //}
                    //else
                    //{
                    //    Thread.SpinWait(_iterations);
                    //}
                }
            }
            //}
        }
Beispiel #3
0
 /// <summary>
 /// 設定Output數值
 /// </summary>
 /// <param name="bitNum">Bit Number</param>
 /// <param name="status">寫入成功回傳true,反之false(DI點一定false)</param>
 /// <returns></returns>
 public bool SetOutput(ushort bitNum, bool status)
 {
     if (dIOPara.IsActive)
     {
         if (ParameterDictionary.GetValue("DO7062BlockScan") == "true")
         {
             Status1[bitNum] = status;
             Status2[bitNum / 8, bitNum % 8] = status;
         }
         else
         {
             Stopwatch sw     = Stopwatch.StartNew();
             ushort    uValue = (ushort)(status ? 1 : 0);
             ushort    uRet   = CEtherCAT_DLL.CS_ECAT_Slave_DIO_Set_Single_Output_Value(dIOPara.CardNo, dIOPara.NodeNo, g_uESCSlotID, bitNum, uValue);
             if (uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
             {
                 throw new Exception("CS_ECAT_Slave_DIO_Set_Single_Output_Value, " + GetEtherCATErrorCode(uRet));
             }
             sw.Stop();
             //LogHelper.Debug("{0} SetOutput TACT {1}", this.DeviceName, sw.ElapsedMilliseconds);
         }
         return(true);
     }
     else
     {
         return(false);
     }
 }
Beispiel #4
0
        //scan DIO slave status
        private void systemScan(FlowVar fv)
        {
            //while (true)
            //{
            if (keyOfIOScan)
            {
                ushort uValue = 0, uRet = 0;
                uRet = CEtherCAT_DLL.CS_ECAT_Slave_DIO_Get_Input_Value(dIOPara.CardNo, dIOPara.NodeNo, g_uESCSlotID, ref uValue);

                if (uRet == CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
                {
                    for (int nBit = 0; nBit < 16; nBit++)
                    {
                        Status1[nBit] = BitConverterEx.TestB(uValue, (byte)nBit);
                        Status2[nBit / 8, nBit % 8] = BitConverterEx.TestB(uValue, (byte)nBit);
                    }
                }
                else
                {
                    throw new Exception("CS_ECAT_Slave_DIO_Get_Input_Value, " + GetEtherCATErrorCode(uRet));
                }

                //Thread.Sleep(15);
                //if (Environment.ProcessorCount == 1 || (++_loops % 100) == 0)
                //{
                //    Thread.Sleep(1);
                //}
                //else
                //{
                //    Thread.SpinWait(_iterations);
                //}
            }
            //}
        }
Beispiel #5
0
        // Protected implementation of Dispose pattern.
        protected override void Dispose(bool disposing)
        {
            if (disposed)
            {
                return;
            }

            if (disposing)
            {
                // Free any other managed objects here.
                //
            }

            // Free any unmanaged objects here.
            if (g_nESCExistCards > 0)
            {
                foreach (var item in g_uESCCardNoList)
                {
                    CEtherCAT_DLL.CS_ECAT_Master_Reset(item.Value.CardNo);
                }
                CEtherCAT_DLL.CS_ECAT_Master_Close();
                g_nESCExistCards = 0;
            }

            disposed = true;
        }
        public ushort getDI(ushort g_uESCCardNo, ushort g_uESCNodeID)
        {
            ushort _uValue = 0, _SlotNo = 0;

            g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_DIO_Get_Input_Value(g_uESCCardNo, g_uESCNodeID, _SlotNo, ref _uValue);

            return(_uValue);
        }
Beispiel #7
0
        /// <summary>
        /// 清除所有DO點狀態
        /// </summary>
        public void ClearAllOutput()
        {
            ushort uRet = CEtherCAT_DLL.CS_ECAT_Slave_DIO_Set_Output_Value(dIOPara.CardNo, dIOPara.NodeNo, g_uESCSlotID, 0);

            if (uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                throw new Exception("CS_ECAT_Slave_DIO_Set_Output_Value, " + GetEtherCATErrorCode(uRet));
            }
        }
Beispiel #8
0
        public void SetInpuAverageMode(ADCChannel channelNo, ushort averageTimes)
        {
            ushort g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_ESC8124_Set_Input_AverageMode(adcPara.CardNo, adcPara.NodeNo, (ushort)channelNo, averageTimes);

            if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                throw new Exception("CS_ECAT_Slave_ESC8124_Set_Input_AverageMode, " + GetEtherCATErrorCode(g_uRet));
            }
        }
Beispiel #9
0
        public void SetInputEnable(ADCChannel channelNo, bool enable)
        {
            ushort g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_R1_EC8124_Set_Input_Enable(adcPara.CardNo, adcPara.NodeNo, (ushort)channelNo, (ushort)(enable ? 1 : 0));

            if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                throw new Exception("CS_ECAT_Slave_R1_EC8124_Set_Input_Enable, " + GetEtherCATErrorCode(g_uRet));
            }
        }
Beispiel #10
0
        public void SetInputConvstFreqMode(ADCChannel channelNo, ConvstFreqMode rangeMode)
        {
            ushort g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_ESC8124_Set_Input_ConvstFreq_Mode(adcPara.CardNo, adcPara.NodeNo, (ushort)channelNo, (ushort)rangeMode);

            if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                throw new Exception("CS_ECAT_Slave_R1_EC8124_Set_Input_RangeMode, " + GetEtherCATErrorCode(g_uRet));
            }
        }
Beispiel #11
0
        public void SetOutputValue(DACChannel channelNo, ushort value)
        {
            ushort g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_AIO_Set_Output_Value(dacPara.CardNo, dacPara.NodeNo, (ushort)channelNo, value);

            if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                throw new Exception("CS_ECAT_Slave_AIO_Set_Output_Value, " + GetEtherCATErrorCode(g_uRet));
            }
        }
Beispiel #12
0
        public void SetOutputRangeMode(DACChannel channelNo, RangeMode rangeMode)
        {
            ushort g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_R1_EC9144_Set_Output_RangeMode(dacPara.CardNo, dacPara.NodeNo, (ushort)channelNo, (ushort)rangeMode);

            if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                throw new Exception("CS_ECAT_Slave_R1_EC9144_Set_Output_RangeMode, " + GetEtherCATErrorCode(g_uRet));
            }
        }
        public ushort MoveP(ushort g_uESCNodeID, ushort g_uConstVel, ushort g_uAccesleration, ushort g_uDeceleration, int g_nTarget)
        {
            g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_PP_Start_Move(0, g_uESCNodeID, 0, g_nTarget, g_uConstVel, g_uAccesleration, g_uDeceleration, 1);

            if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                MessageBox.Show("CS_ECAT_Slace_PP_Start_Move, ErrorCode = " + g_uRet.ToString());
            }
            return(g_uRet);
        }
        public string setOnservo(ushort g_uESCCardNo, ushort g_uESCNodeID, ushort _uCheckOnOff)

        {
            ushort _g_uESCSlotID = 0;

            // _uCheckOnOff = 1;

            CEtherCAT_DLL.CS_ECAT_Slave_Motion_Set_Svon(g_uESCCardNo, g_uESCNodeID, _g_uESCSlotID, _uCheckOnOff);
            //MessageBox.Show("OK");
            return("");
        }
Beispiel #15
0
        public ushort GetInputRangeMode(ADCChannel channelNo)
        {
            ushort rangeMode = 0;
            ushort g_uRet    = CEtherCAT_DLL.CS_ECAT_Slave_R1_EC8124_Get_Input_RangeMode(adcPara.CardNo, adcPara.NodeNo, (ushort)channelNo, ref rangeMode);

            if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                throw new Exception("CS_ECAT_Slave_R1_EC8124_Set_Input_RangeMode, " + GetEtherCATErrorCode(g_uRet));
            }
            return(rangeMode);
        }
Beispiel #16
0
        public ushort GetInputValue(ADCChannel channelNo)
        {
            ushort value  = 0;
            ushort g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_AIO_Get_Input_Value(adcPara.CardNo, adcPara.NodeNo, (ushort)channelNo, ref value);

            if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                throw new Exception("CS_ECAT_Slave_AIO_Get_Input_Value, " + GetEtherCATErrorCode(g_uRet));
            }
            return(value);
        }
Beispiel #17
0
        public ushort GetOutputReturnCode(DACChannel channelNo)
        {
            ushort returnCode = 0;
            ushort g_uRet     = CEtherCAT_DLL.CS_ECAT_Slave_R1_EC9144_Get_Output_ReturnCode(dacPara.CardNo, dacPara.NodeNo, (ushort)channelNo, ref returnCode);

            if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                throw new Exception("CS_ECAT_Slave_R1_EC9144_Get_Output_ReturnCode, " + GetEtherCATErrorCode(g_uRet));
            }
            return(returnCode);
        }
 public ushort getMdone(ushort NodeID)
 {
     g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_Motion_Get_Mdone(0, NodeID, SlotNo, ref StatusMdone);
     // Mdone = StatusMdone;
     if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
     {
         MessageBox.Show("CS_ECAT_Slave_Motion_Get_Mdone, ErrorCode = " + g_uRet.ToString());
         StatusMdone = 1;
     }
     return(StatusMdone);
 }
        public int getPosition(ushort g_uESCCardNo, ushort g_uESCNodeID)
        {
            int    _ngetPos      = 0;
            ushort _g_uESCSlotID = 0;


            g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_Motion_Get_Position(g_uESCCardNo, g_uESCNodeID, _g_uESCSlotID, ref _ngetPos);
            // MessageBox.Show(_ngetPos.ToString());

            return(_ngetPos);
            // return _ngetPos.ToString();
        }
        public ushort setDO(ushort g_uESCCardNo, ushort g_uESCNodeID, ushort BitNum, ushort value)
        {
            ushort _SlotNo = 0;

            g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_DIO_Set_Single_Output_Value(g_uESCCardNo, g_uESCNodeID, _SlotNo, BitNum, value);
            //MessageBox.Show (g_uRet.ToString());
            if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                MessageBox.Show("CS_ECAT_Slave_DIO_Set_Single_Output_Value, ErrorCode = " + g_uRet.ToString());
            }
            return(g_uRet);
        }
        public string getAnalog(ushort g_uESCCardNo, ushort g_uESCNodeID, int CH_Index)

        {
            int[] g_nModeValue  = new int[2];
            int[] g_nModeLength = new int[2];

            ushort _uValue = 0, uRet = 0, _g_uESCSlotID = 0;
            int    nIndexMode  = 0;
            double _dTempData  = 0;
            uint   uRevisionNo = 0;

            g_nModeValue[0] = -5;
            //g_nModeValue[1] = -10;

            g_nModeLength[0] = 10;
            //g_nModeLength[1] = 20;

            gRevisionNo = uRevisionNo;

            _g_uESCSlotID = Convert.ToUInt16(CH_Index);

            g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_ESC8124_Set_Input_Enable(g_uESCCardNo, g_uESCNodeID, _g_uESCSlotID, 1);
            if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                MessageBox.Show("_ECAT_Slave_ESC8124_Set_Input_Enable, ErrorCode = " + g_uRet.ToString());
            }
            uRet = CEtherCAT_DLL.CS_ECAT_Slave_AIO_Get_Input_Value(g_uESCCardNo, g_uESCNodeID, _g_uESCSlotID, ref _uValue);
            if (uRet == CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                if (gRevisionNo == 0x100000)
                {
                    _dTempData = _uValue + 0x8000;

                    if (_dTempData >= 0x10000)
                    {
                        _dTempData -= 0x10000;
                    }
                }
                else
                {
                    _dTempData = _uValue;
                }


                _dTempData = g_nModeValue[nIndexMode] + (_dTempData * g_nModeLength[nIndexMode] / 0xFFFF);
                //  double _uPvalue = (2.489 * _dTempData) - 3.370 ;

                return(_dTempData.ToString("0.###"));
            }

            return("AD_FAIL");
        }
        public ushort setPO(ushort g_uESCCardNo, ushort g_uESCNodeID, uint nTargetVel)
        {
            uint uAcceleration = Convert.ToUInt32(5000);
            uint uDeceleration = Convert.ToUInt32(2000);

            ushort uRet = CEtherCAT_DLL.CS_ECAT_Slave_PP_Start_Move(g_uESCCardNo, g_uESCNodeID, 0, 300000, nTargetVel, uAcceleration, uDeceleration, 0);

            if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                MessageBox.Show("CS_ECAT_Slave_PP_Start_Move, ErrorCode = " + g_uRet.ToString());
            }
            return(uRet);
        }
        public ushort resetPO(ushort g_uESCCardNo, ushort g_uESCNodeID)
        {
            double dTdec;

            // ushort Status = CEtherCAT_DLL.CS_ECAT_Slave_Motion_Sd_Stop(g_uESCCardNo, g_uAxisNo, g_SlotNo, g_Tdec);
            dTdec  = Convert.ToDouble(1);
            g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_Motion_Sd_Stop(g_uESCCardNo, g_uESCNodeID, 0, 0);

            if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                MessageBox.Show("_ECAT_Slave_Motion_Sd_Stop, ErrorCode = " + g_uRet.ToString());
            }
            return(g_uRet);
        }
        public ushort getAI(ushort g_uESCNodeID, ushort CH_Index, ref double uValue)
        {
            int[]  g_nModeValue  = new int[2];
            int[]  g_nModeLength = new int[2];
            int    nIndexMode    = 0;
            double _dTempData    = 0;
            uint   uRevisionNo   = 0;

            g_nModeValue[0] = -5;
            //g_nModeValue[1] = -10;
            ushort _uValue = 0;

            g_nModeLength[0] = 10;
            //g_nModeLength[1] = 20;

            gRevisionNo = uRevisionNo;

            g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_ESC8124_Set_Input_Enable(g_uESCCardNo, g_uESCNodeID, CH_Index, 1);
            if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
            {
                MessageBox.Show("_ECAT_Slave_ESC8124_Set_Input_Enable, ErrorCode = " + g_uRet.ToString());
            }
            else
            {
                g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_AIO_Get_Input_Value(g_uESCCardNo, g_uESCNodeID, CH_Index, ref _uValue);
                if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
                {
                    MessageBox.Show("_ECAT_Slave_AIO_Get_Input_Value, ErrorCode = " + g_uRet.ToString());
                }
                else
                {
                    if (gRevisionNo == 0x100000)
                    {
                        _dTempData = _uValue + 0x8000;

                        if (_dTempData >= 0x10000)
                        {
                            _dTempData -= 0x10000;
                        }
                    }
                    else
                    {
                        _dTempData = _uValue;
                    }
                }
            }
            uValue = _dTempData;
            return(g_uRet);
        }
 public ushort ToTarget(ushort g_uESCCardNo, ushort g_uESCNodeID, ref ushort Mdone)
 {
     if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
     {
         MessageBox.Show("_ECAT_Slave_JOG, ErrorCode = " + g_uRet.ToString());
     }
     else
     {
         do
         {
             g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_Motion_Get_Mdone(g_uESCCardNo, g_uESCNodeID, 0, ref Mdone);
         } while (Mdone != 0);
     }
     return(g_uRet);
 }
        public bool getDI(ushort g_uESCCardNo, ushort g_uESCNodeID, ushort bitNum)
        {
            ushort _uValue = 0, _SlotNo = 0;

            g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_DIO_Get_Input_Value(g_uESCCardNo, g_uESCNodeID, _SlotNo, ref _uValue);


            if ((_uValue & (0x1 << bitNum)) == (0x1 << bitNum))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public bool getDO(ushort g_uESCCardNo, ushort g_uESCNodeID, ushort bitNum)
        {
            ushort _SlotNo = 0, _value = 0;

            g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_DIO_Get_Single_Output_Value(g_uESCCardNo, g_uESCNodeID, _SlotNo, bitNum, ref _value);
            // MessageBox.Show(g_uRet.ToString());

            if ((_value & (0x1 << bitNum)) == (0x1 << bitNum))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Beispiel #28
0
        private void InitialCard()
        {
            try
            {
                g_uRet = CEtherCAT_DLL.CS_ECAT_Master_Open(ref g_nESCExistCards);
            }
            catch (Exception ex)
            {
                throw new Exception("No EtherCat dll can be found!");
            }
            g_bInitialFlag = false;
            if (g_nESCExistCards == 0)
            {
                throw new Exception("No EtherCat can be found!");
            }
            else
            {
                for (ushort uCount = 0; uCount < g_nESCExistCards; uCount++)
                {
                    ushort uCardNo = 0;
                    g_uRet = CEtherCAT_DLL.CS_ECAT_Master_Get_CardSeq(uCount, ref uCardNo);
                    if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
                    {
                        throw new Exception("CS_ECAT_Master_Get_CardSeq, " + GetEtherCATErrorCode(g_uRet));
                    }
                    else
                    {
                        g_uESCCardNoList.Add(uCount, new CardInfo()
                        {
                            CardNo = uCardNo
                        });
                    }
                }

                EtherCATInitializationForm.GetInstance().SetCardList(g_uESCCardNoList);

                foreach (var item in g_uESCCardNoList)
                {
                    g_uRet = CEtherCAT_DLL.CS_ECAT_Master_Initial(item.Value.CardNo);
                    if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
                    {
                        throw new Exception("CS_ECAT_Master_Initial, " + GetEtherCATErrorCode(g_uRet));
                    }
                }
                g_bInitialFlag = true;
            }
        }
        public string initialCard(ushort nCardNumber = 0)

        {
            ushort nSeq = 0,

                   g_uRet = 0;

            {
                g_uRet = CEtherCAT_DLL.CS_ECAT_Master_Get_CardSeq(nSeq, ref nCardNumber);
                g_uRet = CEtherCAT_DLL.CS_ECAT_Master_Initial(nCardNumber);
                if (g_uRet != CEtherCAT_DLL_Err.ERR_ECAT_NO_ERROR)
                {
                    MessageBox.Show("_ECAT_Master_Initial, ErrorCode = " + g_uRet.ToString());
                }
            }
            return("INITIAL");
        }
        public ushort getDI(ushort g_uESCNodeID, ushort bitNum, out bool _bitValue)
        {
            ushort _uValue = 0, _SlotNo = 0;

            g_uRet = CEtherCAT_DLL.CS_ECAT_Slave_DIO_Get_Input_Value(0, g_uESCNodeID, _SlotNo, ref _uValue);


            if ((_uValue & (0x1 << bitNum)) == (0x1 << bitNum))
            {
                _bitValue = true;
            }
            else
            {
                _bitValue = false;
            }

            return(g_uRet);
        }