Opto MMP - Set EPIC Time

With the Opto MMP (specifically the .NET development kit) is there any workaround to setting the time for the unit?

There are functions that seem to work for the other controllers (R2’s at least) with the WriteLocalDateTime() and WriteWriteDateTime() functions.

I am looking for any work around for setting these through the MMP.

Thanks,
-Peter

Sorry, I am a little lost here…
You say that the command works for other controllers, which seems to indicate that you are not trying this command on an R2 controller, but you don’t mention which type.

Sorry for the confusion, yes I have tried those functions on both the R2 and EPIC units and they only work for the R2 (which makes sense since the memory map guide says it does not apply to groov IO units). Unless there is something I am doing wrong with the EPIC units.

I was just seeing if there was any way to set the time using an MMP command for EPIC units with the .NET SDK.

Ah. Ok. That makes a lot more sense, thanks for the clarification.

I will need to dig into this a bit… since you are using the .Net SDK we will explore that option for setting the time on the EPIC… But I have to ask… Why not just use the SNTP function that is built in to groov Manage?

Thanks.

We have an interface (the .NET app) that pulls and collects from multiple IO units (which can be a mix of EPIC and R2’s) and I was looking for a way to automate syncing the clocks every so often using that app.

We currently set all times using PAC Terminal or Groov Manage.

Right-Oh. No worries. I will take a look into it, but just in case you were not aware, just like EPIC has SNTP, SNAP has the same commands, so you can keep its clock synced as well.

Right. So… As you already discovered, there is no MMP method to set the RTC (real time clock) on the EPIC (or RIO).
Since they use Linux as their core OS and since it has NTP built in from the ground up we chose to go with that method of time synchronization.
The SNAP-PAC controllers did not initially have any NTP commands so we had to provide other methods for them to be able to adjust their time (like the time sync button in PAC Terminal for example). The PAC Control SNTP commands came much latter in their life, but now that we have them, its much easier to use them.

Via groov Manage you can configure a local NTP server if your EPIC (or RIO) does not have a gateway access to the Internet to sync its time.
The same local NTP server can also be used with the SNAP controllers via the SNTP server ULR string, so they don’t need Internet access either.

All that said, if you still want to use .Net to set both SNAP and EPIC controller RTC then you will need to use MMP for SNAP and .Net procedure call for EPIC.
Here is an example I found the web for the latter; https://stackoverflow.com/questions/54109936/how-can-change-system-date-time-in-ubuntu-os-with-net-core
I have not tested it and was just one of many such examples I found. (I chose this one because EPIC Linux is sort of close to Ubuntu).

Thanks for the fast response. I would love for our units to have internet access but that is an even more difficult challenge…

I will look into setting the EPIC units differently with shell access commands.

Thanks again.
-Peter

You must have a local time server? Or are you just hoping that the PC clock running .Net is drifting less than the controllers?
I think I came across some software that enabled a Windows PC to become a SNTP server at some stage. Perhaps you could run that software and sync the controllers to the PC on the local network?

Having the PC act as an SNTP server would 100% solve this problem and is a great idea. I’ll look into it.

Thanks,
-Peter

1 Like

Win 10 time service can act as a server by changing a value in the registry:

1 Like