2 #include "boost/bind/bind.hpp" 8 #define isnan(x) _isnan(x) 9 #define isinf(x) (!_finite(x)) 10 #define fpu_error(x) (isinf(x) || isnan(x)) 20 struct ad_usr :
public parser_t::unknown_symbol_resolver
22 typedef parser_t::unknown_symbol_resolver
usr_t;
40 nodeId = p->m_pNodeManager->getNewNodeId(p->m_pParent, UaString(unknown_symbol.c_str()));
41 node = p->m_pNodeManager->findNode(nodeId);
43 nodeId = p->m_pNodeManager->getNewNodeId(NULL, UaString(unknown_symbol.c_str()));
44 node = p->m_pNodeManager->findNode(nodeId);
52 result = pDV(unknown_symbol, static_cast<UaControlVariable*>(node));
55 error_message =
"Failed to create variable...";
59 error_message =
"Indeterminable symbol type.";
64 std::function<bool(const string&, UaControlVariable *)>
pDV;
74 UaDataValue dataValue;
78 m_pParent =
static_cast<const OpcUa::BaseObjectType*
>(parent);
82 string ssFormul = citem.
value();
89 sdt = UaDateTime::now();
93 dataValue.setDataValue(val, OpcUa_False, OpcUa_BadUnexpectedError, sdt, sdt);
96 dataValue.setDataValue(val, OpcUa_False, OpcUa_True, sdt, sdt);
108 for (UaControlVariableMap::const_iterator vit = cvs.begin(); vit != cvs.end(); vit++)
110 string nn = (*vit).first;
119 ssFormul = citem.
when().get();
124 for (UaControlVariableMap::const_iterator vit = cvs.begin(); vit != cvs.end(); vit++)
126 string nn = (*vit).first;
135 ssFormul = citem.
status().get();
140 for (UaControlVariableMap::const_iterator vit = cvs.begin(); vit != cvs.end(); vit++)
142 string nn = (*vit).first;
153 setValueHandling(UaVariable_Value_CacheIsSource);
161 std::vector<std::string> variable_list;
209 cout <<
"Error value: " <<
parser_d.
error().c_str()<<
" " << this->browseName().toString().toUtf8() <<
" " <<
m_sFormul << endl;
256 UaDataValue dataValue;
258 UaStatus Status = OpcUa_Good;
263 OpcUa_StatusCode val_status;
264 OpcUa_StatusCode status_status;
272 if (val_status != OpcUa_Good) {
273 sDiag =
"Sensor is bad";
274 Status.setStatus(val_status, sDiag);
284 if (status_status != OpcUa_Good) {
285 sDiag =
"Status sensor is bad";
286 Status.setStatus(status_status, sDiag);
293 sDiag =
"Condition is false";
294 Status.setStatus(OpcUa_Bad, sDiag);
299 Status.setStatus(OpcUa_Good, sDiag);
306 Status.setStatus(OpcUa_Good, sDiag);
313 sDiag =
"Calculation Error";
314 Status.setStatus(OpcUa_BadUnexpectedError,sDiag);
317 udt = dValue.sourceTimestamp();
318 sdt = UaDateTime::now();
322 dataValue.setDataValue(val, OpcUa_False, OpcUa_BadUnexpectedError, udt, sdt);
325 dataValue.setDataValue(val, OpcUa_False, Status.code(), udt, sdt);
327 Status =
setValue(pSession, dataValue, checkAccessLevel);
333 UaDataValue dataValue;
335 UaStatus Status = OpcUa_Good;