A safety relay device, comprising: a memory that stores computer-executable components; a processor, operatively coupled to the memory, that executes the computer-executable components, the computer-executable components comprising: a counter component configured to periodically increment a counter at a defined frequency; a device diagnostic component configured to output a diagnostic request message directed to a safety input device on an industrial safety circuit and to record a first value of the counter corresponding to a first time at which the diagnostic message was output; and a message processing component configured to extract a return counter value included in a diagnostic response message received in response to the diagnostic request message, characterized in that the message processing component is further configured to generate a time-stamp for an event detected by the safety input device based on the first value, the return counter value, and a second value of the counter corresponding to a second time at which the diagnostic response message is received at the safety relay, wherein the return counter value is a difference between a counter value of the internal counter of the safety input device at a time the diagnostic request message is received by said safety input device and a recorded counter value of the internal counter of the safety input device at a time said event is detected by said safety input device. a memory that stores computer-executable components; a processor, operatively coupled to the memory, that executes the computer-executable components, the computer-executable components comprising: a counter component configured to periodically increment a counter at a defined frequency; a device diagnostic component configured to output a diagnostic request message directed to a safety input device on an industrial safety circuit and to record a first value of the counter corresponding to a first time at which the diagnostic message was output; and a message processing component configured to extract a return counter value included in a diagnostic response message received in response to the diagnostic request message, characterized in that the message processing component is further configured to generate a time-stamp for an event detected by the safety input device based on the first value, the return counter value, and a second value of the counter corresponding to a second time at which the diagnostic response message is received at the safety relay, wherein the return counter value is a difference between a counter value of the internal counter of the safety input device at a time the diagnostic request message is received by said safety input device and a recorded counter value of the internal counter of the safety input device at a time said event is detected by said safety input device. a counter component configured to periodically increment a counter at a defined frequency; a device diagnostic component configured to output a diagnostic request message directed to a safety input device on an industrial safety circuit and to record a first value of the counter corresponding to a first time at which the diagnostic message was output; and a message processing component configured to extract a return counter value included in a diagnostic response message received in response to the diagnostic request message, characterized in that the message processing component is further configured to generate a time-stamp for an event detected by the safety input device based on the first value, the return counter value, and a second value of the counter corresponding to a second time at which the diagnostic response message is received at the safety relay, wherein the return counter value is a difference between a counter value of the internal counter of the safety input device at a time the diagnostic request message is received by said safety input device and a recorded counter value of the internal counter of the safety input device at a time said event is detected by said safety input device.