1. User Manual
/* ── Reading progress bar ── */
#rn-prog { position:fixed;top:0;left:0;height:3px;width:0;background:#005AB4;z-index:9999;pointer-events:none; }
/* ── Page content wrapper ── */
.doc-wrap { position:relative; }
.doc-content {
margin-right:224px;
border-left:1px solid #E8E8E8;
border-right:1px solid #E8E8E8;
padding:0 32px;
}
/* ── Right "On This Page" TOC ── */
.doc-toc {
position:absolute;top:0;right:0;width:200px;
font-size:12.5px;line-height:1.55;
padding:20px 0 20px 16px;
}
.doc-toc.is-fixed { position:fixed;width:200px;overflow-y:auto;z-index:10; }
.toc-header { display:flex;justify-content:space-between;align-items:center;margin-bottom:10px; }
.toc-header strong { font-size:13px;font-weight:700;color:#222; }
.toc-toggle { background:none;border:none;cursor:pointer;color:#555;font-size:14px;padding:0 2px;line-height:1; }
.toc-toggle:hover { color:#222; }
.doc-toc ul { list-style:none;margin:0;padding:0; }
.doc-toc li { margin:0; }
.doc-toc a { display:block;padding:3px 0;color:#555;text-decoration:none;border-left:2px solid transparent;transition:color .12s; }
.doc-toc a:hover { color:#222;text-decoration:underline; }
.doc-toc a.toc-on { color:#222;font-weight:700;border-left:2px solid #005AB4;padding-left:5px; }
.tl1 > a { font-weight:600;color:#222; }
.tl2 > a { padding-left:14px; }
.tl3 > a { padding-left:26px;font-size:12px; }
/* ── Typography ── */
.doc-content h1 { font-size:1.6em;font-weight:700;color:#222;margin:0 0 6px 0;border:none; }
.rn-meta { font-size:.8em;color:#555;margin:0 0 28px 0; }
.doc-content h2 { font-size:1.15em;font-weight:700;color:#222;margin:36px 0 10px 0;display:flex;align-items:baseline;gap:7px;scroll-margin-top:16px; }
.doc-content h3 { font-size:1em;font-weight:700;color:#222;margin:22px 0 8px 0;display:flex;align-items:baseline;gap:6px;scroll-margin-top:16px; }
.doc-content h4 { font-size:.93em;font-weight:700;color:#222;margin:14px 0 6px 0;display:flex;align-items:baseline;gap:5px;scroll-margin-top:16px; }
.doc-content p { font-size:.93em;color:#333;line-height:1.75;margin:0 0 12px 0; }
.doc-content strong { color:#222; }
.doc-content code { background:#f5f5f5;border:1px solid #E8E8E8;border-radius:3px;padding:1px 5px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:.82em;color:#222;line-height:1; }
/* ── Anchor icon ── */
.anchor-icon { color:#E8E8E8;text-decoration:none;opacity:0;transition:opacity .15s;vertical-align:middle;margin-left:4px;display:inline-flex;align-items:center; }
h2:hover .anchor-icon,h3:hover .anchor-icon,h4:hover .anchor-icon { opacity:1; }
.anchor-icon:hover { color:#005AB4; }
/* ── Callout notes ── */
.note { border-radius:6px;padding:12px 16px;margin:14px 0;border:1px solid transparent; }
.note-info { background:#e1f1f9 !important;border-color:#b3d4ee !important;border-left:4px solid #005AB4 !important; }
.note-warning { background:#fff4ec !important;border-color:#f5cba7 !important;border-left:4px solid #DD5600 !important; }
.note-tip { background:#e5f3df !important;border-color:#b7dba5 !important;border-left:4px solid #73A839 !important; }
.note-hd { font-weight:700;font-size:.85em;display:flex;align-items:center;gap:5px;margin-bottom:5px; }
.note-info .note-hd { color:#003d80 !important; }
.note-warning .note-hd { color:#a03d00 !important; }
.note-tip .note-hd { color:#3d6b1a !important; }
.note-body { font-size:.875em;color:#222 !important;line-height:1.65; }
/* ── Section index list ── */
.section-index { list-style:disc;padding-left:20px;margin:0 0 20px 0; }
.section-index li { margin-bottom:12px; }
.section-index li a { color:#005AB4;font-weight:600;font-size:.93em;text-decoration:underline; }
.section-index li p { margin:3px 0 0 0;font-size:.875em;color:#333;line-height:1.6; }
/* ── Parent topic ── */
.parent-topic { font-size:.82em;color:#555;margin:18px 0 24px 0;border-top:1px solid #E8E8E8;padding-top:10px; }
.parent-topic a { color:#005AB4; }
/* ── Accordion ── */
details.acc { border:1px solid #E8E8E8;border-radius:4px;margin-bottom:5px; }
details.acc summary { display:flex;align-items:center;gap:8px;padding:9px 12px;cursor:pointer;list-style:none;background:none;user-select:none; }
details.acc summary::-webkit-details-marker { display:none; }
details.acc summary::before { content:'▶';font-size:.58em;color:#555;transition:transform .18s;flex-shrink:0; }
details.acc[open] summary::before { transform:rotate(90deg); }
details.acc summary:hover { background:#f5f5f5; }
.acc-num { font-size:.8em;color:#555;min-width:28px;font-weight:600; }
.acc-title { font-size:.9em;font-weight:700;color:#222;flex:1; }
.acc-body { padding:10px 14px 12px 14px;font-size:.88em;color:#333;line-height:1.7; }
/* ── Images ── */
.fig { margin:12px auto 24px auto;width:fit-content;max-width:100%; }
.fig img { border-radius:4px 4px 0 0;border:1px solid #E8E8E8;display:block;cursor:zoom-in;max-width:100%;box-shadow:0 1px 4px rgba(0,0,0,.10);transition:box-shadow .15s; }
.fig img:hover { box-shadow:0 3px 12px rgba(0,90,180,.18); }
.fig-cap { font-size:.78em;color:#555;margin:0;padding:5px 8px;background:#f5f5f5;border:1px solid #E8E8E8;border-top:none;border-radius:0 0 4px 4px;display:block;width:100%;box-sizing:border-box; }
/* ── Lightbox ── */
#rn-lb { display:none;position:fixed;inset:0;z-index:9998;background:rgba(0,0,0,.8);cursor:zoom-out;align-items:center;justify-content:center; }
#rn-lb.open { display:flex; }
#rn-lb-wrap { position:relative;cursor:default;max-width:92vw;max-height:90vh; }
#rn-lb-wrap img { max-width:100%;max-height:90vh;border-radius:5px;display:block; }
#rn-lb-x { position:absolute;top:-13px;right:-13px;background:#005AB4;color:#fff;width:26px;height:26px;border-radius:50%;border:none;cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center; }
#rn-lb-cap { position:fixed;bottom:18px;left:50%;transform:translateX(-50%);color:#ddd;font-size:.78em;background:rgba(0,0,0,.55);padding:3px 12px;border-radius:14px;pointer-events:none; }
/* ── Back to top ── */
#rn-top { position:fixed;bottom:24px;right:24px;z-index:9997;width:36px;height:36px;border-radius:50%;background:#005AB4;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transform:translateY(8px);transition:opacity .22s,transform .22s;pointer-events:none;box-shadow:0 2px 8px rgba(0,90,180,.3); }
#rn-top.on { opacity:1;transform:translateY(0);pointer-events:auto; }
#rn-top:hover { background:#0066cc; }
/* ── Toast ── */
.rn-toast { position:fixed;bottom:66px;right:24px;z-index:9999;background:#222;color:#fff;font-size:.74em;padding:4px 11px;border-radius:4px;pointer-events:none;opacity:0;transition:opacity .18s; }
.rn-toast.on { opacity:1; }
/* ── Tables ── */
.rn-table { width:100%;border-collapse:collapse;margin:8px 0 18px 0;font-size:.875em; }
.rn-table th { background:#f5f5f5;text-align:left;padding:7px 12px;font-size:.78em;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#555;border-bottom:2px solid #E8E8E8; }
.rn-table td { padding:7px 12px;border-bottom:1px solid #E8E8E8;color:#333;vertical-align:top; }
.rn-table tr:last-child td { border-bottom:none; }
.rn-table tr:hover td { background:#f5f5f5; }
.sc { display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background:#deeaf7;color:#005AB4;border-radius:3px;font-size:.8em;font-weight:700; }
- 1. System Login
How to access the CENTO web interface, log in, and switch users.
- 2. User Interface
Overview of the main menu, SCADA diagrams, analysis tools, logs, reports, and notifications.
- Basic Abbreviations
Glossary of abbreviations used throughout this manual.
- Reference: Status Codes
Device and tag status code tables for quick reference.
1. System Login
Users log in to CENTO through a web interface. Supported browsers: Google Chrome, Microsoft Edge, etc.
Enter the server IP or DNS address — for example http://192.168.80.10/ or https://demotest.centosoftware.com/. When working directly on the server, use http://127.0.0.1.
Figure 1.1. Authorization page
Figure 1.2. Main panel
To switch users, open the drop-down menu in the upper right corner and select Logout.
Figure 1.3. System logout
Figure 1.4. Access is denied
2. User Interface
The pinned main menu switches between sections; the status bar on the right displays current events and system time.
- 2.1 Main Menu
Navigation bar layout, status bar, drop-down menus.
- 2.2 Diagrams
Mimic diagram types, object menus, dispatch marks, video streams, object log.
- 2.3 Analysis
Real-time data tables and charts, metering data, receipt forms, device diagnostics.
- 2.4 Logs
Nine log types — availability depends on license and access rights.
- 2.5 Reports
Flexible reports, power quality reports, short-circuit reports.
- 2.6 Operative Journal
Shift-based logbook with templates and electronic signatures.
- 2.7 Widgets
Configurable KPI dashboard panels, personalised per user.
- 2.8 Sound Alerts
Browser-based audible alerts for configured event conditions.
- 2.9 Pop-up Messages
Critical event banners with operator acknowledgement and log.
2.1 Main Menu
Provides access to: Diagrams, Maps, Analysis, Reports, Logs, and Settings. The interface scales automatically to fit the browser window.
Figure 2.1. Main menu (left side)
Figure 2.2. Main menu (right part)
Figure 2.3. Drop-down menu
2.2 Diagrams
Interactive mimic diagrams (SCADA screens) represent equipment state and process flows in real time. For diagram creation and configuration, see the Diagrams Development Manual.
Figure 2.4. Power industry
Figure 2.5. Engineering infrastructure
Figure 2.6. Diagnostics
Figure 2.7. Technology
Figure 2.8. Portable grounding
Figure 2.9. Dispatch marks log
Figure 2.10. Diagrams player interface
Figure 2.11. Diagram viewing window with diagram tree
Figure 2.12. Object menu (left click)
Figure 2.13. Object context menu (right click)
Figure 2.14. Object passport — Measurements
Figure 2.15. Viewing video stream
Figure 2.16. Dispatch marks interface
Figure 2.17. Reference information
Figure 2.18. Object log
2.2.1 Control
Remote switching, setpoint changes, and group commands are executed directly from mimic diagrams. Access is governed by user permissions in the Information Model.
Figure 2.19. Remote control
Figure 2.20. Control schedule
Figure 2.21. Entering password on diagram
Figure 2.22. Value entry field
Figure 2.23. Named command selection (1)
Figure 2.24. Named command selection (2)
Figure 2.25. TC command selection
Figure 2.26. Action confirmation
Figure 2.27. Action confirmation
2.3 Analysis
Displays CENTO data in tabular and chart form with filtering, aggregation, and Excel export.
2.3.1 Real-time data analysis
Displays current tag values, filterable by device/object, status code, or last-update timestamp.
Figure 2.28. Real-time data analysis
Figure 2.29. Device tree
Figure 2.30. Object tree
Figure 2.31. Tag table
Figure 2.32. Real-time data charts
Figure 2.33. Data aggregation options
Figure 2.34. Chart settings menu
Figure 2.35. Calendar — data display depth
Figure 2.36. User message on chart
Figure 2.37. Table tab
2.3.2 Metering data analysis
Metering data (electricity, energy, hours, emissions) in tabular and chart formats. Supports aggregation by hour/day/month/year and Excel export.
2.3.3 Receipt of metering data form
Structured form for reviewing and confirming receipt of interval metering data. Allows marking data as received and adding operator comments.
2.3.4 Device diagnostic
Communication quality and polling stats: last poll time, response rate, error counts, protocol-level diagnostics.
2.4 Logs
Set of logs available depending on license and access rights.
2.4.1Technology events
Records all process-level events: status changes, threshold crossings, control commands, with timestamps and operator attribution.
2.4.2Camcoders
Log of disturbance recorder trigger events linked to oscillogram captures. Each entry links to the corresponding waveform file.
2.4.3Power quality
PQ events from connected analyzers: voltage dips, swells, harmonics, flicker. Requires PQA license.
2.4.4Waveforms
List of captured oscillogram files. Click any entry to open the waveform viewer. See the Waveform Viewing Manual.
2.4.5Device events
Events reported by field devices via native protocols (IEC 61850 GOOSE, IEC-104). Includes device-side timestamps where available.
2.4.6System events
Server start/stop, configuration changes, licence updates, communication link state changes.
2.4.7User comments log
Chronological record of operator comments. Searchable by author, date, and text.
2.4.8All events log
Consolidated view of all log types in a single timeline. Supports cross-type filtering and Excel export.
2.4.9Custom logs
User-defined log views combining selected event types, devices, and filters. Saved per user.
2.5 Reports
2.5.1Flexible reports
Included in CENTO basic. Configurable tabular reports based on metering channels. See the Flexible Reports Guide.
2.5.2Power quality reports
Automated PQ compliance reports (EN 50160 and similar). Requires Power Quality license.
2.5.3Short circuit currents
Max and min short-circuit currents at network nodes. Requires Short Circuit module license.
2.6 Operative Journal
Shift-based logbook organised by shift, unit, and equipment type. Supports templates, attachments, and electronic signatures.
2.7 Widgets
Configurable dashboard panels displaying KPIs, charts, or tag values. Personalised per user with drag-and-drop layout adjustment.
2.8 Sound Alerts
Audible browser alerts for events matching configured conditions. Enabled per user in personal settings.
2.9 Pop-up Messages
Critical events trigger pop-up banners, acknowledged by the operator and logged with timestamp and user ID.
Basic Abbreviations
| Abbr. | Meaning |
|---|---|
| IM | Information Model |
| PQA | Power Quality Analyser |
| SCADA | Supervisory Control and Data Acquisition |
| S2S | Server-to-Server data exchange |
| HA | High Availability / Redundancy |
Reference: Status Codes
Table 2.1 — Device Statuses
| Code | Status |
|---|---|
| 0 | Disabled |
| 1 | Normal |
| 2 | Data in device with errors |
| 3 | Device unavailable |
| 4 | Manual input data present |
| 9 | Status not available |
Table 2.2 — Tag Statuses
| Code | Status |
|---|---|
| 0 | Disabled |
| 1 | Normal |
| 2 | Processing error |
| 3 | Receiving error |
| 4 | Manual input of tag value |
| 5 | Manual input in arguments |
| 6 | Disabled device or protocol |
| 8 | Bad tag quality |
| 9 | Status unknown |
(function(){
var bar = document.getElementById('rn-prog');
var top = document.getElementById('rn-top');
window.addEventListener('scroll', function(){
var d = document.documentElement;
var pct = d.scrollTop / (d.scrollHeight - d.clientHeight);
bar.style.width = (pct*100)+'%';
d.scrollTop > 280 ? top.classList.add('on') : top.classList.remove('on');
}, {passive:true});
/* TOC active via IntersectionObserver */
var links = Array.from(document.querySelectorAll('[data-toc]'));
var secs = links.map(function(a){
return {el: document.getElementById(a.getAttribute('href').slice(1)), a:a};
}).filter(function(s){return s.el;});
var busy = false;
var obs = new IntersectionObserver(function(entries){
if (busy) return;
entries.forEach(function(e){
if (!e.isIntersecting) return;
var i = secs.findIndex(function(s){return s.el===e.target;});
if (i<0) return;
secs.forEach(function(s){s.a.classList.remove('toc-on');});
secs[i].a.classList.add('toc-on');
var toc = document.querySelector('.doc-toc');
var link = secs[i].a;
toc.scrollTop = link.offsetTop - toc.offsetTop - toc.clientHeight/2 + link.clientHeight/2;
});
}, {rootMargin:'-8% 0px -60% 0px', threshold:0});
secs.forEach(function(s){obs.observe(s.el);});
links.forEach(function(a){
a.addEventListener('click', function(e){
var id = a.getAttribute('href').slice(1);
var el = document.getElementById(id);
if (!el) return;
e.preventDefault();
busy = true;
secs.forEach(function(s){s.a.classList.remove('toc-on');});
a.classList.add('toc-on');
el.scrollIntoView({behavior:'smooth',block:'start'});
setTimeout(function(){busy=false;}, 900);
});
});
/* TOC collapse */
var tocList = document.getElementById('toc-list');
var togBtn = document.getElementById('toc-tog');
var collapsed = false;
togBtn && togBtn.addEventListener('click', function(){
collapsed = !collapsed;
tocList.style.display = collapsed ? 'none' : '';
togBtn.textContent = collapsed ? '»' : '«';
});
/* Lightbox */
var lb = document.getElementById('rn-lb');
var lbI = document.getElementById('rn-lb-img');
var lbC = document.getElementById('rn-lb-cap');
window.openLightbox = function(img){
lbI.src = img.src; lbI.alt = img.alt; lbC.textContent = img.alt;
lb.classList.add('open'); document.body.style.overflow='hidden';
};
window.closeLightbox = function(){
lb.classList.remove('open'); document.body.style.overflow='';
};
lb.addEventListener('click', function(e){if(e.target===lb)closeLightbox();});
document.addEventListener('keydown', function(e){if(e.key==='Escape')closeLightbox();});
/* Copy anchor */
var toast = document.getElementById('rn-toast');
var t;
window.copyAnchor = function(id){
var url = location.href.split('#')[0]+'#'+id;
if(navigator.clipboard) navigator.clipboard.writeText(url).catch(function(){});
else { var x=document.createElement('textarea');x.value=url;document.body.appendChild(x);x.select();document.execCommand('copy');document.body.removeChild(x); }
toast.classList.add('on');
clearTimeout(t);
t = setTimeout(function(){toast.classList.remove('on');}, 1600);
};
/* ── Sticky TOC via JS ──
Uses position:absolute→fixed switch. No placeholder needed because
.doc-content has a fixed margin-right — content width never changes. */
(function(){
var toc = document.querySelector('.doc-toc');
var wrap = document.querySelector('.doc-wrap');
if (!toc || !wrap) return;
var navbar = document.querySelector('.navbar, nav.navbar, #topBar, header');
var navH = navbar ? navbar.offsetHeight : 0;
var footer = document.querySelector('footer, .xwikifooter, #xwikifooter, .bottombar, .sticky-container');
function update() {
var wr = wrap.getBoundingClientRect();
if (wr.top <= navH) {
/* Doc-wrap has scrolled above navbar — fix the TOC */
var footerTop = footer ? footer.getBoundingClientRect().top : window.innerHeight;
var h = Math.max(0, Math.min(window.innerHeight, footerTop) - navH);
toc.classList.add('is-fixed');
toc.style.top = navH + 'px';
toc.style.left = (wr.right - 200) + 'px'; /* right edge of wrap minus TOC width */
toc.style.height = h + 'px';
} else {
/* Still in natural position */
toc.classList.remove('is-fixed');
toc.style.top = toc.style.left = toc.style.height = '';
}
}
requestAnimationFrame(function(){ requestAnimationFrame(function(){
update();
window.addEventListener('scroll', update, {passive:true});
window.addEventListener('resize', update, {passive:true});
}); });
})();
/* ── Left panel navigation hints ── */
(function(){
var hints = {
'Preface': 'Introduction to CENTO Software documentation',
'1. User Manual': 'Web interface guide — login, diagrams, analysis, logs, reports',
'2. Setup Manual': 'System configuration and setup for administrators',
'3. Metering Channels': 'Metering channel configuration and data collection setup',
'4. Structure and Modules Description': 'CENTO system architecture and module overview',
'5. Diagrams Development Manual': 'Creating and configuring SCADA mimic diagrams',
'6. Flexible Reports Guide': 'Building configurable tabular reports from metering data',
'7. Events Setup': 'Configuring event rules, thresholds, and notifications',
'8. Control Setup Manual': 'Setting up remote control and switching operations',
'Network Diagram (CLOUD)': 'CENTO deployment topology for cloud installations',
'Network Diagram (On-Prem)': 'CENTO deployment topology for on-premises installations',
'Server Configuration Example': 'Reference server setup and configuration example',
'Technical Requirements': 'Hardware and software requirements for CENTO deployment',
'DEMO server': 'Access the live CENTO demo environment',
'Release Notes': 'Changelog and version history for the CENTO platform',
};
document.querySelectorAll('#leftPanels a').forEach(function(a){
var text = a.textContent.trim();
var hint = hints[text] || hints[text.replace(/^\d+\.\s*/, '')];
if (hint) a.setAttribute('data-hint', hint);
});
})();
})();