From OpenSCADAWiki
Jump to: navigation, search
This page is a translated version of the page Libs/Service procedures and the translation is 37% complete.

Other languages:
English • ‎российский • ‎українська
Назва Версія Ліцензія Джерело Мови Автор Опис
Бібліотека сервісних процедур 1.2 GPLv2 OscadaLibs.db (SQL, GZip) > DAQ.JavaLikeCalc.servProc en, uk, ru Роман Савоченко Бібліотека сервісних процедур різноманітного застосування.
  • Засновано: Листопад 2017
  • Початково створено: у старій Wiki
  • Використано: різними процесами OpenSCADA

Бібліотека створюється для надання сервісних функцій виконання службових завдань довкола оточення OpenSCADA. Бібліотека не є статичною, а будується на основі модуля JavaLikeCalc, який дозволяє створювати обчислення на мові схожій на Java. Назви функцій та їх параметрів доступні на мовах: Англійська, Українська та Російська.

Для адресації до функцій цієї бібліотеки можна використати статичну адресу виклику DAQ.JavaLikeCalc.lib_servProc.{Func}() або динамічну SYS.DAQ.JavaLikeCalc["lib_servProc"]["{Func}"].call(), SYS.DAQ.JavaLikeCalc["lib_servProc"].{Func}(). Де {Func} — ідентифікатор функції у бібліотеці.

Для підключення бібліотеки до проекту станції OpenSCADA ви можете отримати файл БД як:

  • такий що постачається з готовим та відповідним пакетом дистрибутиву Linux на кшталт "openscada-libdb-main", "openscada-LibDB.Main";
  • найбільш актуальний та безпосередньо отриманий з репозиторію subversion, перетворений у файл БД SQLite шляхом:
$ wget http://oscada.org/svn/trunk/OpenSCADA/data/LibsDB/OscadaLibs.sql
$ sqlite3 -init OscadaLibs.sql OscadaLibs.db .exit

Цей завантажений файл ви надалі можете розмістити у теці проекту станції та створити об'єкт бази даних модуля БД "SQLite", зареєструвавши файл бази даних у конфігурації.


1 TEST: Packing of the archiver on FS (archPackFStests)

1.0 GPLv2 * en Roman Savochenko

Tests set for packing of the value archives to File System, to check the optimization algorithm. The stages are provided:

  • Stage 0: Filling the main values: "1,1,10,10,100,100,1000,1000,10000,10000,EVAL"
  • Stage 1: Changing to different value 20: "1,1,20,10,100,100,1000,1000,10000,10000,EVAL"
  • Stage 2: Setting a value for merging (equal) to the up (10): "1,1,20,10,10,100,1000,1000,10000,10000,EVAL"
  • Stage 3: Setting a value for merging (equal) to the down (1000): "1,1,20,10,10,1000,1000,1000,10000,10000,EVAL"
  • Stage 4: Setting a different value to the end 20000: "1,1,20,10,10,1000,1000,1000,10000,10000,20000,EVAL"
  • Stage 5: Changing the end value for merging to the up (10000): "1,1,20,10,10,1000,1000,1000,10000,10000,10000,EVAL"
  • Stage 6: Setting a value to the end for merging to the up (10000): "1,1,20,10,10,1000,1000,1000,10000,10000,10000,10000,EVAL"
  • Stage 7: Setting the end value to EVAL: "1,1,20,10,10,1000,1000,1000,10000,10000,10000,EVAL"
  • Stage 8: Setting an equal value for inserting 10000: "1,1,20,10,10,1000,1000,1000,10000,10000,10000,EVAL"

Function parameters

Identifier Name Type Mode Default
tm Start time (14.03.2015 21:37) Integer Input 1426361839
per Period, seconds Integer Input 60
addr Archive address String Input test123
archiver Archiver address String Input FSArch.1m
step Step (0-8), -1 for all Integer Input -1


2 TEST: Release (releaseTests)

2.0 GPLv2 * en Roman Savochenko

Set of formal tests of the OpenSCADA releases:
0: System
1: Security User/Group tests
2: Transport subsystem tests

  • Data transferring through output and input transports by the test "TrOut":
means presence of the input transports with the name "testRelease[{N}]" and the connected output transport adress into description or address field (if equal one).

3: Protocol subsystem tests

  • Execution of the test controller object DAQ.ModBUS.testTCP:
means presence of the controller object DAQ.ModBUS.testTCP.
  • Execution of the test controller object DAQ.OPC_UA.test:
means presence of the controller object DAQ.OPC_UA.test.
  • Send requests to a test-echo protocol from a transport:
means presence of the user protocol object Protocol.UserProtocol.up_test.

4: Archive subsystem tests

  • Using the test "Mess" of the module "SystemTests" for archiving messages:
means presence the message archivers "test";
  • Assign/Clear archiving from the parameter attribute:
means presence "/DAQ/LogicLev/experiment/F3" with the attribute "ed", and the value archivers "1s"
  • The tests "Archive" of the value archiver to verify the correctness of the functioning of the sequential mechanism for packaging by "SystemTests":
means presence the archive "testArch_cntr" with the data period 1s and processed by the archiver FSArch.1s.

5: DB subsystem tests

  • The tests "BD" of the module "SystemTests":
means presence of the test DB with the name "testRelease".

6: DAQ subsystem tests

  • Test "Param" from the module "SystemTests":
presence of the DAQ parameter LogicLev.experiment.F3.
  • Test "Val" of the module "SystemTests" for the parameter attribute:
presence of the DAQ parameter LogicLev.experiment.F3.var.
  • Blocks create/remove, change, load, save and load from config and copy, set link:
presence the DAQ controller object "KM102cntr" for copy the block scheme.
presence the DAQ parameter LogicLev.experiment.F3.var.

7: UI subsystem tests
8: Special subsystem tests

Function parameters

Identifier Name Type Mode Default
sub Subsystem (-1:All;0:SYS;1:Security;2:Transport;... Integer Input -1
rez Result Text Output
rezF Result for HTML file Text Output


3 CRC 16 (crc16)

1.0 GPLv2 * en Roman Savochenko

Standard Cyclic Redundancy Check (CRC) with free setting the polynomial, by default 0x8005. It isn't actual more by the common common CRC implementing.

Function parameters

Identifier Name Type Mode Default
in Input String Input
out Result Integer Output
poly Polynomial (reversion) Integer Input 40961


4 Archives recalculation (procArh)

1.0 GPLv2 * en Roman Savochenko

Value archives recalculation.

Function parameters

Identifier Name Type Mode Default
fromarch From archive String Input Archive.va_ai3_code
toarch To archive String Input Archive.va_ai3_dP
begs Begin time String Input 2006-08-08 9:21:56
ends End time String Input 2006-08-08 11:21:55


5 EXT: WackoWiki to MediaWiki (wacko2media)

1.1 GPLv2 * en Roman Savochenko

Procedure of conversion Wiki-dialect from WackoWiki to MediaWiki. Used and using to move OpenSCADA Wiki to MediaWiki.

Function parameters

Identifier Name Type Mode Default
ndb MySQL DB id String Input wiki
wpg Wiki page String Input HomePageUk/Doc/SQLite
rez Result Text Return


6 EXT: Off-line documentation (docOffLine)

1.0 GPLv2 * en Roman Savochenko

Procedure of forming the offline documentation of OpenSCADA from Wiki by reading and processing the specified Wiki pages on different languages, currently it is: English, Ukrainian, Russian.

Function parameters

Identifier Name Type Mode Default
res Result String Output
reqTr Tries of requests Integer Output 3
resDir Results directory String Input /home/roman/roman/work/Проекти/OpenSCADA/doc/
pages Pages list of "{wiki}:{langs}:{dest}" Text Input
Documents:en,uk,ru:index.html
Documents/Release_0.9:en,uk,ru:Release_0.9.html
About:en,uk,ru:About.html
Documents/Terms:en,uk,ru:Terms.html
Functions_and_demands:en,uk,ru:Functions_and_demands.html
Works/To_do:en:To_do.html
Documents/FAQ:en,uk,ru:FAQ.html
Documents/Quick_start:en,uk,ru:Quick_start.html
Documents/Program_manual:en,uk,ru:Program_manual.html
Documents/How_to:en,ru,uk:How_to.html
Documents/How_to/Install:en,ru,uk:How_to_Install.html
Documents/How_to/Live_disk:en,ru,uk:How_to_Live_disk.html
Documents/How_to/Violations,_alarms_and_notifications:en,ru,uk:How_to_Violations.html
Documents/How_to/Cyclic_programming:en,ru,uk:How_to_Cyclic_programming.html
Documents/How_to/Debug:en,ru,uk:How_to_Debug.html
Documents/How_to/Transferring_project_configuration:en,ru,uk:How_to_Transferring_project_configuration.html
Documents/How_to/Build_from_source:en,ru,uk:How_to_Build_from_source.html
Documents/How_to/Crash_report:en,ru,uk:How_to_Crash_report.html
Documents/How_to/Create_module:en,ru,uk:How_to_Create_module.html
Documents/DAQ:en,uk,ru:DAQ.html
Documents/User_API:en,uk,ru:User_API.html
Documents/API:en:API.html
Modules/SQLite:en,uk,ru:Modules/SQLite.html
Modules/MySQL:en,uk,ru:Modules/MySQL.html
Modules/FireBird:en,uk,ru:Modules/FireBird.html
Modules/DBF:en,uk,ru:Modules/DBF.html
Modules/PostgreSQL:en,uk,ru:Modules/PostgreSQL.html
Modules/Sockets:en,uk,ru:Modules/Sockets.html
Modules/Serial:en,uk,ru:Modules/Serial.html
Modules/SSL:en,uk,ru:Modules/SSL.html
Modules/SelfSystem:en,uk,ru:Modules/SelfSystem.html
Modules/UserProtocol:en,uk,ru:Modules/UserProtocol.html
Modules/HTTP:en,uk,ru:Modules/HTTP.html
Modules/JavaLikeCalc:en,uk,ru:Modules/JavaLikeCalc.html
Modules/LogicLev:en,uk,ru:Modules/LogicLev.html
Modules/BlockCalc:en,uk,ru:Modules/BlockCalc.html
Modules/DAQGate:en,uk,ru:Modules/DAQGate.html
Modules/System:en,uk,ru:Modules/System.html
Modules/ModBus:en,uk,ru:Modules/ModBus.html
Modules/DCON:en,uk,ru:Modules/DCON.html
Modules/OPC_UA:en,uk,ru:Modules/OPC_UA.html
Modules/SNMP:en,uk,ru:Modules/SNMP.html
Modules/ICP_DAS:en,uk,ru:Modules/ICP_DAS.html
Modules/Siemens:en,uk,ru:Modules/Siemens.html
Modules/DiamondBoards:en,uk,ru:Modules/DiamondBoards.html
Modules/Comedi:en,uk,ru:Modules/Comedi.html
Modules/SoundCard:en,uk,ru:Modules/SoundCard.html
Modules/BFN:en,uk,ru:Modules/BFN.html
Modules/SMH2Gi:en,uk,ru:Modules/SMH2Gi.html
Modules/GPIO:en,uk,ru:Modules/GPIO.html
Modules/FSArch:en,uk,ru:Modules/FSArch.html
Modules/DBArch:en,uk,ru:Modules/DBArch.html
Modules/VCAEngine:en,uk,ru:Modules/VCAEngine.html
Modules/QTStarter:en,uk,ru:Modules/QTStarter.html
Modules/QTCfg:en,uk,ru:Modules/QTCfg.html
Modules/Vision:en,uk,ru:Modules/Vision.html
Modules/WebCfgD:en,uk,ru:Modules/WebCfgD.html
Modules/WebCfg:en,uk,ru:Modules/WebCfg.html
Modules/WebVision:en,uk,ru:Modules/WebVision.html
Modules/WebUser:en,uk,ru:Modules/WebUser.html
Modules/FLibSYS:en,uk,ru:Modules/FLibSYS.html
Modules/SystemTests:en,uk,ru:Modules/SystemTests.html
Modules/FLibMath:en,uk,ru:Modules/FLibMath.html
Modules/FLibComplex1:en,uk,ru:Modules/FLibComplex1.html
pagesCur Current pages list of "{wiki}:{langs}:{dest}", for empty here used "pages" Text Input