Netx360

Netx360

June-2nd-2020, 01:15 PM

NetX360 ® is a single point of access for professionals to manage their business and support their clients' needs by focusing on data and analytics to re-imagine the experience and support their needs. Regardless of your business model—commission, advisory, retail, self-directed, institutional or asset management—NetX360 is for you. © 2016 Pershing LLC. All rights reserved. Pershing LLC is a subsidiary of The Bank of New York Mellon Corporation. Pershing LLC, member FINRA, NYSE, SIPC.

NetX360 ® is a single point of access for professionals to manage their business and support their clients' needs by focusing on data and analytics to re-imagine the experience and support their needs. Regardless of your business model—commission, advisory, retail, self-directed, institutional or asset management—NetX360 is for you. OVERVIEW NETXINVESTOR USER GUIDE 4 2. Overview NetXInvestor™ is an online investor platform enabling you to access account information, view trade status, get quotes, and perform market research, read news and much more. To turn Postback mechanism ON. Login: Password.

Hello,
I've started experimenting with EtherCAT and NetHAT over STM32MP157C-DK2 board. I measured the xChannelIORead and xChannelIOWrite performances and I'm obtaining results more than 2ms for each, between 4-5ms for both with a large amount of jitter. My embedded Linux is patched with PREEMPT_RT and the measurements were done inside a high priority RT thread.
I was expecting to get latencies < 1 ms for real time with EtherCAT and I was wondering if these measurements are expected on the NetHAT.
This is the function I used for measuring time:
uint64_t getTimeNanoseconds() {
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
return (uint64_t)(ts.tv_sec) * 1000000000 + (uint64_t)(ts.tv_nsec);
}
Netx360
How the measurement is done:
while(counter < 10000)
{
while( CIFX_DEV_NO_COM_FLAG (lRet = xChannelBusState( hChannel, CIFX_BUS_STATE_ON, &ulState, 10))){
printf('Waiting for Bus communication!rn');
}
abSendData[1] = !abSendData[1];
startTime = getTimeNanoseconds();
if(CIFX_NO_ERROR (lRet = xChannelIORead(hChannel, 0, 0, sizeof(abRecvData), abRecvData, 10))){
tr_r = getTimeNanoseconds() - startTime;
sum_r += tr_r;
rTimes[counter] = tr_r;
}
else {
printf('Error reading n');
return NULL;
}
startTime = getTimeNanoseconds();
if(CIFX_NO_ERROR (lRet = xChannelIOWrite(hChannel, 0, 0, sizeof(abSendData), abSendData, 10))){
tr_wr = getTimeNanoseconds() - startTime;
sum_wr += tr_wr;
wTimes[counter] = tr_wr;
}
else {
printf('Error writing n');
return NULL;
}
counter++;
printf('R | Time : %llu Average : %llu | W | Time : %llu Average : %llu |n', tr_r, sum_r / counter, tr_wr, sum_wr / counter);
usleep(cycleTime);
}
Netx360
Netx360I obtain different performances depending on 'cycleTime' - time between each read/write call - I have much more jitter with cycle time < 1ms than for example 10ms. I also have different performances depending on when I execute, I can execute same code twice and get different average latencies. Netx360
The cycle time of the master is 200us for sending/receiving process data.

Netx360


Www.netx360.com/download

I'm not quite familiar with real time protocol programming and I would like to know if these measurements are expected if not I'm curious to know the cause of these latencies.

Netx360 Download

Thank you,