Computer literacy, assistance and repair

PLC programming language. Operating principle and basics of PLC programming

Where did industrial automation begin? It all started with contact-relay circuits for controlling industrial processes. In addition to the terrible “rustling”, the contact relay circuits had a fixed logic of operation, and if the algorithm changes, it is necessary to thoroughly redo the wiring diagram

The rapid development of microprocessor technology has led to the creation of process control systems based on industrial controllers. But this does not mean that relays have become obsolete, they simply have their own niche for use.

PLC – programmable logic controller, are a microprocessor device designed to collect, convert, process, store information and generate control commands, having a finite number of inputs and outputs, connected sensors, keys, actuators to the control object, and designed to operate in real time.

The operating principle of a PLC is somewhat different from “conventional” microprocessor devices. The software for universal controllers consists of two parts. The first part is the system software. Drawing an analogy with a computer, we can say that this operating system, i.e. controls the operation of controller units, the interconnection of component parts, and internal diagnostics. PLC system software is located in permanent memory central processor and always ready to go. Upon power-up, the PLC is ready to take over control of the system within a few milliseconds. PLCs operate cyclically using the method of periodically polling input data.
The PLC operating cycle includes 4 phases:
1. Polling inputs
2. Execute the user program
3. Setting output values
4. Some auxiliary operations (diagnostics, data preparation for the debugger, visualization, etc.).

The execution of phase 1 is ensured by the system software. After which control is transferred to the application program, the program that you yourself wrote into memory, according to this program the controller does what you want, and upon its completion, control is again transferred to the system level. This ensures maximum simplicity in building an application program - its creator does not have to know how to manage hardware resources. You need to know which input the signal comes from and how to react to it at the outputs

Obviously, the response time to an event will depend on the execution time of one cycle of the application program. The definition of reaction time - the time from the moment of an event to the moment the corresponding control signal is issued - is illustrated in the figure:

Possessing memory, the PLC, depending on the history of events, is able to react differently to current events. Reprogramming capabilities, time control, advanced computing capabilities, including digital signal processing, raise PLCs to a higher level in contrast to simple combinational machines.

Consider the input and output of the PLC. There are three types of inputs: discrete, analog and special
One PLC discrete input is capable of receiving one binary electrical signal, described by two states - on or off. All discrete inputs (general version) of the controllers are usually designed to accept standard signals with a level of 24 V DC. The typical current value for one digital input (at 24 V input voltage) is approximately 10 mA.

An analog electrical signal represents the level of voltage or current corresponding to some physical quantity at any given time. This could be temperature, pressure, weight, position, speed, frequency, etc.

Since a PLC is a digital computer, analog input signals necessarily undergo analog-to-digital conversion (ADC). As a result, a discrete variable of a certain capacity is formed. As a rule, PLCs use 8-12 bit converters, which in most cases, based on modern requirements for the accuracy of technological process control, is sufficient. In addition, ADCs of higher bit capacity do not justify their worth, primarily due to the high level of industrial noise characteristic of the operating conditions of the controllers.

Almost all analog input modules are multi-channel. The input switch connects the ADC input to the required module input.

Standard PLC digital and analog inputs can satisfy most industrial automation system needs. The need to use specialized inputs arises in cases where direct processing of a certain signal in software is difficult, for example, it requires a lot of time.

Most often, PLCs are equipped with specialized counting inputs for measuring duration, capturing edges and counting pulses.

For example, when measuring the position and speed of rotation of a shaft, very common devices are those that generate a certain number of pulses per revolution - rotary encoders. The pulse repetition rate can reach several megahertz. Even if the PLC processor is fast enough, directly counting pulses in the user program will be very wasteful in time. Here it is desirable to have a specialized hardware input unit capable of carrying out primary processing and generating the quantities necessary for the applied task.
The second common type of specialized inputs are inputs capable of very quickly running specified user tasks with interruption of the execution of the main program - interrupt inputs.

The discrete output also has two states - on and off. They are needed to control: solenoid valves, coils, starters, warning lights, etc. In general, the scope of their application is huge, and covers almost all industrial automation.

Structurally, PLCs are divided into monoblock, modular and distributed. Monoblock have a fixed set of inputs and outputs

In modular controllers, input-output modules are installed in different compositions and quantities depending on the task ahead

In distributed systems, modules or even individual inputs and outputs that form a single control system can be separated over considerable distances

PLC programming languages

When creating a technological process control system, there is always a problem of mutual understanding between the programmer and technologists. The technologist will say “we need to add a little, mix a little, add some more and heat it up a little.” And there is little time to expect a formalized description of the algorithm from a technologist. And it turned out that the programmer needed to delve into those for a long time. Process, then write a program. Often, with this approach, the programmer remains the only person capable of understanding his creation, with all the ensuing consequences. This situation has given rise to the desire to create technological programming languages ​​that are accessible to engineers and technologists and that simplify the programming process as much as possible.

Several technology languages ​​have emerged over the past decade. Moreover, the International Electrotechnical Commission has developed the IEC-61131-3 standard, which concentrates everything advanced in the field of programming languages ​​for process automation systems. This standard requires different PLC manufacturers to offer commands that are the same and appearance, and by action.

The standard specifies 5 programming languages:

  • Sequential Function Chart (SFC) – language of sequential function blocks;
  • Function Block Diagram (FBD) – functional block diagram language;
  • Ladder Diagrams (LAD) – language of ladder diagrams;
  • Statement List (STL) is a structured text language, a high-level language. Reminds me of Pascal
  • Instruction List (IL) is an instruction language. It is a typical assembler with an accumulator and jumps by label.

The language LAD or KOP (from German Kontaktplan) is similar to electrical circuits relay logic. Therefore, it will not be difficult for engineers who do not know sophisticated programming languages ​​to write a program. The FBD language is reminiscent of creating circuits using logic elements. Each of these languages ​​has its own pros and cons. Therefore, when choosing, experts are based mainly on personal experience. Although most software packages make it possible to convert an already written program from one language to another. Since some problems can be solved elegantly and simply in one language, while in another you will have to face some difficulties

The most widely used languages ​​at present are LAD, STL and FBD.

Most PLC manufacturers traditionally have their own proprietary developments in the field of tool software. For example, such as “Concept” Schneider Electric, “Step 7” Siemens.

CoDeSys software package

The openness of IEC standards has led to the creation of companies dedicated exclusively to PLC programming tools.

They are the most popular in the world. CoDeSys was developed by 3S. This is a universal tool for programming controllers in IEC languages, not tied to any hardware platform and meeting all modern requirements.

Key Features:
- full implementation of IEC languages
- built-in controller emulator allows you to debug the project without hardware. Moreover, it is not some abstract controller that is emulated, but a specific PLC taking into account the hardware platform
- built-in visualization elements make it possible to create a model of the control object and carry out debugging, i.e. makes it possible to create a human-machine interface (HMI)
- a very wide range of service functions, speeding up the programmer’s work
- there is a Russian version of the program, and Russian documentation

Literature:
Modern technologies of industrial automation: textbook / O. V. Shishov. Saransk: Mordov Publishing House. Univ., 2007. – 273 p. ISBN 5-7103-1123-5

PLCs have several basic programming languages. Firstly, it is something similar to high-level programming languages. It is called structured text language (in bourgeois ST). An extremely convenient thing if you have programming skills. Actually, it was invented for programmers. However, when the PLC was developed and implemented, the profession of a programmer (in the sense of an intelligent programmer with good technical training) was even more scarce than in our harsh times. Therefore, the practical Yankees and the whole world subsequently developed several types of graphic languages. A relay diagram language (LD in bourgeois) was created for electricians. Nothing complicated in general - an input bus, an output bus, between them - a circuit of relays, normally closed or open, and timers, of course, all sorts of triggers. The advantage is simplicity - if only there was a diagram, the program would be written. The downside is the difficulty of working with analog signals.

Another type of graphical language is the language of function blocks (in bourgeois FBD). It reminds me very much of working, for example, with the Simulink package of the Matlab software package; for a friend opposite, it reminds me of Vissim. Yes, in general, it’s difficult to get a technical education without ever encountering this kind of software. The basis of everything is blocks connected in the required sequence by communication lines. If you are a techie, perhaps the easiest to learn and actively use. Plus – clarity, intuitive clarity of the implemented algorithms. Disadvantages: working with cycles. It’s possible, of course, but on ST this kind of program is written easier and shorter.
The latest version of the graphical language is algorithmic (SFC). This is the highest level graphic language. Each step is a small (or large) program. A very beautiful language, rightly adored by technologists of all stripes. Allows you to create tightly structured projects that are easy to debug. There is only one minus - you should take up studying it only after sufficiently mastering the ST, LD or FBD language. Programs for a separate step still need to be written on them.

Oh yes. I almost forgot. There is also something similar to assembler. It is called a list of instructions (in bourgeois IL). If you're a fan of endless battery life, this is for you. Disadvantages: long program code that looks good only in dissertation appendices, debugging problems. In short, in my understanding, it is the fifth wheel in the PLC programming cart. I may be wrong.

Program or project?

Let's immediately separate the cutlets from the flies. The code that we heroically write is, of course, a program. Or rather, more precisely, a program is a code that defines the PLC operating cycle. The controller may have not one, not two, but many. They can change due to time, external or program events. That is, the program is a rather private thing. The totality of what is “poured” into the controller is usually called a project. In addition to a set of programs, the project includes connected libraries, data types, visualizations, configurations, settings for a specific PLC, and much more.

15 09.2016

Before programming a PLC in the CoDeSyS 2.3 development environment, beginners often ask themselves: What systems need to be installed to work correctly with the device? How to configure the controller inputs and outputs? How to connect the device to a PC? And again, but how, and how?? We all understand that the devices are complex and the algorithms are voluminous, and it will take time to study. I’m thinking, maybe I should write a small book and call it codesys for dummies? Do you agree?

From this article you will learn:

Hello dear colleagues and guests. The author of the blog site, Gridin Semyon, is writing to you, and in this article I will tell you how to program the controller correctly. The topic is quite relevant, I hope after reading the article, some questions will disappear by themselves. =)

How does a PLC work?

PLC (programmable logic controller) is a device that fully automates the operation of devices, various units and machines. In fact, this is a kind of block that contains inputs and outputs for connecting sensors and actuators. Logic is written inside.

Calculations in the device are performed cyclically. That is, the same program execution actions are performed in a short period of time.

In one cycle performed by the device the following operations are performed:

  1. Start of the cycle;
  2. Reading input status;
  3. Execute user code;
  4. Recording output status;
  5. Maintenance of hardware resources;
  6. Execution system monitor;
  7. Cycle time control;
  8. Go to the beginning of the cycle;

I won't rant any more about theory. Let's get straight to practice.

What does the software package for full work with PLC consist of?

Of course, at first it will seem to you that you need to know too much in order to connect the main application and utilities with each other, and then connect the device. I want to tell you that there is nothing complicated in the process of installation and connections. My article will help with this.

First we need to install the main distribution CoDeSyS 2.3 c official website of ARIES. Ah, I suggest in many programming posts to use the device ARIES PLC63. Since this is a universal device with a screen. It has on board both discrete inputs, analog inputs, and relay outputs.

So, download the program:

The standard installation procedure then follows. We indicate the path and press “Next”, “Next” all the time.

The next step will be setting targets for the PLC. Target is a certain description about the PLC configuration. The instructions tell CoDeSyS 2.3 how many and what inputs/outputs the device has.
We also download from ARIES website. I recommend installing all the targets that are there. So that you don’t have to search and think about it later if you have to write the algorithm on another PLC.

We launch the automatic installer and install the instructions. That's it, we've already done half the way in this work! After all these procedures, you can install libraries, but more on them later. Let's move on to the next point.

Working window of the program

We have installed the distribution, and the targets too. Let's take a look at the working window of the development environment, menu items and main tabs.

The main field in the picture above is divided into three areas:

  1. Editor of variables and their types;
  2. Tree of objects;
  3. Editor of the main program algorithm;

Variable Editor -Here we enter variables and assign data types to them. For those who don't know, a variable is a name that a program will access and return a result. And the data type determines the type of information, the range of representation of numbers and many other operations.

Object tree -This window contains objects such as functions, function blocks, subroutines, PLC configuration, libraries. I'll talk about this later.

Program editor -Here we describe the main algorithm of the controller’s operating program. Can be written in any IEC standard language. In more detail, you can article.

Simple example on ST

For ease of perception of information, I tried to structure it. I described the sequence of actions step by step. If you have any questions or suggestions, be sure to write in the comments.

Initially, I will post code in the ST language in the article. The logic of operation is as follows: a signal is supplied to the discrete input of the device and, after a time delay, the output is turned on. In principle, the problem is simple, and we will solve it with you.

Code codesys2.3

PROGRAM PLC_PRG VAR T1:TON; ("timer") Timer_Ust:WORD:=5; ("timer setting") Time_tekuch:TIME; (“current time”) END_VAR T1(IN:=Start , PT:=DWORD_TO_TIME(Timer_Ust*1000)); Time_tekuch:=T1.ET; IF T1.Q THEN Out:= 1; ELSE Out:=0; END_IF;

PROGRAM PLC_PRG

T1: TON; ("timer")

Timer_Ust: WORD: = 5; ( "timer setting")

Time_tekuch: TIME; ("current time")

END_VAR

T1 (IN: = Start, PT: = DWORD_TO_TIME (Timer_Ust * 1000));

Time_tekuch: = T1. ET;

IF T1. Q THEN Out := 1 ; ELSE Out := 0 ;

END_IF ;

We launch our distribution, create a new project, indicate the target we need. Do not forget to first check that you have installed the drivers for the USB-COM converter; we will need it for communication.

The listing contains two global variables Start and Out. They are associated with physical inputs and outputs. We make all the settings in the PLC configuration tab.

We compile the project (we check it for the relevance of the code so that there are no errors). You can press the F11 button.

Enter required settings connections, as in the picture.

Let's assemble our logic programmable controller circuit. We connect the RS-232 interface on one side and USB on the other. Click “connect”. We feel joy from the process. =))If a communication error occurs, then check all connections and parameters again. It often happens that the converter wire is broken.

I recorded the whole process on video in case anything is unclear.

In the next article I will write about, don’t miss it. It will be interesting.

Successful implementations, dear readers and guests. If you liked the article, subscribe to the blog news and tell your friends. What language and equipment do you prefer to use to build an automation system?

Best regards, Gridin Semyon.

So, you have decided to learn PLC (Programmable Logic Controller) programming. Where should you start learning controller programming? What training materials to look for, is it worth doing it yourself or is it better to take courses, how long will the training take and how difficult will it be? Is PLC programming accessible to everyone or does one have to be a programmer? How quickly should you move from theory to practice? We have prepared answers to these and other questions.

1. In order to start learning PLC programming, it is not at all necessary to be a programmer. It is enough to have a so-called logical mind. If you loved mathematics and computer science at school, most likely you will succeed.
2. However, certain skills and understanding of machine logic are still required. If you studied the basics of programming in Pascal, BASIC or Assembly at school or institute, this is a significant plus.
3. The first steps in PLC programming can and are even best done independently, this will allow you to learn the basics at a comfortable pace. There are a lot of educational materials about PLCs and their programming on the Internet, and you can find an approximate plan for self-study in this article.
4. But immediately after studying the basics, you should turn your attention to professional courses and manuals. On our own behalf, we especially recommend the video course on Simatic Step 7, which can be purchased on the website http://step7-kurs.ru. This course is perfect for beginners, while Simatic Step 7 is used to develop automation systems for Simatic PLCs - one of the most popular and in-demand controllers today.
5. After you take your first steps, step 7, you are welcome to specialized forums: here you can not only “solve problems”, but also start looking for a job or internship.
6. The time required to learn PLC programming is an individual parameter. However, in any case, it will take you much less time than trying to master Java or C#.

Topics that are worth studying on your own before you start studying professional courses (i.e. during the self-study phase):

1. Safety requirements when working with PLCs. Although at the beginning of your training you may feel that you do not need this topic, still spend some time and study the TB of working with a PLC. It will definitely come in handy.
2. Purpose, functions, operating principles and design of PLC. Conditions in which PLCs operate and requirements for them. If you have previously been involved in radio engineering design, this topic will not be particularly difficult for you.
3. History of PLC. Optional, but very interesting part.
4. Introduction to major PLC programming languages according to IEC-61131-3 standard: Sequential Function Chart (SFC), Function Block Diagram (FBD), Ladder Diagrams (LAD), Statement List (STL), Instruction List (IL).
5. Getting to know the development environment, it’s best to use two or three of the most popular ones. For example, these could be CoDeSys and Simatic Step 7.
6. Learning PLC programming techniques. Structuring the program, calling subroutines, setting cycles and program runtime.
7. Basic commands (operators). By this point, you should have already decided on the programming language and development environment that suits you best personally.
8. Functions and function blocks.
9.Code examples of working programs.
10. Workshop. When writing your own programs, move from elementary tasks to more complex ones. At this stage, there is nothing wrong with using parts of someone else's code in your programs, but try to reduce their number (in percentage terms) over time.

Programmable Logic Controllers (PLC)

Before the advent of solid-state logic, the development of logic control systems was based on electromechanical relays. To this day, relays are not obsolete in their purpose, but still in some of their previous functions they have been replaced by a controller.

In modern industry there are a large number various systems and processes requiring automation, but such systems are now rarely designed from relays. Modern manufacturing processes require a device that is programmed to perform various logical functions. In the late 1960s, the American company Bedford Associates developed a computer device called MODICON (Modular Digital Controller). The name of the device later became the name of the division of the company that designed, made and sold it.

Other companies developed their own versions of this device, and it eventually became known as PLC, or programmable logic controller. The goal of a programmable controller capable of simulating the operation of a large number of relays was to replace electromechanical relays with .

The PLC has a set of input terminals that can be used to monitor the status of sensors and switches. There are also output terminals that provide a "high" or "low" signal to power indicators, solenoid valves, contactors, small motors, and other self-monitoring devices.

PLCs are easy to program because their programming language resembles the logic of a relay. Thus, an ordinary industrial electrician or electrical engineer who is accustomed to reading relay logic diagrams will feel comfortable programming a PLC to perform the same functions.

Signal wiring and standard programming vary somewhat between different PLC models, but they are similar enough to warrant a "general" introduction to programming this device here.

The following illustration shows a simple PLC, or rather what it might look like from the front. Two screw terminals providing connections for internal PLC circuits up to 120 VAC are labeled L1 and L2.

Six screw terminals located on the left side provide connections for input devices. Each terminal represents a different input channel (X). The screw terminal ("common" connection) located in the lower left corner is usually connected to L2 (neutral) of the 120 VAC power supply.

Inside the PLC housing that links each input terminal to the common terminal is a device opto-isolator (LED) that provides an electrically isolated "high" signal to the computer circuitry (the phototransistor interprets the LED light) when 120-volt AC current is applied between the corresponding input terminal and the common terminal. terminal. The LED on the front panel of the PLC makes it possible to understand which input is energized:

Output signals are generated by the PLC's computer circuitry by activating a switching device (a transistor, thyristor, or even an electromechanical relay) and linking the Source terminal (lower right corner) to any output labeled Y. The Source terminal is usually connected to L1. Just like each input, each energized output is marked with an LED:

Thus, the PLC can connect to any devices such as switches and electromagnets.

PLC Programming Basics

The modern control system logic is installed in the PLC via a computer program. This program determines which outputs are energized and under what input conditions. Although the program itself resembles a relay logic diagram, there are no switch contacts or relay coils operating within the PLC to create connections between input and output. These contacts and coils are imaginary. The program is written and viewed using a personal computer connected to the PLC programming port.

Consider the following circuit and PLC program:

When the push-button switch is not activated (not pressed), the signal is not sent to input X1. In accordance with the program, which shows the “open” input X1, the signal will not be sent to output Y1. Thus, output Y1 will remain de-energized and the indicator connected to it will go out.

If the push-button switch is pressed, the signal will be sent to input X1. All X1 contacts in the program will take on an activated state as if they were relay contacts, activated by applying voltage to a relay coil named X1. In this case, the open contact X1 will be “closed” and send a signal to the Y1 coil. When the Y1 coil is energized, the Y1 output will light up with a light bulb connected to it.

It should be understood that contact X1 and coil Y1 are connected using wires, and the “signal” that appears on the computer monitor is virtual. They do not exist as real electrical components. They are only present in computer program- part of the software - and just resemble what happens in the relay circuit.

It is equally important to understand that the computer used to write and edit the program is not needed for further use of the PLC. Once the program has been loaded into the programmable controller, the computer can be turned off and the PLC itself will execute the program commands. We include a personal computer monitor in the illustration so that you understand the relationship between real conditions (switch closure and lamp statuses) and program statuses (signals through virtual contacts and virtual coils).

The true power and versatility of a PLC comes into play when we want to change the behavior of a control system. Since the PLC is a programmable device, we can change the commands we have given without reconfiguring the components connected to it. Let's assume that we decided to reprogram the "switch - light bulb" function in reverse: press the button to turn off the light bulb and release it to turn it on.

The solution to this problem in real conditions is to replace the switch, which is “open” under normal conditions, with a “closed” one. Its software solution is to change the program so that contact X1 under normal conditions is “closed” and not “open”.

In the following image you will see the already modified program, with the switch not activated:

And here the switch is activated:

One of the advantages of implementing logical control in software Unlike hardware control, the input signals can be used as many times as needed. For example, consider a circuit and program designed to turn on a light bulb if at least two of three switches are activated simultaneously:

To build a similar circuit using relays, you would need three relays with two contacts open under normal conditions, each of which must be used. However, using a PLC, we can, without adding additional hardware, program as many contacts for each “X” input as we would like (each input and output should occupy no more than 1 bit in the digital memory of the PLC) and call them as many times as necessary .

In addition, since each PLC output occupies no more than one bit in its memory, we can make contacts in the program, causing the Y output to be in a non-activated state. For example, let’s take a diagram of an engine with a control system for starting and stopping:

The switch connected to input X1 serves as the “Start” button, while the switch connected to input X2 serves as the “Stop” button. Another contact, called Y1, similar to the seal in the contact, allows the motor contactor to remain energized even if the Start button is released. In this case, you can see how contact X2, which is “closed” under normal conditions, will appear in a colored block, thereby indicating that it is in a “closed” (“conducting”) state.

If you press the "Start" button, current will flow through the "closed" contact X1 and it will send 120 VAC to the motor contactor. Parallel contact Y1 will also “close”, thereby completing the circuit:

If we now press the "Start" button, contact X1 will go into the "open" state, but the engine will continue to run because the closed contact Y1 will still keep the coil energized:

To stop the engine, you need to quickly press the “Stop” button, which will communicate voltage to input X1 and the “open” contact, which will stop the supply of voltage to coil Y1:

When you pressed the "Stop" button, the X1 input remained without voltage, thereby returning the X1 contact to its normal "closed" state. The engine will under no circumstances start running again until you press the Start button again because the seal on pin Y1 has been lost:

The fault-tolerant model of PLC control devices is very important, just as in electromechanical relay control devices. You must always take into account the impact of an erroneously “open” contact on the operation of the system. So, for example, in our case, if contact X2 is mistakenly “opened,” then there will be no way to stop the engine!

The solution to this problem is to reprogram the X2 pin inside the PLC and actually press the Stop button:

When the Stop button is not pressed, the PLC input X2 is energized, i.e. contact X2 is “closed”. This allows the motor to start running when current is applied to pin X1 and continue running when the Start button is released. When you press the "Stop" button, contact X2 goes into the "open" state and the engine stops working. So you can see that there is no functional difference between this and the previous model.

However, if input contact X2 was mistakenly “opened”, input X2 can be stopped by pressing the “Stop” button. As a result, the engine is immediately switched off. This model is safer than the previous one, where pressing the Stop button will make it impossible to stop the engine.

In addition to inputs (X) and outputs (Y), the PLC has the ability to use “internal contacts and coils. They are used in the same way as intermediate relays used in standard relay circuits.

To understand the working principle of the "internal" circuits and contacts, consider the following circuit and program, developed according to the principle of three inputs of the logical AND function:

In this scheme, the lamp is lit until any of the buttons is pressed. To turn off the lamp, press all three buttons:

This article on programmable logic controllers illustrates only a small sample of their capabilities. As a computer, a PLC can perform other advanced functions with much greater accuracy and reliability than using electromechanical logic devices. Most PLCs have more than six inputs and outputs. The following illustration shows one of the Allen-Bradley PLCs:

With modules each having 16 inputs and outputs, this PLC has the ability to control dozens of devices. Placed in a control cabinet, the PLC takes up little space (electromechanical relays performing the same functions would require much more free space).

One of the advantages of a PLC that simply cannot be duplicated by an electromechanical relay is remote monitoring and control via computer digital networks. Because a PLC is nothing more than a specialized digital computer, it can easily "talk" to other computers. The following photo is a graphical representation of the liquid filling process (pumping station for municipal wastewater treatment) controlled by a PLC. Moreover, the station itself is located several kilometers from the computer monitor.

Translation from English - Julia Surta.

Related publications