<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html class="client-nojs" dir="ltr" lang="en"> <head> <meta charset="UTF-8" /> <title>Documents/FAQ - OpenSCADAWiki</title> <meta content="MediaWiki 1.26.4" name="generator" /> <link href="https://www.gnu.org/copyleft/fdl.html" rel="copyright" /> <link href="files/doc.css" rel="stylesheet" /></head> <body><div class="floatright"><a href="index.html"><img alt="OpenSCADA" src="../en/files/index.png" /></a></div><div id="mw_header"> <div class="mw-indicators"> </div> <h1 id="firstHeading" lang="en">Documents/FAQ</h1> </div><div class="mw-content-ltr" dir="ltr" id="mw-content-text" lang="en"><div class="mw-pt-languages" dir="ltr" lang="en"><div class="mw-pt-languages-list autonym"><span class="mw-pt-languages-ui mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete">English</span> • ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../ru/FAQ.html" title="Документы/ЧаÑто задаваемые вопроÑÑ‹ (91% translated)">mRussian</a> • ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../uk/FAQ.html" title="Документи/ЧаÑто задавані Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ (100% translated)">УкраїнÑька</a></div></div> <div class="toc" id="toc"><div id="toctitle"><h2>Contents</h2></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#Political_and_conceptual"><span class="tocnumber">1</span> <span class="toctext">Political and conceptual</span></a></li> <li class="toclevel-1 tocsection-2"><a href="#Architectural.2C_using_and_short_.22How_to_....22"><span class="tocnumber">2</span> <span class="toctext">Architectural, using and short "How to ..."</span></a> <ul> <li class="toclevel-2 tocsection-3"><a href="#OpenSCADA_core"><span class="tocnumber">2.1</span> <span class="toctext"><span>OpenSCADA core</span></span></a></li> <li class="toclevel-2 tocsection-4"><a href="#DB"><span class="tocnumber">2.2</span> <span class="toctext">DB</span></a></li> <li class="toclevel-2 tocsection-5"><a href="#Physical_and_logical-virtual_data_acquisition"><span class="tocnumber">2.3</span> <span class="toctext">Physical and logical-virtual data acquisition</span></a></li> <li class="toclevel-2 tocsection-6"><a href="#Archiving-history_and_Alarms"><span class="tocnumber">2.4</span> <span class="toctext">Archiving-history and Alarms</span></a></li> <li class="toclevel-2 tocsection-7"><a href="#End-user_interface"><span class="tocnumber">2.5</span> <span class="toctext">End-user interface</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-8"><a href="#Problems_.28actual.2C_environmental.2C_fixed.29"><span class="tocnumber">3</span> <span class="toctext"><span>Problems</span> (actual, environmental, fixed)</span></a></li> </ul> </div> <h2><span class="mw-headline" id="Political_and_conceptual"><span class="mw-headline-number">1</span> Political and conceptual</span></h2> <p><b>Q:</b> OpenSCADA is unclear and hard to understand one. Why is this, and are available the manuals quickstart and advanced "How to ..."?<br /> <b>Re:</b> OpenSCADA has described in detail, maximum structured and formalized. But the unclarity and the complexity impression is expected. Based on the project objectives, the program is extremely modular, which means that there are a lot of configuration and usage options. On the one hand, it complicates perception, but on the other - it increases the chances of "coverage" of your particular task. In addition, you must always remember that the complex and incomprehensible are all the unknown, which is really not necessarily so. And this psychological barrier must be overcome when studying anything new. The quick start manual is available <a href="Quick_start.html" title="Special:MyLanguage/Documents/Quick start">here</a> and the advanced "How to ..." also <a href="How_to.html" title="Special:MyLanguage/Documents/How to">here</a>. </p><p><b>Q:</b> Does OpenSCADA work under QNX, FreeBSD, MS Windows, ...?<br /> <b>Re:</b> OpenSCADA is developed in accordance with the principles of multiplatformity, based on the recognized world standard of POSIX and multiplatform libraries. However, due to resource constraints and the interests of the author and developers, the project is being run only on Linux. Further adaptation to other platforms is scheduled after the release of version 1.0 and at this time OpenSCADA is running on the hardware platforms x86, x86_64, ARM and the software Android platform. Support for a platform will depend on the community's interest and the availability of a separate hardware and software platform maintainer. </p><p><b>Q:</b> Is it possible to operate OpenSCADA by means of a usual WEB-browser?<br /> <b>Re:</b> Yes, it is possible. For configuration of OpenSCADA from a WEB-browser there were created the modules <a href="Modules/WebCfg.html" title="Special:MyLanguage/Modules/WebCfg">UI.WebCfg</a> and <a href="Modules/WebCfgD.html" title="Special:MyLanguage/Modules/WebCfgD">UI.WebCfgD</a>; for the operational interfaces execution there was created the module <a href="Modules/WebVision.html" title="Special:MyLanguage/Modules/WebVision">UI.WebVision</a> and for users HTML pages creation there was created the module <a href="Modules/WebUser.html" title="Special:MyLanguage/Modules/WebUser">UI.WebUser</a>. Which all are called by the module <a href="Modules/HTTP.html" title="Special:MyLanguage/Modules/HTTP">Protocol.HTTP</a> of the subsystem "Transport Protocols". </p><p><b>Q:</b> Does the program support adding/removing/updating of modules while they are working (without a stop)?<br /> <b>Re:</b> This feature is incorporated in the program and provided by the subsystem "Modules scheduler". In fact, updating modules can occur automatically after the detection of a new version of the module. </p> <h2><span class="mw-headline" id="Architectural.2C_using_and_short_.22How_to_....22"><span class="mw-headline-number">2</span> Architectural, using and short "How to ..."</span></h2> <h3><span class="mw-headline" id="OpenSCADA_core"><span class="mw-headline-number">2.1</span> <span id="UsingCore" title="#UsingCore">OpenSCADA core</span></span></h3> <p><b>Q:</b> How is multilingual support provided? Can I perform localisation in my native language?<br /> <b>Re:</b> Multilingual support is provided on the basis of the standard of internationalisation I18n. And files of internationalisation of the modules are separated from a file of internationalisation of the program core, what provides high-grade support of independent distribution and development of the modules to OpenSCADA. Translation of the program in whole and modules in particular can be performed regardless of the availability of their source texts. For translation it is enough to receive *.po or *.pot files of the necessary component and to make translation of messages in the files in usual text editors, or some specialised program, from English to the necessary language. The actual files you can get from <a class="external text" href="http://oscada.org/svn/trunk/OpenSCADA" rel="nofollow noreferrer noopener" target="_blank">the source texts repository of the project</a> in the program core folder "src/po" and folders "src/moduls/{subsys}/{module}/po" of the modules, and at the finish propose the results of the new translation for their including to the source texts repository of the project, writing to <a class="external text" href="http://oscada.org/en/forum/topics/project" rel="nofollow noreferrer noopener" target="_blank">the project forum</a> or <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">the project author and main developer</a> directly. PO-files are not used by the program directly, so you can use the command <span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">msgfmt -vo [openscada|oscd_{ModId}].mo {lang}.po</span> to quickly check the translation result and correct formatting errors, then place the obtained MO-file <b>[openscada|oscd_{ModId}].mo</b> to the folder "/usr/share/locale/{lang}/LC_MESSAGES" of the actual OpenSCADA installation for the language <i>lang</i>. </p><p><b>Q:</b> Can I create my own module for any subsystem?<br /> <b>Re:</b> Yes, certainly. For the help in this task <a href="API.html" title="Special:MyLanguage/Documents/API">the document</a> was created, where the architecture of the program core is practically completely described, its functions and API of the modules of various subsystems. In addition, <a href="How_to_Create_module.html" title="Special:MyLanguage/Documents/How to/Create module">a manual of the modules of OpenSCADA creation</a> was created and for each subsystem created a module template for you can quickly create a new module. </p><p><b>Q:</b> How is the sharing of access organized?<br /> <b>Re:</b> A security scheme similar to the UNIX OS is used. Thus, the required components are the owner, members of the group and have access triad "rwxrwxrwx". In addition, this security mechanism is integrated in the <a href="API.html#CntrNode" title="Special:MyLanguage/Documents/API">OpenSCADA Control Interface</a>, which in turn infiltrates the entire program. </p><p><b>Q:</b> In which way in OpenSCADA possible to realize inter-modular connections?<br /> <b>Re:</b> Inter-modular connections can be of the following types: </p> <ul><li> The standard interface of access — is made by means of the virtual interface of the modular subsystems.</li> <li> The expanded interface of access — provides export of functions of the external interface by means of the exporter module, and the subsequent connection of the importer module to these functions by means of the functions "<a href="API.html#TModule" title="Special:MyLanguage/Documents/API">TModule::modFunc()</a>".</li> <li> The user functions — any component of the program can register its own user functions ("<a href="API.html#TCntrNode" title="Special:MyLanguage/Documents/API">TCntrNode::objFuncCall()</a>"), which can be used further in an environment of the user programming of OpenSCADA.</li></ul> <p><b>Q:</b> How to build OpenSCADA from the source code?<br /> <b>Re:</b> Compilation of any software project from the source code, in the system language like C/C++ and the complexity above the average level, is a non-trivial task, especially for specific environments and environments for which adaptation has not yet been completed. To do this, you need the appropriate training and previous compilation experience. If you have the opportunity to get OpenSCADA assembled and in the form of ready-made packages for your environment, be sure to use it! If there are no packages in your environment or you deliberately want to build the program from the source to an adapted environment then use the <a href="How_to_Build_from_source.html" title="Special:MyLanguage/Documents/How to/Build from source">manual for build from source</a>. Adapting to assembly and work in other environments is a much more non-trivial task, especially for those very far away from POSIX or the concept of interplatform compatibility in general, it is a separate sub-project of OpenSCADA and involves a long process such as <a class="external" href="http://oscada.org/wiki/Special:MyLanguage/Sub-projects/Adaption_to_Android" title="Special:MyLanguage/Sub-projects/Adaption to Android">adaptation to Android</a>, so you do not need to confuse it complexity with the simple compilation under an adapted environment! </p> <h3><span class="mw-headline" id="DB"><span class="mw-headline-number">2.2</span> DB</span></h3> <p><b>Q:</b> Can I get data from DB directly?<br /> <b>Re:</b> Yes, you can. For data bases (DB) that support SQL you can use <a href="User_API.html#SYS.BD" title="Special:MyLanguage/Documents/User API">the function SQLReq()</a> of the related DB. Generically and for not SQL DBs you can use the access API to the DB layer of OpenSCADA in functions <a href="User_API.html#SYS.BD" title="Special:MyLanguage/Documents/User API">fieldStruct(), fieldSeek(), fieldGet(), fieldSet(), fieldDel()</a> of the table of the DB. </p> <h3><span class="mw-headline" id="Physical_and_logical-virtual_data_acquisition"><span class="mw-headline-number">2.3</span> Physical and logical-virtual data acquisition</span></h3> <p><b>Q:</b> Where and how to perform additional logical processing of the attributes of parameters, including logical linking in one object?<br /> <b>Re:</b> Any mathematical processing of the parameter attributes can be performed in the computing objects of the controller (modules of the "Data acquisition" subsystem), for example, in the block controller (<a href="Modules/BlockCalc.html" title="Special:MyLanguage/Modules/BlockCalc">DAQ.BlockCalc</a>) and the object Controller based on the Java-like language (<a href="Modules/JavaLikeCalc.html" title="Special:MyLanguage/Modules/JavaLikeCalc">DAQ.JavaLikeCalc</a>). In addition, the processing can be done at the logical level of the parameters (<a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">DAQ.LogicLev</a>) in the subsystem "Data acquisition" modules specially designed for this (which work according to the parameter templates) or which contain the built-in realization of the mechanism of template parameters. That is, the user can form parameters with the required structure and algorithm of post-processing, forming logically related objects. The processing part can be executed directly at visualization (<a href="Modules/VCAEngine.html" title="Special:MyLanguage/Modules/VCAEngine">UI.VCAEngine</a>). For data acquisition as a whole, see <a href="DAQ.html" title="Special:MyLanguage/Documents/DAQ">the document</a>. </p><p><b>Q:</b> Where are the scales of parameters and different signaling settings checked?<br /> <b>Re:</b> Checking of scales and settings can be implemented by the controller itself, with signaling through the appropriate parameter attributes, as well as at the logical level of parameters, for "raw" data sources. In addition, this analysis can be done directly in the visual control area (VCA). </p><p><b>Q:</b> Can I get (read and write) the value of the attribute of the data acquisition parameter, for example, from the UI procedure?<br /> <b>Re:</b> The main interface for sharing the values of the data acquisition parameters with the elements or attributes of the corresponding part of OpenSCADA is the static link that is fastest. However, the internal language and the dynamic object model of the nodes of OpenSCADA allow you to dynamically access the objects of the attributes of the data acquisition parameters, for example, you can get the value of the attribute by <a href="User_API.html#SYS.DAQ" title="Special:MyLanguage/Documents/User API">the function get()</a>. </p><p><b>Q:</b> How can I save-restore the modified data at the logical level?<br /> <b>Re:</b> Indeed, it may sometimes be necessary to save and then recover, preferably at restart, some of the modified dynamic data, such as equipment mileage meters. In general, the processing of this type of data and equipment needs to be done on <a class="external" href="http://oscada.org/wiki/Special:MyLanguage/Sub-projects/Logical_level" title="Special:MyLanguage/Sub-projects/Logical level">the logical level</a> of the subsystem "Data acquisition", but it can be implemented in many ways, which involves storing data in a certain repository and further restoration of them, however, the more well-known methods are: </p> <ul><li> Periodic, or when stop, to save the context of the template parameters by requesting the OpenSCADA user API via <a href="User_API.html#SYS" title="Special:MyLanguage/Documents/User API">cntrReq()</a>, where "force" for force saving not modified parameters:</li></ul> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nx">SYS</span><span class="p">.</span><span class="nx">cntrReq</span><span class="p">(</span><span class="nx">SYS</span><span class="p">.</span><span class="nx">XMLNode</span><span class="p">(</span><span class="s2">"save"</span><span class="p">).</span><span class="nx">setAttr</span><span class="p">(</span><span class="s2">"path"</span><span class="p">,</span><span class="k">this</span><span class="p">.</span><span class="nx">nodePath</span><span class="p">()</span><span class="o">+</span><span class="s2">"/%2fobj"</span><span class="p">).</span><span class="nx">setAttr</span><span class="p">(</span><span class="s2">"force"</span><span class="p">,</span><span class="s2">"1"</span><span class="p">));</span> </pre></div> <ul><li> If the attribute of the template with the counter is archived then at the start of the parameter you can get the last value from this archive, for example, as follows:</li></ul> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="k">if</span><span class="p">(</span><span class="nx">f_start</span><span class="p">)</span> <span class="nx">prevArchRestore</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span> <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">prevArchRestore</span> <span class="o">&&</span> <span class="p">(</span><span class="nx">archEnd</span><span class="o">=</span><span class="k">this</span><span class="p">.</span><span class="nx">cntr</span><span class="p">.</span><span class="nx">arch</span><span class="p">().</span><span class="nx">end</span><span class="p">(</span><span class="s2">"FSArch.1s"</span><span class="p">)))</span> <span class="p">{</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">messInfo</span><span class="p">(</span><span class="s2">"testArch"</span><span class="p">,</span> <span class="s2">"val="</span><span class="o">+</span><span class="k">this</span><span class="p">.</span><span class="nx">cntr</span><span class="p">.</span><span class="nx">arch</span><span class="p">().</span><span class="nx">getVal</span><span class="p">(</span><span class="nx">archEnd</span><span class="p">)</span><span class="o">+</span><span class="s2">"; "</span> <span class="s2">"val1="</span><span class="o">+</span><span class="k">this</span><span class="p">.</span><span class="nx">cntr</span><span class="p">.</span><span class="nx">arch</span><span class="p">().</span><span class="nx">getVal</span><span class="p">(</span><span class="nx">archEnd</span><span class="p">,</span><span class="kc">false</span><span class="p">,</span><span class="s2">"FSArch.1s"</span><span class="p">)</span><span class="o">+</span><span class="s2">"; "</span> <span class="s2">"val2="</span><span class="o">+</span><span class="k">this</span><span class="p">.</span><span class="nx">cntr</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">archEnd</span><span class="o">/</span><span class="mi">1000000</span><span class="p">,</span><span class="nx">archEnd</span><span class="o">%</span><span class="mi">1000000</span><span class="p">));</span> <span class="nx">cntr</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">cntr</span><span class="p">.</span><span class="nx">arch</span><span class="p">().</span><span class="nx">getVal</span><span class="p">(</span><span class="nx">archEnd</span><span class="p">);</span> <span class="nx">prevArchRestore</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span> <span class="p">}</span> </pre></div> <ul><li> Create a custom database table and write/read this data directly into this table through SQL-queries by <a href="User_API.html#DB" title="Special:MyLanguage/Documents/User API">SQLReq()</a>.</li></ul> <p><b>Q:</b> Is it possible, and how is the reservation of parameters implemented?<br /> <b>Re:</b> Like any post-processing, parameter reservation is performed by <a href="DAQ.html#LogicLev" title="Special:MyLanguage/Documents/DAQ">the logical level</a> by creating a parameter template that implements the ability to describe in a single parameter several typical sensors that will have their own attributes of values. The resultant value of the sensors will fit into the generalizing value attribute. </p> <h3><span class="mw-headline" id="Archiving-history_and_Alarms"><span class="mw-headline-number">2.4</span> Archiving-history and Alarms</span></h3> <p><b>Q:</b> How is the value of archiving cycles determined?<br /> <b>Re:</b> Archiving is an independent task from the controllers and their parameters, and it is executed by the modular subsystem "<a href="Program_manual.html#CfgArch" title="Special:MyLanguage/Documents/Program manual">Archives-History</a>". What and how to archive is determined personally for each attribute parameter. There are two archiving modes: passive and active. Passive archiving is determined by the cyclicity of obtaining data by the controller — the cycle of the data collection module. Active archiving is provided by the task of the archiving subsystem and regardless of the cycle and method of the data acquisition by the DAQ module. </p><p><b>Q:</b> In the process of development and debugging, I still have inappropriate active alarms. What to do with them?<br /> <b>Re:</b> Thus, given that alarms in the table of active alarms often fall-formed by user procedures, their "sticking" there may occur. Respectively, you can just restart the OpenSCADA project or remove-withdraw such alarms in <a class="external" href="http://oscada.org/wiki/File:QTCfg_subsys_arch_mess.png" title="File:QTCfg subsys arch mess.png">the main tab "Messages" of the subsystem page "Archives-History"</a>: select the level of alarms "Information (1[X]), ALARMS", set the size to 0, then in the table of messages should be all current alarms, some of which can be removed through the context menu, and all visible by the button below the table; for a large group of alarms, but not all, you can set their clear characteristics of time, level and category to see in the table, and accordingly "remove" the group all the necessary. </p><p><b>Q:</b> Is it possible to work with streaming data?<br /> <b>Re:</b> Streaming and packet acquisition work in conjunction with the archive and its buffer. That is, the source, having received a packet/data block, directly places it in the parameter attribute archive, or receives the package from the buffer, in the stream output. </p><p><b>Q:</b> Can I export archived data (history) to a different format, say — CSV, Excel?<br /> <b>Re:</b> In general, you can export archived data, and here are three features, that is: location, formats and export mode. Since the end user for whom this data is being formed is the user of the end visual interface — operator, the built-in export function is provided by <a href="Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">these interfaces</a> for the data primitives of <a href="Modules/VCAEngine.html#Diagram" title="Special:MyLanguage/Modules/VCAEngine">the diagram</a> and <a href="Modules/VCAEngine.html#Document" title="Special:MyLanguage/Modules/VCAEngine">the document</a> where you can export to CSV, image file and HTML. With regard to other data formats, especially closed and one-platform formats, such as Excel, then their export can be implemented by a <a href="User_API.html" title="Special:MyLanguage/Documents/User API">user procedure</a> through the common user interface of the visualization as a direct formation, if the format is simple, and the call of the external transformation utility, if available. Exports generally can be in two modes: interactive and flowing. It is the interactive mode embedded in the user interface and it involves determining the range and quality of data (the primitives data) as the limiting factors of the advisable execution time of this operation. The flowing mode provides a background, possibly even with the main processes, exporting both current data and local archive data and is often used to export to a database table with the desired structure. Exporting from the developer environment, like the flowing mode, do not have embedded functions, except for experimental ones such as WAV exports. This can, if necessary, be implemented by <a href="Libs_Service_procedures.html" title="Special:MyLanguage/Libs/Service procedures">service procedure</a> or part of the code of the main process for the flowing mode. </p> <h3><span class="mw-headline" id="End-user_interface"><span class="mw-headline-number">2.5</span> End-user interface</span></h3> <p><b>Q:</b> How is the speech signalling carried out and what is needed for its work?<br /> <b>Re:</b> The speech signalling, as well as other methods of the signalling, is an element of the subsystem "User interfaces" and organised in the modules of the visual control area (VCA), and exactly in the VCA engine <a href="Modules/VCAEngine.html" title="Special:MyLanguage/Modules/VCAEngine">UI.VCAEngine</a> and visualisers <a href="Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">UI.Vision</a>, <a href="Modules/WebVision.html" title="Special:MyLanguage/Modules/WebVision">UI.WebVision</a>. Usually, for synthesis the language you need a synthesizer with the support of the desired language, like to <b>RHVoice</b>, <b>festival</b>, <b>espeak</b>. For playing the synthesised sound you need no specific tools in the typical environments. But for specific environments you need the <b>play</b> program that is typically contained in the <b>sox</b> package, and for precise definition of the dependencies see <a href="Modules/VCAEngine.html#Alarms" title="Special:MyLanguage/Modules/VCAEngine">the relevant external notification methods</a>. </p><p><b>Q:</b> How can I rapid and correct change aspect ratio of the screen of the user visual interface to different one, for example to 16:9?<br /> <b>Re:</b> Yes, the main user visual interface of OpenSCADA based on a conception of signal objects, and its <a href="Libs_Main_graphical_elements.html#RootPgSo" title="Special:MyLanguage/Libs/Main graphical elements">root page</a>, means and was designed to the aspect ration 4:3. For generic VCA projects there have planed implementing for proper styles of the different aspect rations but the mnemonic schemes should be left untouched. Then for manually, rapid and correct changing the aspect ratio to 16:9 you must now do following, in your VCA project tree: </p> <ul><li> Set, or multiply to original one, the attribute "Geometry: x scale" (geomX) to value (16/9)/(4/3) = 1.333, for: <ul><li> <a href="Libs_Main_graphical_elements.html#RootPgSo" title="Special:MyLanguage/Libs/Main graphical elements">the root page</a>;</li> <li> all template pages like "<a href="Libs_Main_graphical_elements.html#grpGraph" title="Special:MyLanguage/Libs/Main graphical elements">Graphics group</a>", only in the page used as the template;</li> <li> all pages of the documents and control panels, individually.</li></ul></li> <li> Due pages of the mnemonic schemes rarely allow for changing the original aspect ratio by using true figures like to circles and squares there we must develop the cadres initially in the size [900*1.333 x 550] = [1199 x 550].</li></ul> <p><b>Q:</b> How can I connect the visualiser UI.Vision to a remote visualisation server or PLC with such function?<br /> <b>Re:</b> Yes, you are allowed for creation of visualiser servers and PLCs based on the module <a href="Modules/VCAEngine.html" title="Special:MyLanguage/Modules/VCAEngine">UI.VCAEngine</a> with all VCA-data of the user visualisation projects on them and obliviously with OpenSCADA installed there. Next you are allowed for a connection to the remote visualisation servers or PLCs by the module <a href="Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">UI.Vision</a> for locally developing and visualisation of the remote user visualisation projects. The detailed instruction you can get in the <a href="Quick_start.html" title="Special:MyLanguage/Documents/Quick start">Quick Start manual's</a> part "<a href="Quick_start.html#RemConUse" title="Special:MyLanguage/Documents/Quick start">Connecting and using remote and background configurations</a>" and here you have get a short instruction. This short instruction also usable to get remote control of the visualiser servers and PLCs. To do that you must follow next procedure on a client station with the module UI.Vision and any configuration include pure-empty one: </p> <ul><li> Create a connection to the visualiser server or PLC as an OpenSCADA station on <a class="external" href="http://oscada.org/wiki/File:QTCfg_subsys_tr_sub.png" title="File:QTCfg subsys tr sub.png">the transports page</a> of any OpenSCADA configurator, in the "System" mode. If you will set also the "User" mode you will be allowed to control the remote station from the configurator and user, after the navigation tree updating.</li> <li> Select on <a class="external" href="http://oscada.org/wiki/File:Vision_cfg.png" title="File:Vision cfg.png">the visualiser page</a> of any OpenSCADA configurator: a new connection, start user, user's password of the remote station and a project or projects for their automatic execution, else you will get in the developing mode. Next starting of the module UI.Vision should cause establishing of the remote connection to the visualiser server or PLC with their projects developing or execution. For querying the station together user and password at the module generic call you can select the connection-station "<Select>", useful at presence of many control stations and for opening several of them simultaneously.</li></ul> <p><b>Q:</b> How can I start OpenSCADA automatically with a proper user operation interface — a project of supervisory control?<br /> <b>Re:</b> Of course, after the developing process finish you must ensure the program starting together with the operational system starting and in the full-screen execution of the result project of the user operation interface. For these you must follow next procedure: </p> <ul><li> Ensure system specific measures for same OpenSCADA starting with your project. There you must pre-create or find a desktop icon of your project of OpenSCADA from <a href="Program_manual.html#Projects" title="Special:MyLanguage/Documents/Program manual">the manager of projects OpenSCADA</a> and copy or place its to folder or list of the auto-started programs of your desktop environment. See to documentation of the desktop environment for the details.</li> <li> Select the module <a href="Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">UI.Vision</a> starting with OpenSCADA generic starting in <a href="Modules/QTStarter.html#Cfg" title="Special:MyLanguage/Modules/QTStarter">the "Qt modules for startup" field of the module UI.QTStarter</a> from any OpenSCADA configurator.</li> <li> Select your project of VCA to automatic its execution in <a href="Modules/Vision.html#Cfg" title="Special:MyLanguage/Modules/Vision">the field "Run projects list" of the module UI.Vision</a> from any OpenSCADA configurator. Here we also recommend to set a user different from system ones for projects execution, but in the permissions for the project of course.</li></ul> <p><b>Q:</b> May I adjust my project for some specific branding?<br /> <b>Re:</b> Most visible branding by the end user is placed in <a href="Modules/VCAEngine.html" title="Special:MyLanguage/Modules/VCAEngine">the end user VCA interface</a> but you may want also in some adjustment the splash image, icons and so on: </p> <ul><li> icon in the right upper of the frame "<a href="Libs_Main_graphical_elements.html#RootPgSo" title="Special:MyLanguage/Libs/Main graphical elements">Root page (SO)</a>" — just upload your image in <a class="external" href="http://oscada.org/wiki/File:Vision_wlbpg_mime.png" title="File:Vision wlbpg mime.png">the project resources</a> as "logo", in the preferred size <b>110x55</b> pixels (2x1);</li> <li> icon of the project window-page in it runtime — just upload your <a class="external" href="http://oscada.org/wiki/File:Vision_wlbpg.png" title="File:Vision wlbpg.png">project icon</a>, in the preferred size <b>128x128</b> pixels or clean up that for use the common project icon image (see below) which can be translated — dependently from current interface language;</li> <li> the project <a class="external" href="http://oscada.org/wiki/File:QTStarter_splash.png" title="File:QTStarter splash.png">starting splash image</a> — prepare a representative image in the preferred size <b>600x300</b> and place it to <a href="Program_manual.html#Config" title="Special:MyLanguage/Documents/Program manual">the project's folder of icons</a> with the name "<b>{ProjectID}_splash.[png|gif|jpg|jpeg]</b>" for both start and exit splash and "<b>{ProjectID}_splash_exit.[png|gif|jpg|jpeg]</b>" for the exit splash;</li> <li> the project common icon image for <a class="external" href="http://oscada.org/wiki/File:QTCfg_listelem.png" title="File:QTCfg listelem.png">the navigation tree of the OpenSCADA configurators</a> — prepare a representative image in the preferred size <b>128x128</b> and place it to <a href="Program_manual.html#Config" title="Special:MyLanguage/Documents/Program manual">the project's folder of icons</a> with the name "<b>{ProjectName}.[png|gif|jpg|jpeg]</b>", where <i>ProjectName</i> can be whether the language specific one or on the Basic Language for whole cases or even both if your project is <a href="Create_multi_language_project.html" title="Special:MyLanguage/Documents/How to/Create multi language project">the multilanguage one</a>.</li></ul> <p><b>Q:</b> The user operation interface starts in full-screen and I unable to close it for gain access to the system desktop environment!<br /> <b>Re:</b> Of course, OpenSCADA protects the control system from closing and unprivileged access to the system desktop environment. Then, for gain access to the system desktop environment, you must be a privileged user in the user operation interface, change the interface user to your account and in the appeared global menu do needed one: disable the full-screen mode, close or quit the program. If the global menu does not appear then you have a problem of the desktop environment, such as Unity, which "tears off" the window menu; then turn off this function of the environment beforehand! </p><p><b>Q:</b> I can easily connect the analog signals for the trends building by the primitive <a href="Modules/VCAEngine.html#Diagram" title="Special:MyLanguage/Modules/VCAEngine">Diagram</a>, but the discrete-logical signals using here is not such obvious...<br /> <b>Re:</b> Yes, the primitive <a href="Modules/VCAEngine.html#Diagram" title="Special:MyLanguage/Modules/VCAEngine">Diagram</a> is designed mostly for analog signals, but you can also use here the discrete-logical signals as analog ones with the two states [0,1], so they natural scale is [0...1] and if you connect one signal in the automatic-natural scale, you will get it on whole screen with the filled bar for TRUE states. But that is not useful enough and you cannot combine it with other analog or discrete-logical signals even in translucent color, so you must specify the scale manually for positioning the discrete-logical signal tape in the needed screen part. Some examples of the scales: </p> <ul><li> <b>[0...5]</b> — you divide the screen vertically on five tapes and display the signal in the bottom;</li> <li> <b>[-4...1]</b> — you also divide the screen vertically on five tapes and display the signal in the top;</li> <li> <b>[-2...3]</b> — you also divide the screen vertically on five tapes and display the signal in the centre;</li> <li> <b>[0...10]</b> — you divide the screen vertically on ten tapes and display the signal in the bottom.</li></ul> <p><b>Q:</b> I have a very busy system with many OpenSCADA processes working through the Web interface and I want to decrease the server loading and speed up all those interfaces.<br /> <b>Re:</b> Yes, by default OpenSCADA interface designed for work in some fast enough carrying-live period (100 ms) which suitable mostly for active local Qt-interfaces of <a href="Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">the module UI.Vision</a> with high reactivity and on fast enough networks at working with the visualisation server. But currently you can tune your interface to achieve the loading decrease in times: </p> <ul><li> the first and an obviously step that is to increase the carrying-life period in <a class="external" href="http://oscada.org/wiki/File:Vision_wlbpg.png" title="File:Vision wlbpg.png">the VCA Project configuration</a>, where you can set the "Period of the calculation" in a value up to 500 ms for active local Qt-interfaces of <a href="Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">the module UI.Vision</a> and up to 1000 ms for not fast Web-interfaces of <a href="Modules/WebVision.html" title="Special:MyLanguage/Modules/WebVision">the module UI.WebVision</a>;</li> <li> the second step that is to set the dynamic data updating period depending on what you mean as enough often or disable the periodic updating in whole by setting the period in -2; and do that for <a href="Libs_Main_graphical_elements.html#RootPgSo" title="Special:MyLanguage/Libs/Main graphical elements">the main-root page</a> in <a class="external" href="http://oscada.org/wiki/File:Vision_wdg.png" title="File:Vision wdg.png">the Widget configuration</a> of your project tree; the same you can do for all panels placed in the group "Control panels (control)" of the project logical structure from the same main-root page, setting the needing period for the group itself;</li> <li> the third step that is deepening to your dynamic widgets-cadres adaption for work on big periodicity without loss the reactivity like to the already adapted ones from the standard library as <a href="Libs_Main_graphical_elements.html#RootPgSo" title="Special:MyLanguage/Libs/Main graphical elements">the main-root page</a> and <a href="Libs_Main_graphical_elements.html#anShow" title="Special:MyLanguage/Libs/Main graphical elements">Analog show</a>; and the adaption mostly means: <ul><li> sending user events at need of rapid updation in the next life cycle after the events processing;</li> <li> controlling the widget execution period depending on the activity situation like to blinking the selection cursor and the alarm colors.</li></ul></li></ul> <h2><span class="mw-headline" id="Problems_.28actual.2C_environmental.2C_fixed.29"><span class="mw-headline-number">3</span> <span id="Problems" title="#Problems">Problems</span> (<a class="external text" href="http://oscada.org/en/forum/genforum/?tx_mmforum_pi1%5Baction%5D=list_prefix&tx_mmforum_pi1%5Blist_prefix%5D%5Bprfx%5D=BugConfirmed" rel="nofollow noreferrer noopener" target="_blank">actual</a>, <a class="external text" href="http://oscada.org/en/forum/genforum/?tx_mmforum_pi1%5Baction%5D=list_prefix&tx_mmforum_pi1%5Blist_prefix%5D%5Bprfx%5D=BugEnvironment" rel="nofollow noreferrer noopener" target="_blank">environmental</a>, <a class="external text" href="http://oscada.org/en/forum/genforum/?tx_mmforum_pi1%5Baction%5D=list_prefix&tx_mmforum_pi1%5Blist_prefix%5D%5Bprfx%5D=BugFixed" rel="nofollow noreferrer noopener" target="_blank">fixed</a>)</span></h2> <p><b>Q:</b> Why I lost the fractional part in all values of the loaded data of the real type?<br /> <b>Re:</b> You use a locale different from "C" or most English one, which are directly set by the environment variable "LC_NUMERIC" or its generic variant "LC_ALL", which caused to use in system functions like to atof() and sprintf() the fractional part separator symbol different from "." (dot), it is mostly "," (coma). </p> <dl><dd> <b>!></b> Then never set directly the environment variables "LC_NUMERIC" and "LC_ALL" but that overrides "LC_NUMERIC" correct setting to "C" internally! For the program language changing use only environment variables "LANG" and "LANGUAGE" which enough anytime.</dd> <dd> <b>+></b> Currently the problem completely excluded, through checking and clearing the environment variable "LC_ALL"!</dd></dl> <p><b>Q:</b> "No permission for create real-time policy for '****'. Default thread is created!"<br /> <b>Re:</b> Such an OpenSCADA message is generated when an attempt is made to set a real-time policy for a thread-task, with a priority greater than 0, in the case of starting from the normal user. </p> <dl><dd> <b>+></b> Potentially these rights can be provided by editing the file "/etc/security/limits.conf" in the following way:</dd></dl> <pre style="white-space: pre;"> user hard nice -20 user soft nice -15 user hard rtprio 99 user soft rtprio 90 </pre> <p><b>Q:</b> I observe the lack of all text labels on the charts (primitive "Diagram") of the <a href="Modules/WebVision.html" title="Special:MyLanguage/Modules/WebVision">UI.WebVision</a> module interfaces. Why so?<br /> <b>Re:</b> This result is possible on interfaces constructed on the GD library, and if this library is compiled without using the FontConfig library. Currently only <a href="Modules/WebVision.html" title="Special:MyLanguage/Modules/WebVision">UI.WebVision</a> module uses this library for the exclusive construction of the "Elementary Figure" and "Diagram" primitives. </p> <dl><dd> <b>+></b> Therefore, to fix this problem, you must install the correct library package or build the library yourself with FontConfig. Currently, there is one such instance of the problem with the "libgd2-noxpm" package of the older versions of the Linux Debian distribution where you must install the correct "libgd2-xpm" package.</dd></dl> <p><b>Q:</b> I observe the lack of SVG-images in the Qt-interfaces. Why so?<br /> <b>Re:</b> This usually indicates that there in the system is no Qt-module for SVG-graphics, for example, the package "libqt5svg5" in Linux distributions based on Debian. </p> <dl><dd> <b>+></b> Install a package or a Qt-plugin directly of the SVG-graphic support.</dd></dl> </div><table style="border-top: dotted 2px #999999; margin-top: 20pt; color: gray;" width="100%"><tr><td style="text-align: left;" width="40%"><a href="http://oscada.org/wiki/Documents/FAQ/en">Documents/FAQ/en</a> - <a href="http://oscada.org/en/main/about-the-project/licenses/">GFDL</a></td><td style="text-align: center;">March 2025</td><td style="text-align: right;" width="40%">OpenSCADA 1+r3012</td></tr></table></body> </html>