
ГИА 2024 Ответы УТС (НЕ ВСЕ)
.pdf5. Системы программирования на языках МЭК.
Системы программирования, основанные на МЭК 61131-3, характеризуются следующими показателями:
надежностьюсоздаваемогопрограммногообеспечения. Надежностьобеспечивается тем, что программы для ПЛК создаются с помощью специально предназначенной для этого среды разработки, которая содержит все необходимые средства для написания, тестирования и отладки программ с помощью эмуляторов и реальных ПЛК, а также множество готовых фрагментов программного кода
возможностью |
простой |
модификации |
программы |
и наращивания |
ее функциональности
переносимостью проекта с одного ПЛК на другой
возможностью повторного использования отработанных фрагментов программы
простотой языка и ограничением количества его элементов
Языки МЭК 61131-3 появились не как теоретическая разработка, а как результат анализа множества языков, уже используемых на практике и предлагаемых рынку производителями ПЛК.
Стандарт устанавливает пять языков программирования со следующими названиями:
список инструкций (IL — Instruction List) — Язык IL напоминает ассемблер и используется для реализации функций, функциональных блоков и программ,
а также шагов и переходов в языке SFC
структурированный текст (ST — Structured Text) — Язык ST является текстовым языком высокого уровня и очень сильно напоминает Паскаль
релейно-контактные схемы, или релейные диаграммы (LD — Ladder Diagram) — Сложныевычислениявэтомязыкеневозможны. Недостаткомявляетсятакжето, что только маленькая часть программы умещается на мониторе компьютера или панели оператора при программировании
диаграммы функциональных блоков (FBD — Function Block Diagram) — FBD
является графическим языком и наиболее удобен для программирования процессов прохождения сигналов через функциональные блоки. Язык FBD удобен для схемотехников, которые легко могут составить электрическую схему системы управления на «жесткой логике», но не имеют опыта программирования
последовательные функциональные схемы (SFC — «Sequential Function Chart») — предназначен специально для программирования последовательности выполнения
действий системой управления, когда эти действия должны быть выполнены в заданные моменты времени или при наступлении некоторых событий. В его основе лежит представление системы управления с помощью понятий состояний и переходов между ними
Языки IL и ST являются текстовыми. Графическими языками являются LD, FBD, SFC.
В стандарт были введены несколько языков (а не один) для того, чтобы каждый пользователь мог применить наиболее понятный ему язык.
Программисты чаще выбирают язык IL (похожий на ассемблер) или ST, похожий на язык высокого уровня Паскаль. Специалисты, имеющие опыт работы с релейной логикой, выбирают язык LD. Специалисты по системам автоматического управления (САУ) и схемотехники выбирают привычный для них язык FBD.
Выбор одного из пяти языков определятся не только предпочтениями пользователя, но и смыслом решаемой задачи.
Языки МЭК 61131-3 базируются на следующих принципах:
вся программа разбивается на множество функциональных элементов — Program Organization Units (POU), каждый из которых может состоять из функций, функциональных блоков и программ. Любой элемент МЭК-программы может быть сконструирован иерархически из более простых элементов
стандарт требует строгой типизации данных. Указание типов данных позволяет легко обнаруживать большинство ошибок в программе до ее исполнения
имеются средства для исполнения разных фрагментов программы в разное время, с разной скоростью, а также параллельно. Например, один фрагмент программы
может сканировать концевой датчик с частотой 100 раз в секунду, в то время как второй фрагмент будет сканировать датчик температуры с частотой один раз
в 10 сек
для выполнения операций в определенной последовательности, которая задается моментами времени или событиями, используется специальный язык последовательных функциональных схем (SFC)
стандарт поддерживает структуры для описания разнородных данных. Например, температуру подшипников насоса, давление и состояние «включено-выключено» можно описать с помощью единой структуры «Pump» и передавать ее внутри программы как единый элемент данных
стандарт обеспечивает совместное использование всех пяти языков, поэтому для каждого фрагмента задачи может быть выбран любой, наиболее удобный, язык
Программирование и основы алгоритмизации
1. Поколения языков программирования. Уровни языков программирования.
Язык программирования – это искусственный язык. От естественного языка он отличается ограниченным числом слов, значения которых понятны транслятору и очень строгими правилами записи команд или оператора. Совокупность этих требований образует синтаксис языка Язык программирования ориентированный на конкретный тип процессора наз языком
программирования низкого уровня, т е операторы языка ориентированы на конкретные команды процессора(Ассемблерсамый низкий уровень, он представляет каждую команду машинного кода с помощью условного обозначениямнемоники) Однозначное преобразование одной машинной инструкции в одну команду ассемблера наз транслитирацией. Подобные языки применяют для написания системных приложений, драйверов и модулей стыковки с нестандартным оборудованием.
Языки программирования высокого уровня значительно ближе и понятнее человеку, чем компьютеру. Особенность архитектур не учитывается, => программы на этих языках можно перенести на другие платформы, где есть трансляторы.
Поколения:
I 50х1ыйязыкассемблера, сделанныйпопринципу1строка1 инструкция. (несимволический)
IIк 50х Символический ассемблер, введено понятие переменной(она даёт относительный адрес), можно сказать первый полноценный язык программирования.
III60е годы Пошли языки высокого уровня Fortran, Basic, Pascal и т.д. Резко повысилась производительность труда программиста.
VI нач. 70х Продолжается период языков предназначенных для реализации крупных проектов, для повышения скорости надёжности. -Проблемно ориентированные языки, языки ориентированные на большие специальные задачи (узкую специальную область). В них встраиваются мощные операторы, позволяющие одной строкой писать сложные функциональности (СУБД).
V с 90х годов визуальные языки – создавались как система автоматической разработки прикладных программ с помощью визуальных средств разработки. В идеале – визуальные средства, которыми могут пользоваться и непрограммисты. Два аспекта 1- использование визуальных компонентов, 2 – кодирование
2. Трансляторы: назначение, классификация, примеры. Этапы прохождения программ на ЭВМ. Результаты, формируемые каждым этапом.
Транслятор: компилятор и интерпретатор. Для получения работающей программы текст необходимо перевести в машинный код для этого обращаются к программе переводчику, к-ый наз
транслятором.
Компилятор – получает объектный код. Это программы, к-ые обрабатывают весь программный текст, т е исходный код. Сначала он просматривает текст в поиске синтаксических ошибок, затем выполняется некоторый смысловой анализ после чего текст автоматически переводится или транслируется на машинный язык. Не редко при генерировании машинного кода выполняется оптимизация с помощью набора методов, позволяющих повысить быстродействие программы. В результате законченная программа, к-ая наз объектным кодом получается компактной и эффективной и может быть перенесена на другие компьютеры с процессором, поддерживающим соответствующий машинный код. Интерприт. Сразу берут операторы с текста программы, анализируют его структуру и затем сразу его выполняют. Только после успешного выполнения текущего оператора интерпретатор перейдёт к следующему. При этом если один и тот же оператор повторяется многократно, интерпретатор всякий раз анализирует его как в первый. С помощью интерпретатора можно в любой момент остановить работу программы, исследовать содержимое памяти, организовать диалог с пользователем, т е интерпретатор полезен как инструмент на изучение программирования. В реальных системах программирования совмещены технологии компиляции и интерпретации. Пр: в процессе отладка программы может выполняться по шагам. на получение не объектного кода для отладки.
Существует 3 этапа:
Исходный текст программы на яз паскаль должен быть сохранен в файле с расширением .pas. Этот файл подвергают обработке компилятором, и результатом является объектный код, , автоматически сохраняемый в файле с расширением .tpu (turbo Pascal unit), программа обрабатывается компоновщиком – получается загрузочный модуль, автоматически сохраняемый в файле с расширением .exe. Далее программа идет на выполнение (в процессе могут быть подключены исходные данные), далее получаем результаты.
-компиляция – создание объектного файла *.obj, *.tpu
-компоновка – создает исполняемый файл *.ехе
-выполнениерезультат формируемые этапами
После компиляции в Delphi получаем расширение *.dcu – статическая библиотека Подключаем с помощью USES
3. Жизненный цикл программного обеспечения. Составляющие процесса жизненного цикла программного обеспечения. Каскадная (водопадная) модель жизненного цикла программы.
Жизненный цикл – это модель создания и использования программной системы. Он отражает различные состояния программной системы, начиная с момента возникновения необходимости в этой программной системе и принятия решения о ее создании и заканчивая полным изъятием программной системы из эксплуатации Водопад:
1 этап, анализ – исследование проблемы, четкая формулировка требований заказчика. Результат – техническое задание (задание на разработку), согласованное со всеми заинтересованными сторонами.
2 этап, проектирование – разработка проектных решений, удовлетворяющих всем требованиям технического задания. Результат – комплект проектной документации, содержащей все необходимые данные для реализации проекта.
3 этап, реализация –программирование в соответствии с проектными решениями, полученными на предыдущем этапе. Методы, используемые для реализации, не имеют принципиального значения. На этом этапе также производится проверка ПО на предмет соответствия требованиям технического задания, выявление скрытых недостатков, проявляющихся в реальных условиях работы ИС. Результат – готовый программный продукт.
4 этап, внедрение – сдача готового проекта. Главная задача – убедить заказчика, что все его требования реализованы в полной мере.
5 этап, сопровождение – в ходе сопровождения в программу вносятся изменения, с тем, чтобы исправить обнаруженные в процессе использования дефекты и недоработки (первичное сопровождение), а также для добавления новой функциональности, с целью повысить удобство использования и применимость ПО (зрелое сопровождение)

4. Типизация данных. Система типов в языке программирования высокого уровня.
Object Pascal
Типы |
|
простые |
Порядковые |
|
Целые |
|
|||||
|
|
|
|
|
Логические |
|
|
|
Вещественные |
|
|
|
|
|
Тип Дата/Время |
|
Символьные |
|
|
|
|
|
Тип диапазон |
|
|
|
|
|
Перечислимые |
структурированные Массивы Множество Записи Файлы
Указатели |
-Адрес тип, ссыл. тип, длин 4 байта |
Строки |
|
Объекты |
-в ТР объединение полей и методов наз. объект |
Процедуры |
-при передаче через параметр (cos, sin) |
Варианты |
|
Классы |
-объединение полей, методов и свойств |
Строки – символы, с которыми можно работать как с массивом символов; Статич –ShortString, String(длина); Динамич – String->StringLength(O)
Variant (Вариант) - тип разработанный для тех случаев когда на этапе компиляции программист не может сказать какого типа данных будет использован в программе. В нее можно поместить целое или вещественное число, логич. выражение, строку, время/дата, OLE-объект, массив.
Процедурный - дать программисту гибкие средства передачи функций и процедур подпрограмм в качестве фактических параметров при обращении к другим подпрограммам. Для объявления используется заголовок процедуры, в котором нет имени процедуры Пр:Туре
Proc=procedure(a,b:real, var d: real); Function F (Summa: Proc);
Передаваемые подпрограммы не могут быть локальными.
Директива - это указание оператору, что начинается например исполняемый раздел(но под нее не выделяется память как под оператор).
Множество целых типов позволяет более гибко использовать память в ЭВМ. Byte Shortint-занимает 1
байт; Word Integer - 2 байта; Longint-46aftTa; типы Byte и Word-это целое без знака.
Способы представления: с представлением знака или без него это различие способов кодировки значений. Turbo Pascal разрешает записывать целые значения в 16-ти-ом виде и для этого использ-ся знак $ ($FF, $9). Отрицательные числа представляются в дополнительном коде в 16-ом виде. Запись отрицательного значения соответствует обратному отсчету от максимального для размера Longint
положительного числа. (-1)10 = $FFFFFFFF16; (-1)10-1=(-2)10=$FFFFFFFE; (-3)10=$FFFFFFFD; (-65)10=$FFFFFFFF-(64)10=(4O)16= $FFFFFFBF
Целые значения типов Word, integer,longint хранятся в памяти в «перевернутом виде», т е 1-ым идет наименее значащий байт, а вторым - наиболее. Пр: $01020304 $04$03$02$01
Вещественные: Real
1)РТ(число с фиксированной точкой)(-2,5)
2) РТ(с плавающей точкой) (+-0.а1а2а3…аnЕ+-d1d2d3d4)
Чтобыпрочитатьчислов формесплавающейточкойнадо мантиссу умножить10 встепенипорядка.
Пр: -О.035Е+О.2=-0.035*102=-3.5; -О.035Е-02=-0 035:102=-О.0ОО35/ Диапазон порядка от -38 до
+38. Логический тип - Boolean: False-ложь, Тгие - истина.
Символьный тип- тип по табл Ascii. (Char-тип). Величина такого типа может содержать 1 символ информации. Значение типаэто символ с апострофом наз-ся литерамб.
Строковый тип: String Величина содержит текст составленный из символов
Адресныйтип: Pointer-универсальныйадресныйтип. ЗначениемтакоготипаадреспоправиламMSDOS. Это сугубо внутренний тип, т е его значение нельзя вывести на печать или записать в переменную как работаем с числами, вместо этого используют ф-ии для преобразования условной записи адресов памяти в тип Pointer и обратно.
Перечислимый тип. Это такой тип данных, при к-ом колич-во всех возможных значений ограничено Задается тип перечислением тех значений, к-ые он может получать. Описание типа идет под дириктивой Туре. Имя типа=(значения типа перечисленные через ‘,’); Пр: Туре
Byte=(0,l,2,...,254,255); или Type Boolean=(False,True); Программист может описать под Туре собственный перечислимый тип.
Пр: Туре
Month=(jan,feb,mar,apr,may,junJul,aug,sep,oct,nov,dec);
Если далее описать переменную такого типа var m:month, то в ячейке m может содержаться только одно из перечисленных значений. Максимальное число элементов в одном перечислении 65535. Недостаток применения перечислимого типа, значения не могут быть выведены на экран или принтер и не могут быть явно введены с клавиатуры. Для работы с перечислимым типом используются ф-ии Ord;Succ;Pred. Ord Любой перечислимый тип имеет внутреннюю нумерацию 0,1,2..., порядок элемента или его номер можно получить ф-ей Ord(x):Longint Под Ord х-элемент, Longint-результат. Оrd(арг)-это значение =З Применительно к целым типам ф-ия Ord дает значение числа со знаком Ord(-100)=-100. Применительно к символам ф-ия Ord дает числовой код символа. ДлялогическихвеличинOrd(False)=0 Ord(True)=l. Succвозвращаетследующеезахзначениевтипе. Predпредыдущее перед х значение этого типа.
Тип диапазон. Это ограниченный тип, с пом к-го программист может определить тип, содержащий значение только из ограниченного под диапазона некоторого базового типа. Туре Т1=1..10;Т2='А'..’Т’? ТЗ=mar..mау, Можно при задании границ диапазона использовать выражения, но нельзя начинать выражение с круглой скобки Т4=2*(3*4)..(12*13); Оператор описания типа переменных под дириктивой var
Массив-это группа величин одного типа с единым именем. Для компактного представления комбинаций разнотипных данных их можно объединять в структуры, к-ые наз-ся записи. Пр: Type Rec=record. Множество-это сложный тип языка конструируемый спец фразой set of тип. Пр: Sch=set of сhаг;Файлassing(f,'data.txt');
5. Технология программирования вычислительных задач (модульное и структурное программирование). Пример использования.
Необходимо выполнить требования к основной мат модели – адекватность модели к рассмотренному явлению. Она должна достаточно точно определять характерн черты явления, но и быть достат-но простой для исследования. Число программ неограниченно.
Требования, котруководствуются: 1. эффективностьпрогрвремясчетаиобъёматребуемой памяти, 2. снизить трудоемкость написания программы и ее отладки
Написание на микро уровне: 1. имена переменных выбирают со смыслом обозначаемых величин (программа должна быть читаема), 2. снабжать прогр комментариями, 3. при вычислении индексов массивов следует проявлять особенное внимание, т.к. ошибки индексирования наиболее трудно отслеживаются (локализуются), 4. при экономии памяти целесообразно подумать об использовании 1 массива в моменты, когда различные массивы не использ одновременно, 5. При записи сложн выражений, требуется использование промежуточных элементов – повышает наглядность и реально позволяет сократить кол-во арифмет операций. 6. При использовании многократно вложенных циклов – нужно стремиться чтоб в самом внутреннем цикле было наименьшее количество операций (действий), что способствует уменьшению времени счета.
Макро уровень – грамотно структурировать программу – основная пробл - разбиение на подпрограммы. Сущест-т т.н. порог оптимальности: 50инструкций (команд)- то50 до100.
2 принц программирования: Структурное и Модульное. Структурное – берется задача и разбивается на этапы сверху вниз - Структурно программа программируется сверху в низ, от сложного к простому Модульная программа программируется в низу вверх, т.е. с более простой на более глобальную.
Итерационное программирование – как методология программирования – на первом этапе появляется альфа версия, разрабатываемая на 80% требований. Считается, что для конечного проекта достаточно 2-5 итераций.
Алгоритм – это строгая чёткая конечная система правил, определяющая последовательность преобразования исходных данных в результаты. Св-ва: детерминированность(однозначность), массовость(универсальность), результативность(алгоритм обязательно довести до конечного результата)

6. Типовые алгоритмы, используемые в программировании. Средства реализации типовых алгоритмов в языке программирования высокого уровня.
Object Pascal
Типовые алгоритмы делятся по структурам:
1)Линейная структура
2)Разветвляющая структура
3)Циклическая структура (арифметический, итерационный)
Линейная :
Ввод данных
Счет
Вывод данных
Разветвляющая
|
|
|
|
|
Опера |
|
Усл |
|
|
|
|||
|
|
ция 1 |
||||
|
||||||
овие |
||||||
|
||||||
|
|
|
|
|
|
Опера ция 1

Циклическая: |
|
Арифметическая(For ) |
Итерационная (While) |
|
|
|
|
|
|
|
Продол |
|
|
|
|
|
|
||
|
|
Продол |
|
|
ус |
||
|
|
|
|
|
жение |
||
От 1 до |
|
||||||
|
жение |
|
|
ло |
|
||
N |
|
|
|
|
прог. |
||
|
прог. |
|
|
|
|
||
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Тело |
|
|
|
Тело |
|
|
|
|
|
|
цикла |
|
|
||
цикла |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1)оператор присваивания а:=в; а- имя ячейки памяти, которая запоминает результат вычисления, в – это формула, записанная в виде арифметического выражения.
2)If_ {логическое выражение}_ then_{оператор1}_else_{оператор2}; Оператор if может использоваться в сокращенном виде, т е if {лог выр} then {оператор pascal};
Begin …end – составной оператор – тоже относится к управляющим структурам языка. 3) Итерационный или цикл с условием в котором неизвестно число повторений цикла.
While-цикл с предусловием While_{условие прохождения цикла}_do_{оператор Р}
Если условие истинно выполняется тело цикла затем происходит автоматический возврат опять на проверку условий и т д до тех пор пока условие не примет значение ложь.
Repeat – с постусловием Repeat_{оператор Р}_until_{УСЛОВИЕ Выхода из цикла}
Сначала хотя бы один раз выполняется тело цикла, затем идёт проверка условия, если условие ложь происходит автоматический возврат на повторное выполнение тела цикла, когда условие станет истинно, цикл прекратит свою работу.
4) Арифмет-й или цикл с известным числом повторений.
For_{параметр цикла}:={начальное значение}_to_{конечное значение}_do_{оператор
Р}.
Параметр получает начальное значение, которое сравнивается с конечным, если параметр <= конечному, то выполняется тело цикла затем происходит возврат на начало цикла и к параметру прибавляется +1, цикл повторяется до тех пор пока параметр не станет больше конечного значения Если вместо TO поставить DOWNTO то шаг будет –1.