Обработка строк и текстовых данных: парсинг и форматирование в Structured Text
0.8
0 продаж
0 отзывов
295 ₽
Продавец
VI
vida78
0.8
0 продаж
Описание
Данное учебное пособие посвящено одной из самых недооценённых, но критически важных тем в программировании ПЛК — обработке текстовых данных на языке Structured Text (ST) в соответствии со стандартом IEC 61131‑3. В отличие от разрозненных статей и форумных советов, этот материал даёт целостную, промышленно‑ориентированную систему работы со строками: от объявления буфера и базовых функций до парсинга команд оператора, интерпретации технологических команд, валидации, формирования корректных CSV‑отчётов, журналирования событий с кольцевым буфером и даже генерации штрихкодов EAN‑13 с расчётом контрольной цифры.
Книга построена на реальных инженерных задачах: команды с HMI, обмен по протоколам, отчётность, маркировка продукции. Каждый пример сопровождается полным кодом на ST, таблицами тестов с граничными и ошибочными случаями, а также лабораторными работами для закрепления. Особое внимание уделено защите от переполнения, нечисловых значений, пустых строк и неверных разделителей — всему тому, что в реальной эксплуатации приводит к остановкам линии и браку.
Особенности издания:
Полный рабочий код всех функций и функциональных блоков с комментариями на русском языке.
10 тематических глав и 8 лабораторных работ, охватывающих полный цикл: от синтаксиса до промышленного применения.
Адаптация под среды разработки CoDeSys V3.5 и TwinCAT 3 (с оговорками по файловым операциям).
Проверка на соответствие синтаксису стандарта IEC 61131‑3 и учёт платформенных различий.
Единая нотация и инженерная дисциплина, позволяющая использовать код как шаблон для реальных проектов.
Сквозной комплексный пример — система штрихкодирования продукции, объединяющая все изученные техники.
Идеально подходит для инженеров‑программистов ПЛК, студентов технических специальностей и преподавателей курсов по автоматизации. Пособие превращает строки из источника ошибок в управляемый, проверяемый интерфейс промышленной системы.
Книга построена на реальных инженерных задачах: команды с HMI, обмен по протоколам, отчётность, маркировка продукции. Каждый пример сопровождается полным кодом на ST, таблицами тестов с граничными и ошибочными случаями, а также лабораторными работами для закрепления. Особое внимание уделено защите от переполнения, нечисловых значений, пустых строк и неверных разделителей — всему тому, что в реальной эксплуатации приводит к остановкам линии и браку.
Особенности издания:
Полный рабочий код всех функций и функциональных блоков с комментариями на русском языке.
10 тематических глав и 8 лабораторных работ, охватывающих полный цикл: от синтаксиса до промышленного применения.
Адаптация под среды разработки CoDeSys V3.5 и TwinCAT 3 (с оговорками по файловым операциям).
Проверка на соответствие синтаксису стандарта IEC 61131‑3 и учёт платформенных различий.
Единая нотация и инженерная дисциплина, позволяющая использовать код как шаблон для реальных проектов.
Сквозной комплексный пример — система штрихкодирования продукции, объединяющая все изученные техники.
Идеально подходит для инженеров‑программистов ПЛК, студентов технических специальностей и преподавателей курсов по автоматизации. Пособие превращает строки из источника ошибок в управляемый, проверяемый интерфейс промышленной системы.
Дополнительная информация
Содержание:
Глава 1: Введение в промышленную обработку текстовых данных — Пять сценариев использования текста в ПЛК (команды HMI, протоколы, отчёты, штрихкоды, журналы). Особенности типа STRING: фиксированная длина, нуль-терминатор, ограничение 255 символов. Обзор стандартных функций LEN, LEFT, RIGHT, MID, CONCAT, FIND, INSERT, DELETE, REPLACE. Типичные ошибки и их предотвращение.
Глава 2: Базовые операции со строками — Объявление буферов и выделение памяти. Конкатенация через CONCAT (вложенные вызовы и промежуточные переменные). Извлечение подстрок (LEFT, RIGHT, MID) с разбором нумерации позиций. Поиск FIND и обязательная проверка на 0. Точечное редактирование (INSERT, DELETE, REPLACE). Сравнение строк и отсутствие TRIM в стандарте. Лабораторная работа: F_TrimSpaces.
Глава 3: Токенизация и разбор строк — Алгоритм токенизации через WHILE + FIND + LEFT/RIGHT. Обработка пустых токенов, повторяющихся разделителей, разделителей на краях. Предикат F_IsDigit. Разбор пар «ключ:значение» с флагом валидности. Переход от токенов к структурам данных. Лабораторная работа: F_GetNthToken.
Глава 4: Парсинг команд оператора через HMI — Формат «ключ:значение» через запятую. Структура ST_ProcessRecipe с метаданными Valid и ErrorCode. Алгоритм последовательного прохода, обработка ошибок формата (отсутствие ':', неизвестный ключ, нечисловое значение, неполный набор). Шаблон Execute/Busy/Done. Полный FB_RecipeParser с тестами. Лабораторная работа: добавление параметра PRESSURE и анализ обратной совместимости.
Глава 5: Интерпретатор команд технологического процесса — Отличие императивных команд от данных. Почему CASE не работает со строками — цепочка IF/ELSIF. Перечисление E_CmdResult для диагностики. FB_ProcessCommandInterpreter с защитой взаимоисключающих выходов. Интеграция с HMI (буфер, квитирование). Лабораторная работа: команда с несколькими параметрами (MODE:AUTO,SP:75).
Глава 6: Преобразование чисел в строки и обратно — Ограничения встроенных STRING_TO_* (неопределённое поведение). Собственные F_StrToUDInt и F_StrToDInt с флагом bOK и защитой от переполнения через проверку до умножения. Форматирование REAL с фиксированной точностью (округление, дополнение нулями, устранение «-0.00»). F_SecondsToHMS. Лабораторная работа: разделитель тысяч для целых чисел.
Глава 7: Валидация входных данных — Четыре уровня проверки: длина, символы/формат, преобразование типа, технологический диапазон. Классы ошибок E_RecipeValidation. Проверка диапазонов для REAL/DINT/UDINT. Проверка запрещённых символов. Конвейер валидации и FB_RecipeValidator. Лабораторная работа: интеграция с парсером и блокировка запуска.
Глава 8: Форматирование сообщений и CSV для отчётов — Сборка CSV с экранированием полей (разделитель, кавычки, CR/LF, удвоение кавычек). Сборка строки из массива полей. Контроль длины и переполнения. Формирование отчёта по партии. Лабораторная работа: разделитель «;» и обработка поля с точкой с запятой.
Глава 9: Протоколирование событий в текстовый файл — Структура журнала (время, категория, сообщение). Детектор фронта для уникальных записей. Кольцевой буфер в памяти (FB_EventLogger) счётчики записей и потерь. Чтение буфера в хронологическом порядке. Архитектура без блокировки цикла: файловый адаптер, состояния, ротация. Лабораторная работа: реализация ядра журналирования.
Глава 10: Комплексный пример — система штрихкодирования продукции — Формирование внутреннего номера изделия (линия, смена, день, счётчик). Расчёт контрольной цифры EAN‑13 по алгоритму GS1. Сборка полного 13‑значного штрихкода. FB_BarcodeSystem с защитой от повторных срабатываний и кодами ошибок. CSV‑отчёт и запись в журнал. Ограничения учебной модели и требования к промышленной реализации.
Приложения — Сводная таблица строковых функций, соглашения о позициях, что проверять после FIND. Типы данных для диагностики (E_OperationResult, ST_Diagnostic, битовые маски). Структура учебного проекта. Рекомендации по переносимости между CODESYS, TwinCAT, Siemens SCL, Rockwell, OpenPLC.
Глава 1: Введение в промышленную обработку текстовых данных — Пять сценариев использования текста в ПЛК (команды HMI, протоколы, отчёты, штрихкоды, журналы). Особенности типа STRING: фиксированная длина, нуль-терминатор, ограничение 255 символов. Обзор стандартных функций LEN, LEFT, RIGHT, MID, CONCAT, FIND, INSERT, DELETE, REPLACE. Типичные ошибки и их предотвращение.
Глава 2: Базовые операции со строками — Объявление буферов и выделение памяти. Конкатенация через CONCAT (вложенные вызовы и промежуточные переменные). Извлечение подстрок (LEFT, RIGHT, MID) с разбором нумерации позиций. Поиск FIND и обязательная проверка на 0. Точечное редактирование (INSERT, DELETE, REPLACE). Сравнение строк и отсутствие TRIM в стандарте. Лабораторная работа: F_TrimSpaces.
Глава 3: Токенизация и разбор строк — Алгоритм токенизации через WHILE + FIND + LEFT/RIGHT. Обработка пустых токенов, повторяющихся разделителей, разделителей на краях. Предикат F_IsDigit. Разбор пар «ключ:значение» с флагом валидности. Переход от токенов к структурам данных. Лабораторная работа: F_GetNthToken.
Глава 4: Парсинг команд оператора через HMI — Формат «ключ:значение» через запятую. Структура ST_ProcessRecipe с метаданными Valid и ErrorCode. Алгоритм последовательного прохода, обработка ошибок формата (отсутствие ':', неизвестный ключ, нечисловое значение, неполный набор). Шаблон Execute/Busy/Done. Полный FB_RecipeParser с тестами. Лабораторная работа: добавление параметра PRESSURE и анализ обратной совместимости.
Глава 5: Интерпретатор команд технологического процесса — Отличие императивных команд от данных. Почему CASE не работает со строками — цепочка IF/ELSIF. Перечисление E_CmdResult для диагностики. FB_ProcessCommandInterpreter с защитой взаимоисключающих выходов. Интеграция с HMI (буфер, квитирование). Лабораторная работа: команда с несколькими параметрами (MODE:AUTO,SP:75).
Глава 6: Преобразование чисел в строки и обратно — Ограничения встроенных STRING_TO_* (неопределённое поведение). Собственные F_StrToUDInt и F_StrToDInt с флагом bOK и защитой от переполнения через проверку до умножения. Форматирование REAL с фиксированной точностью (округление, дополнение нулями, устранение «-0.00»). F_SecondsToHMS. Лабораторная работа: разделитель тысяч для целых чисел.
Глава 7: Валидация входных данных — Четыре уровня проверки: длина, символы/формат, преобразование типа, технологический диапазон. Классы ошибок E_RecipeValidation. Проверка диапазонов для REAL/DINT/UDINT. Проверка запрещённых символов. Конвейер валидации и FB_RecipeValidator. Лабораторная работа: интеграция с парсером и блокировка запуска.
Глава 8: Форматирование сообщений и CSV для отчётов — Сборка CSV с экранированием полей (разделитель, кавычки, CR/LF, удвоение кавычек). Сборка строки из массива полей. Контроль длины и переполнения. Формирование отчёта по партии. Лабораторная работа: разделитель «;» и обработка поля с точкой с запятой.
Глава 9: Протоколирование событий в текстовый файл — Структура журнала (время, категория, сообщение). Детектор фронта для уникальных записей. Кольцевой буфер в памяти (FB_EventLogger) счётчики записей и потерь. Чтение буфера в хронологическом порядке. Архитектура без блокировки цикла: файловый адаптер, состояния, ротация. Лабораторная работа: реализация ядра журналирования.
Глава 10: Комплексный пример — система штрихкодирования продукции — Формирование внутреннего номера изделия (линия, смена, день, счётчик). Расчёт контрольной цифры EAN‑13 по алгоритму GS1. Сборка полного 13‑значного штрихкода. FB_BarcodeSystem с защитой от повторных срабатываний и кодами ошибок. CSV‑отчёт и запись в журнал. Ограничения учебной модели и требования к промышленной реализации.
Приложения — Сводная таблица строковых функций, соглашения о позициях, что проверять после FIND. Типы данных для диагностики (E_OperationResult, ST_Diagnostic, битовые маски). Структура учебного проекта. Рекомендации по переносимости между CODESYS, TwinCAT, Siemens SCL, Rockwell, OpenPLC.
Рекомендуем /
Электронный вариант книги по встроенному языку 1С с примерами и системой активного поиска
0.0
184 ₽