Yes, there needs to be an intermediate time source, i.e. proxy between the SLC and some reasonable source of time, the latter being tied to an NTP server somehow.
The suggestion in Post #4 about a Standalone Time of Day relay seems simplest, but I would prefer one that talks to NTP, if drift is an issue.
The need to reset clock drift seems custom-made to a RaspberryPI or other inexpensive equivalent SBC: built-in NTP; some kind of server* or relay output to trigger the SLC.
* Running a single-purpose Modbus RTU or Modbus TCP server to provide six holding registers (year, month, day, hour, minute, second - or for that matter only hour, minute, second) to be read by Function code 0x03 would be all but trivial. Even an Ethernet/IP or CIP server if that client is easier to set up on the SLC.
Can an SLC programmatically even write to S:37 through S:42 to update the RTC?
Thinking a bit outside the box, OP is in the USA, so power is a 60Hz time source accurate to several decimal places; counting 3600 pulses externally to trigger a top-of-minute input would not be difficult, but then there would have to be a way to handle power outages, so an external source of time would be required, so why bother with the counter?
The SLC instruction set manual mentions broadcast write messages being used to synchronize device clocks or actions see bottom of page [DF1/DH-485 broadcast support] at
this link.
And
this link from the MicroLogix 1100 Instruction Set manual has a quickstart example to have the SLC update a MicroLogix 1100 RTC over DH-485 or DF1; I don't know if it can be run in the other direction, and we don't even know what communication channels are available in OP's case.
Also, I am not sure if anyone answered OP's question two yet:
And question two also concerning this plc, I've been tasked with trying to get the waste treatment system to start automatically say at 4am and turn off at 4pm everyday so that it will be ready when our operators show up for their shift without having to wait for the startup process. Is this possible through the SLC 5/03?
The table at this link list Status file word S:40 as hour-of-day, so summat like this:
Code:
<bit> trigger4am
------[LIM ]-------[ONS]-------( )-----
[Low Lim 4]
[Test S:40]
[High Lim 7]
trigger4am inhibit_or_stop_warmup startwarmup
--+-----] [------+--------] [------------------( }----
| |
| startwarmup |
+-----] [------+
albeit clumsy, would attempt. once, to perform a warmup on the first time the SLC detects the time is between 4am and 8am**. What happens when that startwarmup bit becomes 1, especially regarding safety, is beyond the scope of this forum. Those are symbolic names, but of course on the SLC they would be data file addresses. I used the one-shot and a start/stop pattern so that if the warmup failed for some reason (via the inhibit_or_stop_warmup bit), it would not attempt another unattended warmup.
** the LIM is used in case power is out from 4am until after 5am; if that is not a concern, then [EQU s:40 4] would work instead.