int CiSeries::getLoads()
{
#ifdef LOADS
	short	ret;
	if(Globals.nAxesLoadFlag)
	{
		ODBSVLOAD sv[MAX_AXIS];
		short num = _adapter->_nAxes;
		GLogger.LogMessage("iSeries::get Loads Enter\n", HEAVYDEBUG);
		try {
			ret = cnc_rdsvmeter(_adapter->mFlibhndl, &num, sv); // 15,16,18,21,0,powermate
			if(ret) 
			{
				LOGONCE GLogger.Fatal(StdStringFormat("CiSeries::cnc_rdsvmeter Failed\n"));
				return EW_OK;
			}

			if(num>0)
				_adapter->SetMTCTagValue("Xload",StdStringFormat("%8.4f", ComputeValue(sv[0].svload.data, sv[0].svload.dec)));
			if(num>1) 
				_adapter->SetMTCTagValue("Yload",StdStringFormat("%8.4f", ComputeValue(sv[1].svload.data, sv[1].svload.dec)));
			if(num>2)
				_adapter->SetMTCTagValue("Zload",StdStringFormat("%8.4f", ComputeValue(sv[2].svload.data, sv[2].svload.dec)));

			for(int i=3; i< _adapter->_nAxes; i++)
			{
				if(::toupper(sv[i].svload.name) == 'A')
					_adapter->SetMTCTagValue("Aload",StdStringFormat("%8.4f", ComputeValue(sv[i].svload.data, sv[i].svload.dec)));
				if(::toupper(sv[i].svload.name) == 'B')
					_adapter->SetMTCTagValue("Bload",StdStringFormat("%8.4f", ComputeValue(sv[i].svload.data, sv[i].svload.dec)));
				if(::toupper(sv[i].svload.name) == 'C')
					_adapter->SetMTCTagValue("Cload",StdStringFormat("%8.4f", ComputeValue(sv[i].svload.data, sv[i].svload.dec)));
			}
		}
	}
	catch(...)
	{


	}
#endif
	GLogger.Info("CiSeries::get Loads leave\n");
	return EW_OK;
}
Пример #2
0
void FanucAdapter::getAxisLoad()
{
  if (!mConnected)
    return;

  ODBSVLOAD load[MAX_AXIS];
  short num = MAX_AXIS;
  short ret = cnc_rdsvmeter(mFlibhndl, &num, load);
  if (ret == EW_OK) {
    if (num > mAxisCount)
    {
      printf("Error: Axis load has more axes than names: %d > %d\n",
             num, mSpindleCount);
      return;
    }
            
    for (int i = 0; i < mAxisCount; i++)
      mAxisLoad[i]->setValue(load[i].svload.data /pow((long double) 10.0,
                                                      (long double) load[0].svload.dec));
  }
}