TONOperator Class
(Automation::TONOperator)The TONOperator is a on delay timer, or TON timer as referenced by IEC 61131-3 in PLC. More...
Header: | #include <TONOperator.h> |
Inherits: | CDPOperator<bool> |
Public Functions
TONOperator(const CDPPropertyBase &in) |
Reimplemented Public Functions
virtual void | Activate() override |
virtual void | Configure(XMLPrimitive *operatorXML) override |
virtual unsigned int | Process() override |
- 18 public functions inherited from CDPOperator
- 17 public functions inherited from CDPOperatorBase
- 46 public functions inherited from CDPBaseObject
- 26 public functions inherited from CDP::StudioAPI::CDPNode
- 22 public functions inherited from CDP::StudioAPI::ICDPNode
Additional Inherited Members
- 1 public variable inherited from CDPOperatorBase
- 1 static public member inherited from CDPBaseObject
- 1 protected function inherited from CDP::StudioAPI::CDPNode
- 8 protected variables inherited from CDPOperator
- 5 protected variables inherited from CDPOperatorBase
- 11 protected variables inherited from CDPBaseObject
Detailed Description
The TONOperator is a on delay timer, or TON timer as referenced by IEC 61131-3 in PLC.
The TONOperator output (Q) is set to true
after the input (In) is set to true
, but only after the preset time delay (PT) has been elapsed.
Arguments
Name | Description |
---|---|
In | The default input value. |
Q | The default output value. |
PT | Preset Time (delay to wait in seconds before output will be set to true ) |
ET | Elapsed Time (time elapsed in seconds since input was set to true ) |
When operator is used inside a signal its default input is automatically tied to signal's InternalValue or previous operator's output. Its default output is automatically tied to next operator's input or to signal's Value. See also CDP Operator Usage In CDP Signals.
Note: This operator can't be used in I/O Servers / CDPChannels because it requires to be run with a constant period. I/O Servers can't always guarantee periodic running since they may be in Offline state, or they can send/receive on change.
Example
Below are the example plots for TONOperator input (In, cyan), output (Q, orange) and corresponding elapsed time (ET, yellow).
Actual Processing Code of the TONOperator
unsigned int TONOperator<bool>::Process() { if (!m_PT || !m_ET) return STATUS_ERROR; if ((bool)*m_in) { const bool timer_started = ((double)*m_ET > 0.0); if (!m_previous_in_value || timer_started) { if ((double)*m_ET < (double)*m_PT) { *m_ET = (double)*m_ET + GetOperatorPeriod(); *m_Q = false; } else *m_Q = true; } else *m_Q = true; } else { *m_ET = 0; *m_Q = false; } m_previous_in_value = (bool)*m_in; return STATUS_OK; }
See also Argument.
Member Function Documentation
TONOperator::TONOperator(const CDPPropertyBase &in)
Default constructs an instance of TONOperator.
[override virtual]
void TONOperator::Activate()
[override virtual]
void TONOperator::Configure(XMLPrimitive *operatorXML)
[override virtual]
unsigned int TONOperator::Process()
Get started with CDP Studio today
Let us help you take your great ideas and turn them into the products your customer will love.