<?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>Modules/System - 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">Modules/System</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--stub" href="../../ru/Modules/System.html" title="Модули/СиÑтема (17% translated)">mRussian</a> • ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../../uk/Modules/System.html" title="Модулі/СиÑтема (100% translated)">УкраїнÑька</a></div></div> <table class="wikitable"> <tr> <th> Module </th> <th> Name </th> <th> Version </th> <th> License </th> <th> Source </th> <th> Languages </th> <th> Platforms </th> <th> Type </th> <th> Author </th> <th> Description </th></tr> <tr> <td> <a href="../Modules/System.html" title="Special:MyLanguage/Modules/System">System</a> </td> <td> System DA </td> <td> 3.3 </td> <td> GPL2 </td> <td> daq_System.so </td> <td> en,uk,ru,de </td> <td> x86,x86_64,ARM </td> <td> DAQ </td> <td> Roman Savochenko<br /> <font size="-2"><i>Maxim Lysenko (2009) — the page translation</i></font> </td> <td> Provides data acquisition from Operation System. Supported OS Linux data sources: CPU, Memory, Sensors, Disk SMART, Disk Statistic, File System, Network, Power, UPS, Up Time etc. <ul><li> <b><a href="../To_do.html" title="Special:MyLanguage/Works/To do">To Do</a>:</b></li></ul> <dl><dd> -</dd></dl> </td></tr></table> <div class="toc" id="toc"><div id="toctitle"><h2>Contents</h2></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#Controller_object"><span class="tocnumber">1</span> <span class="toctext">Controller object</span></a></li> <li class="toclevel-1 tocsection-2"><a href="#Parameters"><span class="tocnumber">2</span> <span class="toctext">Parameters</span></a></li> </ul> </div> <p>The module is a kind of gateway between OpenSCADA and Operation System (OS) which receives data from various data sources and allows to manage some components of the OS. </p><p>The module provides an ability of automatic searching for supported active data sources with establishing the parameters for accessing to them as well as the implementation of the horizontal reservation function, that is working in conjunction with the remote station of the same level. </p> <h2><span class="mw-headline" id="Controller_object"><span class="mw-headline-number">1</span> Controller object</span></h2> <p>To add a data source of OS there is created and configured a controller object in OpenSCADA. An example of the configuration tab of the controller object of the given type shown in Figure 1. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:776px;"><a class="image" href="http://oscada.org/wiki/File:System_cntr.png"><img class="thumbimage" height="639" src="../files/System_cntr.png" width="774" /></a> <div class="thumbcaption">Fig.1. Configuration tab of the controller object.</div></div></div></div> <p>From this tab you can set: </p> <ul><li> State of the controller object, as follows: status, "Enabled", "Running" and the storage name containing the configuration.</li> <li> Identifier, name and description of the controller.</li> <li> The state "Enabled" and "Running", in which the controller object must be translated at start up.</li> <li> Automatic searching the active data sources and creation of the parameters for them for modes: "Manual", "Fast sources", "Slow sources", "All sources".</li> <li> Policy of scheduling and priority of the data acquisition task.</li></ul> <h2><span class="mw-headline" id="Parameters"><span class="mw-headline-number">2</span> Parameters</span></h2> <p>The module provides only one the "Standard (std)" type of the parameters with the parameters table name "OSPrm_{CntrId}". Additional configuration fields of the parameters of the module (Fig. 2) are: </p> <ul><li> part of the system; </li> <li> subtype, dependent from the data source and can be missing in whole.</li></ul> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:787px;"><a class="image" href="http://oscada.org/wiki/File:System_prm.png"><img class="thumbimage" height="530" src="../files/System_prm.png" width="785" /></a> <div class="thumbcaption">Fig.2. Configuration tab of the DAQ parameter.</div></div></div></div> <table class="wikitable"> <caption> Supported data sources of OS </caption> <tr> <th> Data Source (ID)<br />"AutoCreateID" </th> <th> Subtype values </th> <th> Parameter attributes (identifier[properties]) </th> <th> Notes </th></tr> <tr> <td> CPU (CPU)<br />"<b>CPU[{N}]</b>" </td> <td> "General (gen)" or CPU number <i>N</i>. </td> <td> <ul><li> "Load whole, system, user, idle\nIn %" (<b>load</b>[real], <b>sys</b>[real], <b>user</b>[real], <b>idle</b>[real])</li> <li> "Frequency: driver" (<b>frqDrv</b>[string])</li> <li> "Frequency: governor" (<b>frqGov</b>[string|wr])</li> <li> "Frequency: current\nIn MHz" (<b>frqCur</b>[real|wr])</li> <li> "Frequency: minimum, set\nIn MHz" (<b>frqMin</b>[real], <b>frqMinCur</b>[real|wr])</li> <li> "Frequency: maximum, set\nIn MHz" (<b>frqMax</b>[real], <b>frqMaxCur</b>[real|wr])</li> <li> "Model name" (<b>model</b>[string])</li> <li> "MHz" (<b>MHz</b>[real])</li> <li> "BogoMIPS" (<b>BogoMIPS</b>[real])</li> <li> "MHz at rdtsc" (<b>rdtsc</b>[real])</li></ul> </td> <td> Updated in the generic cycles for all attribute values and prepares the most actual CPU generic-average frequency for the <a class="external" href="http://oscada.org/wiki/File:QTCfg_sys_st.png" title="File:QTCfg sys st.png">root page</a>. All CPU specific frequency values are averaged for "General (gen)" and changes there are propagated to all cores. As the sources there used: <ul><li> "/proc/stat" — for the CPU load;</li> <li> "/sys/devices/system/cpu/cpu{N}/cpufreq/" — for CPUFreq;</li> <li> "/proc/cpuinfo" — for generic CPU information.</li></ul> </td></tr> <tr> <td> Memory (MEM)<br />"<b>MEM</b>" </td> <td> Not used. </td> <td> <ul><li> "Free (KiB)" (<b>free</b>[integer])</li> <li> "Total (KiB)" (<b>total</b>[integer])</li> <li> "Used (KiB)" (<b>use</b>[integer])</li> <li> "Buffers (KiB)" (<b>buff</b>[integer])</li> <li> "Cached (KiB)" (<b>cache</b>[integer])</li> <li> "Swap free (KiB)" (<b>sw_free</b>[integer])</li> <li> "Swap total (KiB)" (<b>sw_total</b>[integer])</li> <li> "Swap used (KiB)" (<b>sw_use</b>[integer])</li></ul> </td> <td> As the source there used "/proc/meminfo". </td></tr> <tr> <td> Sensors (sensors)<br />"<b>Sensors</b>" </td> <td> Not used. </td> <td> Defined by sensors those are available on the hardware. For each sensor the unique attribute is created. </td> <td> The library <b>libsensors</b> or the program <b>mbmon</b> is used also as the direct sensors in "/sys/devices/virtual/hwmon/*/temp" and /sys/devices/virtual/hwmon/*/temp*". Higher priority in use is given to the library <b>libsensors</b> since <b>mbmon</b> has problems on multi-core architectures and it is deprecated mostly. </td></tr> <tr> <td> Process (proc) </td> <td> List of commands of the processes with the possibility to specify the regular expression to the whole command-line in view "<b>/{RE}/</b>". </td> <td> <ul><li> "Number of file descriptor slots currently" (<b>FDSize</b>[integer])</li> <li> "Peak virtual memory size (KiB)" (<b>VmPeak</b>[integer])</li> <li> "Virtual memory size (KiB)" (<b>VmSize</b>[integer])</li> <li> "Locked memory size (KiB)" (<b>VmLck</b>[integer])</li> <li> "Pinned memory size (KiB)" (<b>VmPin</b>[integer])</li> <li> "Peak resident set size (KiB)" (<b>VmHWM</b>[integer])</li> <li> "Resident set size (KiB)" (<b>VmRSS</b>[integer])</li> <li> "Size of resident anonymous memory (KiB)" (<b>RssAnon</b>[integer])</li> <li> "Size of resident file mappings (KiB)" (<b>RssFile</b>[integer])</li> <li> "Size of resident shared memory (KiB)" (<b>RssShmem</b>[integer])</li> <li> "Size of data segment (KiB)" (<b>VmData</b>[integer])</li> <li> "Size of stack segment (KiB)" (<b>VmStk</b>[integer])</li> <li> "Size of text segment (KiB)" (<b>VmExe</b>[integer])</li> <li> "Shared library code size (KiB)" (<b>VmLib</b>[integer])</li> <li> "Page table entries size (KiB)" (<b>VmPTE</b>[integer])</li> <li> "Swapped-out virtual memory size by anonymous private pages (KiB)" (<b>VmSwap</b>[integer])</li> <li> "Size of hugetlb memory portions (KiB)" (<b>HugetlbPages</b>[integer])</li> <li> "Number of threads in process" (<b>Threads</b>[integer])</li></ul> </td> <td> As the source there used "/proc/{PID}/status". </td></tr> <tr> <td> Qt sensor (QSensor)<br />"<b>{OrigName}</b>" </td> <td> List of the Qt-sensors in their original name <i>OrigName</i> </td> <td> <ul><li> "State" (<b>st</b>[string])</li> <li> "Property {N}" (<b>pr{N}</b>[boolean|integer|real|string])</li></ul> </td> <td> The source is dynamic, so the available attributes dependent from the QSensor type. Typical sensor types are: QAccelerometer, QAmbientLightSensor, QCompass, QIRProximitySensor, QLightSensor, QMagnetometer, QOrientationSensor, QProximitySensor, QRotationSensor, QTapSensor. <p><a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../files/At.png" width="22" /></a> The sensors accessible mostly on <a class="extiw" href="https://en.wikipedia.org/wiki/Android_(operating_system)" title="wikipedia:Android (operating system)">Android</a> and <a class="extiw" href="https://en.wikipedia.org/wiki/MeeGo" title="wikipedia:MeeGo">MeeGo</a>. </p> </td></tr> <tr> <td> Disk SMART (hddsmart)<br />"<b>DiskSMART{DEV}</b>" </td> <td> Devices <i>DEV</i> of disks, available in the system. </td> <td> Defined by SMART-fields, available for this disk. For each field the unique attribute is created. </td> <td> That is the slow source. The source is dynamic, so the available attributes dependent from the disk type. The <b>smartctl</b> program must be installed and available. </td></tr> <tr> <td> HDD temperature (hddtemp)<br />"<b>Temperature_hd{DEV}</b>" </td> <td> Devices <i>DEV</i> of the HDD Disks, available in the system. </td> <td> <ul><li> "Name" (<b>disk</b>[string])</li> <li> "Measure unit" (<b>ed</b>[string])</li> <li> "Temperature" (<b>t</b>[integer])</li></ul> </td> <td> <a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../files/At.png" width="22" /></a> Deprecated mostly and replaced by "Disk SMART (hddsmart)". The <b>hddtemp</b> program must be installed, configured and running as the service. </td></tr> <tr> <td> Disk Statistic (hddstat)<br />"<b>DiskSt_{DEV}</b>" </td> <td> Devices <i>DEV</i> of disks or their partitions, available in the system. </td> <td> <ul><li> "Read (B)" (<b>rd</b>[real])</li> <li> "Read speed (B/s)" (<b>rdSp</b>[real])</li> <li> "Write (B)" (<b>wr</b>[real])</li> <li> "Write speed (B/s)" (<b>wrSp</b>[real])</li></ul> </td> <td> As the sources there used: <ul><li> "/proc/diskstats" — for disks;</li> <li> "/proc/partitions" — for partitions.</li></ul> </td></tr> <tr> <td> File System (fs)<br />"<b>FS{MP}</b>" </td> <td> Mounted file systems <i>MP</i>. </td> <td> <ul><li> "Total (GB)" (<b>total</b>[real])</li> <li> "Used (GB)" (<b>used</b>[real])</li> <li> "Free (GB)" (<b>free</b>[real])</li> <li> "Total file nodes" (<b>totalN</b>[integer])</li> <li> "Used file nodes" (<b>usedN</b>[integer])</li> <li> "Free file nodes" (<b>freeN</b>[integer])</li></ul> </td> <td> As the source there used "/etc/fstab" for the file systems. </td></tr> <tr> <td> Network (netstat)<br />"<b>Net_{IF}</b>" </td> <td> Network interfaces <i>IF</i>, available in the system. </td> <td> <ul><li> "Received (B)" (<b>rcv</b>[real])</li> <li> "Receive speed (B/s)" (<b>rcvSp</b>[real])</li> <li> "Transmitted (B)" (<b>trns</b>[real])</li> <li> "Transmit speed (B/s)" (<b>trnsSp</b>[real])</li></ul> </td> <td> As the source there used "/proc/net/dev" for the network devices-interfaces. </td></tr> <tr> <td> Power (Power)<br />"<b>Power{DEV}</b>" </td> <td> Power devices <i>DEV</i>, available in the hardware. </td> <td> Read and written all properties accessible in the device folder with specific processing of the most known ones: <ul><li> "Type" (<b>type</b>[string])</li> <li> "Technology" (<b>technology</b>[string])</li> <li> "Scope" (<b>scope</b>[string])</li> <li> "Present" (<b>present</b>[boolean])</li> <li> "Manufacturer, model, SN" (<b>manufacturer</b>[string], <b>model_name</b>[string], <b>serial_number</b>[string])</li> <li> "Status" (<b>status</b>[string])</li> <li> "Online" (<b>online</b>[boolean])</li> <li> "Health" (<b>health</b>[string])</li> <li> "Capacity" (<b>capacity</b>[integer])</li> <li> "Capacity level" (<b>capacity_level</b>[string])</li> <li> "Charge now, full, design\nIn Ah" (<b>charge_now</b>[real], <b>charge_full</b>[real], <b>charge_full_design</b>[real])</li> <li> "Energy now, full, design\nIn Ah" (<b>energy_now</b>[real], <b>energy_full</b>[real], <b>energy_full_design</b>[real])</li> <li> "Voltage" (<b>voltage_now</b>[real])</li> <li> "Voltage minimum" (<b>voltage_min_design</b>[real])</li> <li> "Cycle count" (<b>cycle_count</b>[integer])</li> <li> "Power\nIn Watts" (<b>power_now</b>[real])</li> <li> "Current\nIn mAmpers" (<b>current_now</b>[real])</li> <li> "Temperature\nIn degC" (<b>temp</b>[real])</li> <li> "Time to empty now, average" (<b>time_to_empty_now</b>[real], <b>time_to_empty_avg</b>[real])</li> <li> "Time to full" (<b>time_to_full_now</b>[real])</li> <li> "Charge threshold start, stop" (<b>charge_start_threshold</b>[integer|wr], <b>charge_stop_threshold</b>[integer|wr])</li> <li> "Charge control threshold start, end" (<b>charge_control_start_threshold</b>[integer|wr], <b>charge_control_end_threshold</b>[integer|wr])</li></ul> </td> <td> The source is dynamic, so the available attributes dependent from the source type. As the source there used the Linux Power interface in "/sys/class/power_supply/". </td></tr> <tr> <td> UPS (ups) </td> <td> UPS Address. </td> <td> Defined by fields, provided by corresponded UPS. For each field the unique attribute is created. </td> <td> That is the slow source. The source is dynamic, so the available attributes dependent from the UPS type. The <b>upsd</b> demon from the project NUT must be accessible in the system or network, that is not detected automatically and its address you must set directly. </td></tr> <tr> <td> Up Time (uptime)<br />"<b>UpTm_[sys|stat]</b>" </td> <td> System (sys) or Station (stat) uptime. </td> <td> <ul><li> "Full seconds" (<b>full</b>[integer])</li> <li> "Seconds" (<b>sec</b>[integer])</li> <li> "Minutes" (<b>min</b>[integer])</li> <li> "Hours" (<b>hour</b>[integer])</li> <li> "Days" (<b>day</b>[integer])</li></ul> </td> <td> </td></tr></table> </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/Modules/System/en">Modules/System/en</a> - <a href="http://oscada.org/en/main/about-the-project/licenses/">GFDL</a></td><td style="text-align: center;">April 2025</td><td style="text-align: right;" width="40%">OpenSCADA 1+r3018</td></tr></table></body> </html>