Howto Install Centos7

If you want to install Centos7 and try you can follow the instructions from the below web page:


How to Install OPC UA on Centos7

You need to get Binaries for OPC UA. You can find one from: Get the zip file and try to run the binary. If it is not running then probably you missed some dependencies.


We have som Dependencies the main ones are :

  • GCC
  • Boost Libraries
  • Felix Software

  • Some of the common tools for development are :
sudo yum install gcc-c++ gdb boost-devel boost-regex boost-program-options boost-signals jre cmake kdiff3 graphviz valgrind doxygen rpm-build subversion xsd openssl-devel libxml2-devel xerces-c-devel python2-pip libgit2 libgit2-devel

Install Felix Software

The Server and client software has some dependencies :


  • Then you need to install that rpm file
rpm -U

  • If you see the error like that :
error: Failed dependencies:
   numactl is needed by

Then it means some of the dependencies are not satisfied.

sudo yum install numactl

  • Then you need to define the felix libraries in env variables
    2# Setup Library path in .bashrc file
    4export LD_LIBRARY_PATH=/usr/lib:/opt/felix/lib:$LD_LIBRARY_PATH
  • Then we need to configure the xml configuration file

note that if you did not install the cvmfs then you probably see the error :

./OpcUaScaServer: error while loading shared libraries: cannot open shared object file: No such file or directory

Install CVMFS

to install the CVMFS you need to do the following:

  • Install the CernVM -FS packages. With yum, run
sudo yum install cvmfs cvmfs-config-default

  • For the base setup, run cvmfs_config setup. If you migrate from a previous version of CernVM -FS, check the release notes if there is anything special to do for migration.
  • Create /etc/cvmfs/default.local and open the file for editing.
  • Select the desired repositories by setting CVMFS_REPOSITORIES=repo1,repo2,.... For ATLAS, for instance, set,,

Specify the HTTP proxy servers on your site with


Inside CERN, it is "".

  • Check if CernVM -FS mounts the specified repositories by
 cvmfs_config probe 


  • If the probe fails, try to restart autofs with
    1sudo service autofs restart.

Install From RPM

If you already installed Felix software, then you can install the OPC server from the RPM file.

  • If you get the zip file containing the rpm unzip
cd /RPM/build_from_git/rpmbuild/RPMS/x86_64/
rpm -U  OpcUaScaServer-1.3.2-rc1.x86_64.rpm

the software is installed under "/opt/OpcUaScaServer/" . If you have a problem you can also define the PATH and LD_LIBRARY_PATH in the .bashrc file.

  • If you want to uninstall it use the command :
rpm -e  OpcUaScaServer-1.3.2-rc1.x86_64.rpm


How can you install different gcc releases and switch between them :

sudo yum install centos-release-scl
sudo yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash
which gcc
gcc --version

SCA Simulator

To use the simulator, you need to download the Sca Software from the link :

under :


directory you can find the executable run as :

./simulator_netio -t TRC

here -t option is trace level :

  • ERR : Error
  • WRN : Warning
  • INF : Info
  • DBG : Debug
  • TRC : trace

the other options are:

[shift@localhost SimulatorOverNetIo]$ ./simulator_netio --help
  -h [ --help ]                        show help
  -t [ --trace_level ] arg (=INF)      Trace level, one of: ERR,WRN,INF,DBG,TRC
  -x [ --requests_port ] arg (=29000)  TCP/IP port on which netio will listen 
                                       for requests
  -y [ --replies_port ] arg (=29001)   TCP/IP port to which netio will publish 
                                       the replies
  -e [ --elink_id ] arg (=1)           Elink-id at which this simulated SCA 
  --noise_replies                      If selected, random traffic will be 
                                       injected into replies. Simulates 
                                       unconnected elink/fibre/ broken 
  --noise_replies_interval arg (=1000) The delay between consecutive 
                                       transmission of noise frames in 
  --requests_loss                      If selected, certain requests will be 
                                       ignored (simulating loss). The 
                                       probability is chosen by 
  --requests_loss_prob arg (=0.001)    Chance of losing a request. 1.0 
                                       corresponds to full loss, 0.0 to no 
                                       loss. Valid only when --requests_loss 

  • OPC Simulator: to run simulator

Simple Simulator Test

To run the SCA server you need the configuration file which describes the server to which server it need to connect and by using which port:
    1<SCA address="simple-netio://direct/" name="scaFelix1"

here using

  • Comminucation protocol : simple-netio://direct/
  • interface ip :
  • TCP request listening port :29000
  • TCP reply listening port : 29000
  • elink id :01

    1<?xml version="1.0" encoding="UTF-8"?>
    2<configuration xmlns="" xmlns:xsi="" xsi:schemaLocation=" Configuration.xsd">
    3	<StandardMetaData>
    4		<Log>
    5			<GeneralLogLevel logLevel="INF" />
    6		</Log>
    7	</StandardMetaData>
    9	<SCA address="simple-netio://direct/" name="scaFelix1" supervised="true" idConstraint="dont_care" recoveryActionScaStayedPowered="only_configure" recoveryActionScaWasRepowered="reset_and_configure" managementFromAddressSpace="only_if_kaputt">
   12		<DigitalIOSystem name="gpio">
   13			<DigitalIO name="RSTB_ADCL3A3" isInput="false" id="0" ></DigitalIO>
   14			<DigitalIO name="RSTB_ADCL3A4" isInput="false" id="1" ></DigitalIO>
   15			<DigitalIO name="RSTB_ADCL2A4" isInput="false" id="2" ></DigitalIO>
   16			<DigitalIO name="RSTB_ADCL2A3" isInput="false" id="3" ></DigitalIO>
   17			<DigitalIO name="RSTB_ADCL4A4" isInput="false" id="4" ></DigitalIO>
   18			<DigitalIO name="RSTB_ADCL1A3" isInput="false" id="5" ></DigitalIO>
   19			<DigitalIO name="RSTB_ADCL1A4" isInput="false" id="6" ></DigitalIO>
   20			<DigitalIO name="RSTB_ADCL4A3" isInput="false" id="7" ></DigitalIO>
   21			<DigitalIO name="RSTB_ADCL1A1" isInput="false" id="8" ></DigitalIO>
   22			<DigitalIO name="RSTB_ADCL1A2" isInput="false" id="9" ></DigitalIO>
   23			<DigitalIO name="RSTB_ADCL3A2" isInput="false" id="10"></DigitalIO>
   24			<DigitalIO name="RSTB_ADCL2A2" isInput="false" id="11"></DigitalIO>
   25			<DigitalIO name="RSTB_ADCL2A1" isInput="false" id="12"></DigitalIO>
   26			<DigitalIO name="RSTB_ADCL4A1" isInput="false" id="13"></DigitalIO>
   27			<DigitalIO name="RSTB_ADCL3A1" isInput="false" id="14"></DigitalIO>
   28			<DigitalIO name="RSTB_ADCL4A2" isInput="false" id="15"></DigitalIO>
   29			<DigitalIO name="MTX-RST" isInput="false" id="21"></DigitalIO>
   30			<DigitalIO name="MTRX-RST" isInput="false" id="22"></DigitalIO>
   31			<DigitalIO name="Ctrl1" isInput="false" id="24"></DigitalIO>
   32			<DigitalIO name="Ctrl2" isInput="false" id="25"></DigitalIO>
   33			<DigitalIO name="Ctrl3" isInput="false" id="26"></DigitalIO>
   34			<DigitalIO name="Ctrl4" isInput="false" id="27"></DigitalIO>
   35			<DigitalIO name="Ctrl5" isInput="false" id="23"></DigitalIO>
   37		</DigitalIOSystem>
   39		<DacSystem name="dacSystem">
   40			<DacOutput name="A" id="A"></DacOutput>
   41			<DacOutput name="B" id="B"></DacOutput>
   42			<DacOutput name="C" id="C"></DacOutput>
   43			<DacOutput name="D" id="D"></DacOutput>
   44		</DacSystem>
   46		<I2cMaster sclPadCmosOutput="false"  name="MTRx"  masterId="8" busSpeed="200">
   47			<I2cSlave numberOfBytes="1" address="4" name="register04" addressingMode="7"></I2cSlave>
   48			<I2cSlave numberOfBytes="1" address="5" name="register05" addressingMode="7"></I2cSlave>
   49		</I2cMaster>
   52		<I2cMaster sclPadCmosOutput="false"  name="MTxLOCx2_1"  masterId="4" busSpeed="200">
   54			<I2cSlave numberOfBytes="1" address="4" name="register04" addressingMode="7"></I2cSlave>
   55			<I2cSlave numberOfBytes="1" address="5" name="register05" addressingMode="7"></I2cSlave>
   56			<I2cSlave numberOfBytes="1" address="6" name="register06" addressingMode="7"></I2cSlave>
   57			<I2cSlave numberOfBytes="1" address="7" name="register07" addressingMode="7"></I2cSlave>
   58			<I2cSlave numberOfBytes="1" address="8" name="register08" addressingMode="7"></I2cSlave>
   59			<I2cSlave numberOfBytes="1" address="9" name="register09" addressingMode="7"></I2cSlave>
   60			<I2cSlave numberOfBytes="1" address="10" name="register0a" addressingMode="7"></I2cSlave>
   61			<I2cSlave numberOfBytes="1" address="11" name="register0b" addressingMode="7"></I2cSlave>
   63			<I2cSlave numberOfBytes="1" address="11" name="ctrl_1" addressingMode="7"></I2cSlave>
   65		</I2cMaster>
   66		<I2cMaster sclPadCmosOutput="false"  name="MTxLOCx2_2"  masterId="5" busSpeed="200">
   68			<I2cSlave numberOfBytes="1" address="4" name="register04" addressingMode="7"></I2cSlave>
   69			<I2cSlave numberOfBytes="1" address="5" name="register05" addressingMode="7"></I2cSlave>
   70			<I2cSlave numberOfBytes="1" address="6" name="register06" addressingMode="7"></I2cSlave>
   71			<I2cSlave numberOfBytes="1" address="7" name="register07" addressingMode="7"></I2cSlave>
   72			<I2cSlave numberOfBytes="1" address="8" name="register08" addressingMode="7"></I2cSlave>
   73			<I2cSlave numberOfBytes="1" address="9" name="register09" addressingMode="7"></I2cSlave>
   74			<I2cSlave numberOfBytes="1" address="10" name="register0a" addressingMode="7"></I2cSlave>
   75			<I2cSlave numberOfBytes="1" address="11" name="register0b" addressingMode="7"></I2cSlave>
   76		</I2cMaster>
   77		<I2cMaster sclPadCmosOutput="false"  name="MTxLOCx2_3"  masterId="6" busSpeed="200">
   79			<I2cSlave numberOfBytes="1" address="4" name="register04" addressingMode="7"></I2cSlave>
   80			<I2cSlave numberOfBytes="1" address="5" name="register05" addressingMode="7"></I2cSlave>
   81			<I2cSlave numberOfBytes="1" address="6" name="register06" addressingMode="7"></I2cSlave>
   82			<I2cSlave numberOfBytes="1" address="7" name="register07" addressingMode="7"></I2cSlave>
   83			<I2cSlave numberOfBytes="1" address="8" name="register08" addressingMode="7"></I2cSlave>
   84			<I2cSlave numberOfBytes="1" address="9" name="register09" addressingMode="7"></I2cSlave>
   85			<I2cSlave numberOfBytes="1" address="10" name="register0a" addressingMode="7"></I2cSlave>
   86			<I2cSlave numberOfBytes="1" address="11" name="register0b" addressingMode="7"></I2cSlave>
   87		</I2cMaster>
   88		<I2cMaster sclPadCmosOutput="false"  name="MTxLOCx2_4"  masterId="7" busSpeed="200">
   90			<I2cSlave numberOfBytes="1" address="4" name="register04" addressingMode="7"></I2cSlave>
   91			<I2cSlave numberOfBytes="1" address="5" name="register05" addressingMode="7"></I2cSlave>
   92			<I2cSlave numberOfBytes="1" address="6" name="register06" addressingMode="7"></I2cSlave>
   93			<I2cSlave numberOfBytes="1" address="7" name="register07" addressingMode="7"></I2cSlave>
   94			<I2cSlave numberOfBytes="1" address="8" name="register08" addressingMode="7"></I2cSlave>
   95			<I2cSlave numberOfBytes="1" address="9" name="register09" addressingMode="7"></I2cSlave>
   96			<I2cSlave numberOfBytes="1" address="10" name="register0a" addressingMode="7"></I2cSlave>
   97			<I2cSlave numberOfBytes="1" address="11" name="register0b" addressingMode="7"></I2cSlave>
   98		</I2cMaster>
  100		<I2cMaster sclPadCmosOutput="false"  name="ADC_LOCx2_1"  masterId="0" busSpeed="400">
  102			<I2cSlave numberOfBytes="1" address="64" name="ctrl_adc1" addressingMode="7"></I2cSlave>
  103			<I2cSlave numberOfBytes="1" address="80" name="ctrl_adc2" addressingMode="7"></I2cSlave>
  104			<I2cSlave numberOfBytes="1" address="96" name="ctrl_adc3" addressingMode="7"></I2cSlave>
  105			<I2cSlave numberOfBytes="1" address="112" name="ctrl_adc4" addressingMode="7"> </I2cSlave>
  108			<I2cSlave numberOfBytes="8" address="512" name="write_1" addressingMode="10"></I2cSlave>
  109			<I2cSlave numberOfBytes="8" address="520" name="read_1" addressingMode="10"></I2cSlave>
  110			<I2cSlave numberOfBytes="8" address="640" name="write_2" addressingMode="10"></I2cSlave>
  111			<I2cSlave numberOfBytes="8" address="648" name="read_2" addressingMode="10"></I2cSlave>
  112			<I2cSlave numberOfBytes="8" address="768" name="write_3" addressingMode="10"></I2cSlave>
  113			<I2cSlave numberOfBytes="8" address="776" name="read_3" addressingMode="10"></I2cSlave>
  114			<I2cSlave numberOfBytes="8" address="896" name="write_4" addressingMode="10"></I2cSlave>
  115			<I2cSlave numberOfBytes="8" address="904" name="read_4" addressingMode="10"></I2cSlave>	
  117		</I2cMaster>
  119		<I2cMaster sclPadCmosOutput="false"  name="ADC_LOCx2_2"  masterId="1" busSpeed="400">
  121			<I2cSlave numberOfBytes="1" address="64" name="ctrl_adc1" addressingMode="7"></I2cSlave>
  122			<I2cSlave numberOfBytes="1" address="80" name="ctrl_adc2" addressingMode="7"></I2cSlave>
  123			<I2cSlave numberOfBytes="1" address="96" name="ctrl_adc3" addressingMode="7"></I2cSlave>
  124			<I2cSlave numberOfBytes="1" address="112" name="ctrl_adc4" addressingMode="7"></I2cSlave>
  127			<I2cSlave numberOfBytes="8" address="512" name="write_1" addressingMode="10"></I2cSlave>
  128			<I2cSlave numberOfBytes="8" address="520" name="read_1" addressingMode="10"></I2cSlave>
  129			<I2cSlave numberOfBytes="8" address="640" name="write_2" addressingMode="10"></I2cSlave>
  130			<I2cSlave numberOfBytes="8" address="648" name="read_2" addressingMode="10"></I2cSlave>
  131			<I2cSlave numberOfBytes="8" address="768" name="write_3" addressingMode="10"></I2cSlave>
  132			<I2cSlave numberOfBytes="8" address="776" name="read_3" addressingMode="10"></I2cSlave>
  133			<I2cSlave numberOfBytes="8" address="896" name="write_4" addressingMode="10"></I2cSlave>
  134			<I2cSlave numberOfBytes="8" address="904" name="read_4" addressingMode="10"></I2cSlave>	
  136		</I2cMaster>
  137		<I2cMaster sclPadCmosOutput="false"  name="ADC_LOCx2_3"  masterId="2" busSpeed="400">
  139			<I2cSlave numberOfBytes="1" address="64" name="ctrl_adc1" addressingMode="7"></I2cSlave>
  140			<I2cSlave numberOfBytes="1" address="80" name="ctrl_adc2" addressingMode="7"></I2cSlave>
  141			<I2cSlave numberOfBytes="1" address="96" name="ctrl_adc3" addressingMode="7"></I2cSlave>
  142			<I2cSlave numberOfBytes="1" address="112" name="ctrl_adc4" addressingMode="7"></I2cSlave>
  145			<I2cSlave numberOfBytes="8" address="512" name="write_1" addressingMode="10"></I2cSlave>
  146			<I2cSlave numberOfBytes="8" address="520" name="read_1" addressingMode="10"></I2cSlave>
  147			<I2cSlave numberOfBytes="8" address="640" name="write_2" addressingMode="10"></I2cSlave>
  148			<I2cSlave numberOfBytes="8" address="648" name="read_2" addressingMode="10"></I2cSlave>
  149			<I2cSlave numberOfBytes="8" address="768" name="write_3" addressingMode="10"></I2cSlave>
  150			<I2cSlave numberOfBytes="8" address="776" name="read_3" addressingMode="10"></I2cSlave>
  151			<I2cSlave numberOfBytes="8" address="896" name="write_4" addressingMode="10"></I2cSlave>
  152			<I2cSlave numberOfBytes="8" address="904" name="read_4" addressingMode="10"></I2cSlave>	
  154		</I2cMaster>
  155		<I2cMaster sclPadCmosOutput="false"  name="ADC_LOCx2_4"  masterId="3" busSpeed="400">
  157			<I2cSlave numberOfBytes="1" address="64" name="ctrl_adc1" addressingMode="7"></I2cSlave>
  158			<I2cSlave numberOfBytes="1" address="80" name="ctrl_adc2" addressingMode="7"></I2cSlave>
  159			<I2cSlave numberOfBytes="1" address="96" name="ctrl_adc3" addressingMode="7"></I2cSlave>
  160			<I2cSlave numberOfBytes="1" address="112" name="ctrl_adc4" addressingMode="7"></I2cSlave>
  163			<I2cSlave numberOfBytes="8" address="512" name="write_1" addressingMode="10"></I2cSlave>
  164			<I2cSlave numberOfBytes="8" address="520" name="read_1" addressingMode="10"></I2cSlave>
  165			<I2cSlave numberOfBytes="8" address="640" name="write_2" addressingMode="10"></I2cSlave>
  166			<I2cSlave numberOfBytes="8" address="648" name="read_2" addressingMode="10"></I2cSlave>
  167			<I2cSlave numberOfBytes="8" address="768" name="write_3" addressingMode="10"></I2cSlave>
  168			<I2cSlave numberOfBytes="8" address="776" name="read_3" addressingMode="10"></I2cSlave>
  169			<I2cSlave numberOfBytes="8" address="896" name="write_4" addressingMode="10"></I2cSlave>
  170			<I2cSlave numberOfBytes="8" address="904" name="read_4" addressingMode="10"></I2cSlave>	
  172		</I2cMaster>
  173	</SCA>

* Configuration of XML file before editing seems like below, it comminucate simple-netio interface . ..

Run Server

  • Demo Server from Unified Automation page: run uaserver

Here xml file that i modified is configZek.xml and the original example is

Run UaExpert :

To get Ua Expert you need to go the webpage and download the UaExpert software available both for Windows and Linux.

  • Extract the Ua Expert into directory and find the UaExpert-x86_64.AppImage. You need to run this:
It will first asks you to install certificates. Then you also can manage certificates in Manage Certificate section :
  • UA expert certificate

  • UA Expert user interface :

  • To Add Server to UA Expert :
  • To List the servers at UA Expert:

  • UA Expert accessed the simulator and lists the demo datas:

Useful Links

-- ZekeriyaUysal - 2019-02-08

Topic attachments
I Attachment History Action Size Date Who Comment
PNGpng Add_Server_008.png r1 manage 55.2 K 2019-04-17 - 13:04 ZekeriyaUysal OPC Simulator
PNGpng Add_Server_010.png r1 manage 109.9 K 2019-04-17 - 13:04 ZekeriyaUysal OPC Simulator
PNGpng Manage_Certificates_014.png r1 manage 49.9 K 2019-04-17 - 13:06 ZekeriyaUysal Opc simulator
PNGpng Unified_Automation_UaExpert_-_The_OPC_Unified_Architecture_Client_-_NewProject-_013.png r1 manage 218.5 K 2019-04-17 - 13:04 ZekeriyaUysal OPC Simulator
PNGpng Workspace_1_003.png r1 manage 177.2 K 2019-04-17 - 13:04 ZekeriyaUysal OPC Simulator
Unknown file formatcern r1 manage 57.6 K 2019-04-17 - 13:40 ZekeriyaUysal Config files
XMLxml configZek.xml r1 manage 10.9 K 2019-04-17 - 13:40 ZekeriyaUysal Config files
PNGpng configZek.xml1.png r1 manage 186.9 K 2019-04-17 - 13:30 ZekeriyaUysal OPC Simulator
PNGpng configZek.xml2.png r1 manage 127.0 K 2019-04-17 - 13:30 ZekeriyaUysal OPC Simulator
PNGpng configZek.xml3.png r1 manage 169.3 K 2019-04-17 - 13:37 ZekeriyaUysal example xml file
PNGpng configZek.xml_modified_–_KWrite_019.png r1 manage 186.9 K 2019-04-17 - 13:04 ZekeriyaUysal OPC Simulator
PNGpng configZek.xml_–_KWrite_023.png r1 manage 169.3 K 2019-04-17 - 13:04 ZekeriyaUysal OPC Simulator
PNGpng shiftlocalhost:-Downloads-ScaSoftware-build-Demonstrators-SimulatorOverNetIo_017.png r1 manage 40.8 K 2019-04-17 - 13:04 ZekeriyaUysal OPC Simulator
PNGpng shiftlocalhost:-Downloads-opc-sdk-bin_009.png r1 manage 28.9 K 2019-04-17 - 13:04 ZekeriyaUysal OPC Simulator
PNGpng shiftlocalhost:-Downloads-opc_022.png r1 manage 104.1 K 2019-04-17 - 13:05 ZekeriyaUysal OPC Simulator
PNGpng uaexpert_002.png r1 manage 43.8 K 2019-04-17 - 13:04 ZekeriyaUysal OPC Simulator
Edit | Attach | Watch | Print version | History: r26 < r25 < r24 < r23 < r22 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r26 - 2019-04-17 - ZekeriyaUysal
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Sandbox All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback