---
name: "time"
section: "9"
platform: "linux"
package: "linuxcnc-uspace"
version: "1:2.9.4-2+deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/time/9"
---

# time(9)

Time on in Hours, Minutes, Seconds

## NAME

time - Time on in Hours, Minutes, Seconds

## SYNOPSIS

**loadrt time \[count=*N*\|names=*name1*\[,*name2...*\]\]**

## DESCRIPTION

Time

When either the time.N.start or time.N.pause bits goes true the cycle timer resets and starts to time until time.N.start AND time.N.pause go false. When the time.N.pause bit goes true timing is paused until time.N.pause goes false. If you connect time.N.start to halui.program.is-running and leave time.N.pause unconnected the timer will reset during a pause. See the example connections below for more information.

Time returns the hours, minutes, and seconds that time.N.start is true.

Sample PyVCP code to display the hours:minutes:seconds.

\<pyvcp\>\
   \<hbox\>\
   \<label\>\
     \<text\>"Cycle Time"\</text\>\
     \<font\>("Helvetica",14)\</font\>\
   \</label\>\
   \<u32\> \
       \<halpin\>"time-hours"\</halpin\>\
       \<font\>("Helvetica",14)\</font\>\
       \<format\>"2d"\</format\>\
   \</u32\>\
   \<label\>\
     \<text\>":"\</text\>\
     \<font\>("Helvetica",14)\</font\>\
   \</label\>\
   \<u32\> \
       \<halpin\>"time-minutes"\</halpin\>\
       \<font\>("Helvetica",14)\</font\>\
       \<format\>"2d"\</format\>\
   \</u32\>\
   \<label\>\
     \<text\>":"\</text\>\
     \<font\>("Helvetica",14)\</font\>\
   \</label\>\
   \<u32\> \
       \<halpin\>"time-seconds"\</halpin\>\
       \<font\>("Helvetica",14)\</font\>\
       \<format\>"2d"\</format\>\
   \</u32\>\
   \</hbox\> \</pyvcp\>

In your post-gui.hal file you might use one of the following to connect this timer:

 For a new config:

 loadrt time\
  addf time.0 servo-thread\
  net cycle-timer        time.0.start \<= halui.program.is-running\
  net cycle-timer-pause  time.0.pause \<= halui.program.is-paused\
  net cycle-seconds pyvcp.time-seconds \<= time.0.seconds\
  net cycle-minutes pyvcp.time-minutes \<= time.0.minutes\
  net cycle-hours pyvcp.time-hours \<= time.0.hours

 Previous to this version if you wanted the timer to continue running\
  during a pause instead of resetting, you had to use a HAL NOT component\
  to invert the halui.program.is-idle pin and connect to time.N.start as\
  shown below:

 loadrt time\
  loadrt not\
  addf time.0 servo-thread\
  addf not.0 servo-thread\
  net prog-running not.0.in \<= halui.program.is-idle\
  net cycle-timer time.0.start \<= not.0.out\
  net cycle-seconds pyvcp.time-seconds \<= time.0.seconds\
  net cycle-minutes pyvcp.time-minutes \<= time.0.minutes\
  net cycle-hours pyvcp.time-hours \<= time.0.hours

 For those who have this setup already, you can simply add a net connecting\
  time.N.pause to halui.program.is-paused:

 net cycle-timer-pause time.0.pause \<= halui.program.is-paused

## FUNCTIONS

- **time.***N* (requires a floating-point thread)

  ## PINS

- **time.*N*.start bit in**

  Timer On

- **time.*N*.pause bit in (default: *0*)**

  Pause

- **time.*N*.seconds u32 out**

  Seconds

- **time.*N*.minutes u32 out**

  Minutes

- **time.*N*.hours u32 out**

  Hours

## AUTHOR

John Thornton, itaib, Moses McKnight

## LICENSE

GPL
