;; (define-type dim (record time::int length::int mass::int))

(define-block
  sldemo_enginewc__Controller


  (
    sldemo_enginewc__Controller__Desired_rpm__Out1_1_1
    sldemo_enginewc__Controller__N__Out1_1_1
    sldemo_enginewc__Controller__ThrottleAng.__In1_1_1
  )

  (
    sldemo_enginewc__Controller__preventswindup__integrator_input__Out1_1_1
    sldemo_enginewc__Controller__preventswindup__controller_output__Out1_1_1
    sldemo_enginewc__Controller__preventswindup__enable_integration__In1_1_1
    sldemo_enginewc__Controller__Constant1__Out1_1_1
    sldemo_enginewc__Controller__Discrete-TimeIntegrator__In1_1_1
    sldemo_enginewc__Controller__Discrete-TimeIntegrator__Out1_1_1
    sldemo_enginewc__Controller__IntegralGain__In1_1_1
    sldemo_enginewc__Controller__IntegralGain__Out1_1_1
    sldemo_enginewc__Controller__IntegralGain__Constant_1_1
    sldemo_enginewc__Controller__ProportionalGain__In1_1_1
    sldemo_enginewc__Controller__ProportionalGain__Out1_1_1
    sldemo_enginewc__Controller__ProportionalGain__Constant_1_1
    sldemo_enginewc__Controller__Sum__In1_1_1
    sldemo_enginewc__Controller__Sum__In2_1_1
    sldemo_enginewc__Controller__Sum__Out1_1_1
    sldemo_enginewc__Controller__Sum1__In1_1_1
    sldemo_enginewc__Controller__Sum1__In2_1_1
    sldemo_enginewc__Controller__Sum1__Out1_1_1
    sldemo_enginewc__Controller__Switch__In1_1_1
    sldemo_enginewc__Controller__Switch__In2_1_1
    sldemo_enginewc__Controller__Switch__In3_1_1
    sldemo_enginewc__Controller__Switch__Out1_1_1
    sldemo_enginewc__Controller__Switch__Threshold_1_1
    sldemo_enginewc__Controller__limit_output__In1_1_1
    sldemo_enginewc__Controller__limit_output__Out1_1_1
    sldemo_enginewc__Controller__rpm_to_radpers__In1_1_1
    sldemo_enginewc__Controller__rpm_to_radpers__Out1_1_1
    sldemo_enginewc__Controller__rpm_to_radpers__Constant_1_1
  )

  (
    (sldemo_enginewc__Controller__preventswindup sldemo_enginewc__Controller__preventswindup__integrator_input__Out1_1_1 sldemo_enginewc__Controller__preventswindup__controller_output__Out1_1_1 sldemo_enginewc__Controller__preventswindup__enable_integration__In1_1_1)
  )

  (
    (- sldemo_enginewc__Controller__Desired_rpm__Out1_1_1 (mk-record -1 0 0))
    (- sldemo_enginewc__Controller__N__Out1_1_1 (mk-record -1 0 0))
    (- sldemo_enginewc__Controller__IntegralGain__Constant_1_1 (mk-record 0 0 0))
    (- sldemo_enginewc__Controller__ProportionalGain__Constant_1_1 (mk-record 1 0 0))
    (- sldemo_enginewc__Controller__Switch__Threshold_1_1 (mk-record 0 0 0))
    (- sldemo_enginewc__Controller__rpm_to_radpers__Constant_1_1 (mk-record 0 0 0))
    (- sldemo_enginewc__Controller__ThrottleAng.__In1_1_1 (mk-record 0 0 0))

    (- sldemo_enginewc__Controller__Discrete-TimeIntegrator__Out1_1_1 (increment sldemo_enginewc__Controller__Discrete-TimeIntegrator__In1_1_1 0 1))
    (- sldemo_enginewc__Controller__IntegralGain__Out1_1_1 (+ sldemo_enginewc__Controller__IntegralGain__In1_1_1 sldemo_enginewc__Controller__IntegralGain__Constant_1_1))
    (- sldemo_enginewc__Controller__ProportionalGain__Out1_1_1 (+ sldemo_enginewc__Controller__ProportionalGain__In1_1_1 sldemo_enginewc__Controller__ProportionalGain__Constant_1_1))
    (- sldemo_enginewc__Controller__Sum__Out1_1_1 sldemo_enginewc__Controller__Sum__In1_1_1)
    (- sldemo_enginewc__Controller__Sum__In1_1_1 sldemo_enginewc__Controller__Sum__In2_1_1)
    (- sldemo_enginewc__Controller__Sum1__Out1_1_1 sldemo_enginewc__Controller__Sum1__In1_1_1)
    (- sldemo_enginewc__Controller__Sum1__In1_1_1 sldemo_enginewc__Controller__Sum1__In2_1_1)
    (- sldemo_enginewc__Controller__Switch__In1_1_1 sldemo_enginewc__Controller__Switch__In3_1_1)
    (- sldemo_enginewc__Controller__Switch__Out1_1_1 sldemo_enginewc__Controller__Switch__In1_1_1)
    (- sldemo_enginewc__Controller__Switch__Out1_1_1 sldemo_enginewc__Controller__Switch__In3_1_1)
    (- sldemo_enginewc__Controller__limit_output__Out1_1_1 sldemo_enginewc__Controller__limit_output__In1_1_1)
    (- sldemo_enginewc__Controller__rpm_to_radpers__Out1_1_1 (+ sldemo_enginewc__Controller__rpm_to_radpers__In1_1_1 sldemo_enginewc__Controller__rpm_to_radpers__Constant_1_1))
    
    (- sldemo_enginewc__Controller__Discrete-TimeIntegrator__In1_1_1 sldemo_enginewc__Controller__Switch__Out1_1_1)
    (- sldemo_enginewc__Controller__limit_output__In1_1_1 sldemo_enginewc__Controller__Sum1__Out1_1_1)
    (- sldemo_enginewc__Controller__rpm_to_radpers__In1_1_1 sldemo_enginewc__Controller__Desired_rpm__Out1_1_1)
    (- sldemo_enginewc__Controller__preventswindup__controller_output__Out1_1_1 sldemo_enginewc__Controller__limit_output__Out1_1_1)
    (- sldemo_enginewc__Controller__ThrottleAng.__In1_1_1 sldemo_enginewc__Controller__limit_output__Out1_1_1)
    (- sldemo_enginewc__Controller__Sum__In2_1_1 sldemo_enginewc__Controller__N__Out1_1_1)
    (- sldemo_enginewc__Controller__Sum1__In1_1_1 sldemo_enginewc__Controller__ProportionalGain__Out1_1_1)
    (- sldemo_enginewc__Controller__preventswindup__integrator_input__Out1_1_1 sldemo_enginewc__Controller__Sum__Out1_1_1)
    (- sldemo_enginewc__Controller__IntegralGain__In1_1_1 sldemo_enginewc__Controller__Sum__Out1_1_1)
    (- sldemo_enginewc__Controller__ProportionalGain__In1_1_1 sldemo_enginewc__Controller__Sum__Out1_1_1)
    (- sldemo_enginewc__Controller__Sum__In1_1_1 sldemo_enginewc__Controller__rpm_to_radpers__Out1_1_1)
    (- sldemo_enginewc__Controller__Sum1__In2_1_1 sldemo_enginewc__Controller__Discrete-TimeIntegrator__Out1_1_1)
    (- sldemo_enginewc__Controller__Switch__In3_1_1 sldemo_enginewc__Controller__Constant1__Out1_1_1)
    (- sldemo_enginewc__Controller__Switch__In2_1_1 sldemo_enginewc__Controller__preventswindup__enable_integration__In1_1_1)
    (- sldemo_enginewc__Controller__Switch__In1_1_1 sldemo_enginewc__Controller__IntegralGain__Out1_1_1)
  )
)