This documentation is out of date.
The new version of the documentation is here: https://cannylogic.com/docs |
Difference between revisions of "CFD Language"
(→Data) |
(→Управление ресурсами контроллера) |
||
Line 78: | Line 78: | ||
|} | |} | ||
− | === | + | === Controller Resources Management === |
− | + | To functional diagram designed by the user could use the controller's physical input data and to change the status of the physical outputs, to receive and transmit data on the data interfaces, or just to change the status of the built-in LED, diagram and controller resources must be linked to each other. | |
− | + | In CANNY7 controller, access to hardware resources from the user application, implemented in the form of data read and write from specific addresses (registers) reflecting the status of these resources. | |
− | + | Controller resources require a specific order of access. For example, in the simplest case, to turn on embedded LED is enough send "1" to a particular address and "0" to turn it off . But in order to use universal external channel for relay control, it must be initialized first, writing its specific operation mode value of the address of its configuration. Only then it is possible, by setting a "1" or "0" to the address of a channel output value, control the electric potential on the channel. | |
− | + | So it will look like given above diagram to control railway crossing traffic lights, after binding to controller resources . Such a diagram is completely suitable for uploading in the PLC and control actual hardware. | |
[[File:3_5_1.png]] | [[File:3_5_1.png]] |
Revision as of 06:38, 15 February 2016
In Canny Lab IDE used programming language-Canny Function Diagram (CFD), to program Canny 7 controller. During its development, the goal was set to create a tool which best suits the capabilities of the controller, and at the same time close enough to the industry standard. Function Block Diagram (FBD) Language is taken as the basis for the development of the CFD. It is perhaps one of the most balanced among the five languages approved by the International Electrotechnical Commission to create user programs for PLC within IEC 61131-3 standard.
As a graphical programming language, CFD has a high clarity comparable to wiring diagrams, but is at a higher level of abstraction, which allows to hide irrelevant implementation details.
Functional Diagram
The program in CFD language , represents as a draught (scheme), depicting the functional blocks, linking to one another with connecting lines (network), and support elements, called functional diagram.
The program implementation in CFD language can be described as successively, usually from the left to the right, calculation of each functional block, with the result transferring to the next associated function block. Such algorithms will be called a thread of execution.
Presentation of the program in this way makes it easy to trace the process of its implementation, just looking at the picture, moving eyes from block to block on the trunk.
In CFD language, the relative position of the blocks in the acyclic diagram does not affect their execution order. Functional blocks order of execution of such a diagram is automatically calculated by the following rule: each functional block is executed when all its inputs are calculated.
In determining the order of execution of the cyclic, that is, having a feedback diagram, functional blocks involved in the feedback loop executed in such order, that latest is executed the function block located to the right of all other blocks involved in the cycle.
Functional Block
The function block is a graphical element in the functional diagram indicating the function, algorithm or mathematical expression,produces calculation of its output data depending on the input data received from the outside. On the function block image, its inputs disposed on the left and outputs on the right .
Стандартная библиотека функциональных блоков языка CFD includes both simple blocks that perform basic logic transformation on their input data - such AND, OR, NOT, and more complex function: triggers, generators, switches.
Function block depending on its type, may have several inputs and several outputs, for computing can use its own memory as well as access the controller operating system resources, such as timers and use the data in its calculations of output values.
In CannyLab environment, sources of input data for a function block can be functional blocks of whose output is bound with connecting lines (networks), numeric constants entered by the user or selected from the directory or date from controller service memory registers.
Any function block input or output can be inverted. In the case of an input inversion, as input data to function block will be given a value that results from the operation of "Logical NOT" on actual input data. In case of output inversion, "Logical NOT" operation will be applied to the data before sending the calculation result of the function block to its "out".
Network
The line connecting data source to one or more recipients of the data on the functional diagram, is called a network. In CFD language, the data source is usually the output of a function block, a recipient is an input of another function block. In CFD language any network can have only one data source.
In programming languages terms, the network is "variable", data storage place. The function block at the end of the calculations, writes its output value in the network, then functional blocks whose inputs connected to this network after it are read from the network stored in it value and use it in their calculations as input values. Along with the use of anonymous networks, in CannyLab, networks can assign names to be displayed on the diagram.Logically unified network, for which a name is assigned, it is possible to separate into several visually unrelated segments for easier composition. For example, two segments of "Tyre pressure, kPa" (on the figure below) represent the same network, and have the same value at each point in time, though not visually connected.
Data
In CFD language, all the data used are 16-bit non-negative integer numbers in the range of 0 to 65535. The result of arithmetic operation is a numeric value of the specified range, and logical operations results are "1" (true) and "0" (false).
During functional diagram execution, where necessary, data conversion from Boolean to Numeric data and vice versa is performed automatically using the following rules:
- When converting a number to a boolean value, zero is converted to a value of "false", any number other than zero - set to "true".
- The arithmetic logic value of "false" and "truth" are provided as the numbers 0 and 1, respectively.
- Inversion at the input or output of any block, automatically converts the data to a Boolean.
The results of arithmetic operations are taken modulo 65535. This means that if the operation result exceeds 65,535, then it is automatically deducted 65536. And if the result was less than zero, then it is added to the 65535 and another "1".
For example: | 65535 + 1 = 0 | 1 – 2 = 65535 | |
65535 + 2 = 1 | 1 – 3 = 65534 | ||
65500 + 122 = 86 | 117 – 259 = 65294 |
Controller Resources Management
To functional diagram designed by the user could use the controller's physical input data and to change the status of the physical outputs, to receive and transmit data on the data interfaces, or just to change the status of the built-in LED, diagram and controller resources must be linked to each other.
In CANNY7 controller, access to hardware resources from the user application, implemented in the form of data read and write from specific addresses (registers) reflecting the status of these resources.
Controller resources require a specific order of access. For example, in the simplest case, to turn on embedded LED is enough send "1" to a particular address and "0" to turn it off . But in order to use universal external channel for relay control, it must be initialized first, writing its specific operation mode value of the address of its configuration. Only then it is possible, by setting a "1" or "0" to the address of a channel output value, control the electric potential on the channel.
So it will look like given above diagram to control railway crossing traffic lights, after binding to controller resources . Such a diagram is completely suitable for uploading in the PLC and control actual hardware.
Список адресов всех доступных пользователю ресурсов контроллера находится в справочнике адресов CannyLab, который доступен пользователю через контекстное меню при назначении входов и выходов типа «Адрес» функциональных блоков.
Конфигурация определенных ресурсов контроллера требует использования специальных констант, все они поименованы и собраны в списке констант CannyLab, который доступен пользователю при назначении входов типа «Константа» функциональных блоков.
Подробное описание ресурсов CANNY 7 и порядка доступа к ним, рассматривается в справочном руководстве по контроллеру.