TOFOperator Class
(Automation::TOFOperator)The TOFOperator is a off delay timer, or TOF timer as referenced by IEC 61131-3 in PLC. More...
Header: | #include <TOFOperator.h> |
Inherits: | CDPOperator<bool> |
Public Functions
TOFOperator(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 TOFOperator is a off delay timer, or TOF timer as referenced by IEC 61131-3 in PLC.
The TOFOperator output (Q) is set to false after the input (In) is set to false, 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 false) |
ET | Elapsed Time (time elapsed in seconds since input was set to false) |
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 TOFOperator input (In, cyan), output (Q, orange) and corresponding elapsed time (ET, yellow).
Actual Processing Code of the TOFOperator
unsigned int TOFOperator<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 = true; } else *m_Q = false; } else *m_Q = false; } else { *m_ET = 0; *m_Q = true; } m_previous_in_value = (bool)*m_in; return STATUS_OK; }
See also Argument.
Member Function Documentation
TOFOperator::TOFOperator(const CDPPropertyBase &in)
Default constructs an instance of TOFOperator.
[override virtual]
void TOFOperator::Activate()
[override virtual]
void TOFOperator::Configure(XMLPrimitive *operatorXML)
[override virtual]
unsigned int TOFOperator::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.