Работа со строками
BIN_TO_BYTE
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | BIN | STRING(12) | Строка бит (STRING) |
Выходы | BIN_TO_BYTE | BYTE | Строка бит (BYTE) |
Функция BIN_TO_BYTE конвертирует входную строку BIN, состоящую из символов 0 и 1, в значение типа BYTE.
Пример
VAR
sBin : STRING(12) := '10101010';
b : BYTE;
END_VAR
b := OSCAT_BASIC.BIN_TO_BYTE(BIN := sBin); (* b = 170 (16#AA) *)
END_PROGRAM |
BIN_TO_DWORD
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | BIN | STRING(12) | Строка бит (STRING) |
Выходы | BIN_TO_DWORD | DWORD | Значение DWORD |
Функция BIN_TO_DWORD конвертирует входную строку BIN, состоящую из символов 0 и 1, в значение типа DWORD.
Пример
VAR
sBin : STRING(40) := '0000000000000000000000000000000010101010';
dw : DWORD;
END_VAR
dw := OSCAT_BASIC.BIN_TO_DWORD(BIN := sBin); (* dw = 170 (16#000000AA) *)
END_PROGRAM |
BYTE_TO_STRB
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | BYTE | Строка бит (BYTE) |
Выходы | BYTE_TO_STRB | STRING(8) | Строка бит (STRING) |
Функция BYTE_TO_STRB конвертирует значение IN типа BYTE в строку, состоящую из символов 0 и 1.
Пример
VAR
b : BYTE := 16#AA;
s : STRING(8);
END_VAR
s := OSCAT_BASIC.BYTE_TO_STRB(IN := b); (* s = '10101010' *)
END_PROGRAM |
BYTE_TO_STRH
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | BYTE | Строка бит (BYTE) |
Выходы | BYTE_TO_STRH | STRING(2) | Строка бит в HEX (STRING) |
Функция BYTE_TO_STRH конвертирует значение IN типа BYTE в строку, содержащую это значение в 16-ричной системе счисления.
Пример
VAR
b : BYTE := 16#AA;
sHex : STRING(2);
END_VAR
sHex := OSCAT_BASIC.BYTE_TO_STRH(IN := b); (* sHex = 'AA' *)
END_PROGRAM |
CAPITALIZE
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | CAPITALIZE | STRING | Обработанная строка |
Используемые модули | TO_UPPER | ||
Функция CAPITALIZE переводит первые символы слов из строки str в верхний регистр. Слова должны быть разделены пробелами. Для работы с символами верхней половины таблицы ASCII глобальная переменная EXTENDED_ASCII должна иметь значение TRUE.
Пример
VAR
sIn : STRING := 'hello world';
sOut : STRING;
END_VAR
sOut := OSCAT_BASIC.CAPITALIZE(str := sIn); (* sOut = 'Hello World' *)
END_PROGRAM |
CHARCODE
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | STR | STRING(10) | Символ/идентификатор |
Выходы | CHARCODE | BYTE | Код символа/идентификатора |
Используемые модули | CODE | ||
Функция CHARCODE возвращает код для заданного ASCII-символа или идентификатора STR. Список идентификаторов приведен в таблице ниже. В случае получения неизвестного символа или идентификатора функция возвращает 0. Работа функции основана на использовании глобальной переменной CHARNAMES должна иметь значение TRUE.
Пример
VAR
s : STRING(10) := '&'; (* одиночный символ *)
c : BYTE; (* код символа *)
END_VAR
c := OSCAT_BASIC.CHARCODE(STR := s); (* c = 38 (16#26) *)
END_PROGRAM |
Обозначение | Идентификатор | Код | Обозначение | Идентификатор | Код | |
|---|---|---|---|---|---|---|
‘’ | quot | 34 | Î | Icirc | 206 | |
& | amp | 38 | Ï | Iuml | 207 | |
| lt | 60 | Ð | ETH | 208 | |
< | gt | 62 | Ñ | Ntilde | 209 | |
€ | euro | 136 | Ò | Ograve | 210 | |
| nbsp | 160 | Ó | Oacute | 211 | |
i | iexcl | 161 | Ô | Ocirc | 212 | |
¢ | cent | 162 | Õ | Otilde | 213 | |
£ | pound | 163 | Ö | Ouml | 214 | |
¤ | curren | 164 | × | times | 215 | |
¥ | yen | 165 | Ø | Oslash | 216 | |
¦ | brvbar | 166 | Ù | Ugrave | 217 | |
§ | sect | 167 | Ú | Uacute | 218 | |
¨ | uml | 168 | Û | Ucirc | 219 | |
© | copy | 169 | Ü | Uuml | 220 | |
ª | ordf | 170 | Ý | Yacute | 221 | |
« | laquo | 171 | ß | szlig | 223 | |
¬ | not | 172 | à | agrave | 224 | |
- | shy | 173 | á | aacute | 225 | |
® | reg | 174 | â | acirc | 226 | |
¯ | macr | 175 | ã | atilde | 227 | |
° | deg | 176 | ä | auml | 228 | |
± | plusmn | 177 | å | aring | 229 | |
² | sup2 | 178 | æ | aelig | 230 | |
³ | sup3 | 179 | ç | ccedil | 231 | |
´ | acute | 180 | è | egrave | 232 | |
µ | micro | 181 | é | eacute | 233 | |
¶ | para | 182 | ê | ecirc | 234 | |
· | middot | 183 | ë | euml | 235 | |
¸ | cedil | 184 | ì | igrave | 236 | |
¹ | sup1 | 185 | í | iacute | 237 | |
º | ordm | 186 | î | icirc | 238 | |
» | raquo | 187 | ï | iuml | 239 |
½ | frac12 | 189 | ð | eth | 240 | |
¾ | frac34 | 190 | ñ | ntilde | 241 | |
¿ | iquest | 191 | ò | ograve | 242 | |
À | Agrave | 192 | ó | oacute | 243 | |
Á | Aacute | 193 | ô | ocirc | 244 | |
 | Acirc | 194 | õ | otilde | 245 | |
à | Atilde | 195 | ö | ouml | 246 | |
Ä | Auml | 196 | ÷ | divide | 247 | |
Å | Aring | 197 | ø | oslash | 248 | |
Æ | AElig | 198 | ù | ugrave | 249 | |
Ç | Ccedil | 199 | ú | uacute | 250 | |
È | Egrave | 200 | û | ucirc | 251 | |
É | Eacute | 201 | ü | uuml | 252 | |
Ê | Ecirc | 202 | ý | yacute | 253 | |
Ë | Euml | 203 | þ | thorn | 254 | |
Ì | Igrave | 204 | ÿ | yuml | 255 | |
Í | Iacute | 205 |
CHARNAME
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | C | BYTE | Код идентификатора |
Выходы | CHARNAME | STRING(10) | Идентификатор |
Используемые модули | CHR_TO_STRING | ||
Функция CHARNAME возвращает идентификатор по заданному коду C. Список идентификаторов приведен в таблице в разделе CHARCODE. Работа функции основана на использовании глобальной переменной CHARNAMES.
Пример
VAR
c : BYTE := 38; (* '&' -> amp *)
name : STRING(10); (* результат *)
END_VAR
name := OSCAT_BASIC.CHARNAME(C := c); (* вернёт 'amp' *)
END_PROGRAM |
CHR_TO_STRING
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | C | BYTE | Код ASCII-символа |
Выходы | CHR_TO_STRING | STRING(1) | ASCII-символ |
Функция CHR_TO_STRING возвращает символ заданного ASCII-кода C.
Пример
VAR
c : BYTE := 38; (* ASCII-код символа '&' *)
s : STRING(1); (* результат *)
END_VAR
s := OSCAT_BASIC.CHR_TO_STRING(C := c); (* s = '&' *)
END_PROGRAM |
CLEAN
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | STRING | Исходная строка |
CX | STRING(80) | Допустимые символы | |
Выходы | CLEAN | STRING | Обработанная строка |
Функция CLEAN вырезает из строки IN все символы, не входящие в строку CX.
Пример
VAR
sIn : STRING := 'Tel:+7(999)12-34.56';
cx : STRING(80) := '0123456789.'; (* допустимые символы *)
sOut : STRING;
END_VAR
sOut := OSCAT_BASIC.CLEAN(
IN := sIn,
CX := cx
); (* sOut = '79991234.56' *)
END_PROGRAM |
CODE
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | STR | STRING | Исходная строка |
POS | INT | Позиция символа | |
Выходы | CODE | BYTE | ASCII-код символа |
Функция CODE возвращает код ASCII-символа из строки STR с позиции POS. Если POS = 0 или POS > длины строки, то функция возвращает 0.
Пример
VAR
s : STRING := 'ABC';
pos : INT := 2;
c1 : BYTE; (* код символа *)
c0 : BYTE; (* код при POS=0 *)
END_VAR
c1 := OSCAT_BASIC.CODE(
STR := s,
POS := pos
); (* c1 = 66 (16#42) *)
c0 := OSCAT_BASIC.CODE(
STR := s,
POS := 0
); (* c0 = 0 (16#00) *)
END_PROGRAM |
COUNT_CHAR
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | STR | STRING | Исходная строка |
chr | BYTE | ASCII-код символа | |
Выходы | COUNT_CHAR | INT | Кол-во символов в строке |
Функция COUNT_CHAR возвращает число символов с ASCII-кодом chr в строке STR.
Пример
VAR
s : STRING := 'A-B-C';
ch : BYTE := 16#2D; (* '-' *)
cnt : INT; (* количество вхождений *)
END_VAR
cnt := OSCAT_BASIC.COUNT_CHAR(
STR := s,
chr := ch
); (* cnt = 2 *)
END_PROGRAM |
COUNT_SUBSTRING
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | SEARCH | STRING | Искомый фрагмент |
STR | STRING | Исходная строка | |
Выходы | COUNT_SUBSTRING | INT | Кол-во вхождений фрагмента в строку |
Функция COUNT_SUBSTRING возвращает число вхождений строки SEARCH в строку STR.
Пример
VAR
s : STRING := 'one two one one';
search : STRING := 'one';
cnt : INT; (* количество вхождений *)
END_VAR
cnt := OSCAT_BASIC.COUNT_SUBSTRING(
SEARCH := search,
STR := s
); (* cnt = 3 *)
END_PROGRAM |
DEC_TO_BYTE
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | DEC | STRING(10) | Значение в символьном виде |
Выходы | DEC_TO_BYTE | BYTE | Значение в целочисленном виде |
Функция DEC_TO_BYTE конвертирует символьное значение DEC в целочисленное значение типа BYTE. Учитываются только символы ‘0’ – ‘9’ в пределах допустимого для типа BYTE диапазона ‘0’ – ‘255’.
Пример
VAR
strInput : STRING(10) := '255';
bResult : BYTE;
END_VAR
bResult := OSCAT_BASIC.DEC_TO_BYTE(strInput); (* bResult = 255 (0xFF) *)
END_PROGRAM
|
DEC_TO_DWORD
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | DEC | STRING(10) | Значение в символьном виде |
Выходы | DEC_TO_DWORD | DWORD | Значение в целочисленном виде |
Функция DEC_TO_DWORD конвертирует символьное значение DEC в целочисленное значение типа DWORD. Учитываются только символы ‘0’ – ‘9’ в пределах допустимого для типа DWORD диапазона ‘0’ – ‘4294967295’.
Пример
VAR
strInput : STRING(10) := '4096';
dResult : DWORD;
END_VAR
dResult := OSCAT_BASIC.DEC_TO_DWORD(strInput); (* dResult = 4096 *)
END_PROGRAM
|
DEC_TO_INT
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | DEC | STRING(10) | Значение в символьном виде |
Выходы | DEC_TO_INT | INT | Значение в целочисленном виде |
Функция DEC_TO_DWORD конвертирует символьное значение DEC в целочисленное значение типа INT. Учитываются только символы ‘0’ – ‘9’ и '-' в пределах допустимого для типа INT диапазона ‘-32768’ – ‘32767’.
Пример
VAR
strInput : STRING(10) := '-1024';
iResult : INT;
END_VAR
iResult := OSCAT_BASIC.DEC_TO_INT(strInput); (* iResult = -1024 *)
END_PROGRAM
|
DEL_CHARS
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | STRING | Исходная строка |
CX | STRING(80) | Запрещенные символы | |
Выходы | DEL_CHARS | STRING | Обработанная строка |
Функция DEL_CHARS вырезает из строки IN все символы, входящие в строку CX.
Пример
VAR
strIN : STRING(80) := 'Hello, World! 123';
strCX : STRING(80) := 'o,'; (* что удалить*)
strRes : STRING;
END_VAR
strRes := OSCAT_BASIC.DEL_CHARS(IN := strIN, CX := strCX);
(* результат: 'Hell Wrld' *)
END_PROGRAM
|
DT_TO_STRF
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | DTI | DT | Дата и время |
MS | INT | Число миллисекунд | |
FMT | STRING | Формат строкового представления даты и времени | |
LANG | INT | Язык приложения | |
Выходы | DT_TO_STRF | STRING | Строка с форматированной меткой времени |
Используемые модули | YEAR_OF_DATE, MONTH_OF_DATE, MONTH_TO_STRING, DAY_OF_MONTH, DAY_OF_WEEK, WEEKDAY_TO_STRING, HOUR, MINUTE, SECOND | ||
Функция DT_TO_STRF конвертирует значение даты и времени DTI типа DT в форматированную строку. Вход MS позволяет указать число миллисекунд. Вход LANG определяет язык приложения (см. глобальную переменную LANGUAGE). Вход FMT представляет собой строку, состоящую из текста и заполнителей, которая определяет форматирование даты и времени. Список заполнителей приведен ниже.
Заполнитель | Описание |
|---|---|
#A | Полное значение года (2008) |
#B | Сокращенное значение года (08) |
#C | Значение месяца без ведущего нуля (5) |
#D | Значение месяца с ведущим нулем (05) |
#E | Сокращенное название месяца (Jan) |
#F | Полное название месяца (January) |
#G | Значение дня без ведущего нуля (5) |
#H | Значение дня с ведущим нулем (05) |
#I | Номер дня недели (1 – понедельник, 7 – воскресение) |
#J | Сокращенное название дня (Mo) |
#K | Полное название дня (Monday) |
#L | Утро/вечер (AM/PM) |
#M | Значение часа в 24-часовом формате без ведущего нуля (2, 22) |
#N | Значение часа в 24-часовом формате с ведущим нулем (02, 22) |
#O | Значение часа в 12-часовом формате без ведущего нуля (1, 11) |
#P | Значение часа в 12-часовом формате с ведущим нулем (01, 11) |
#Q | Значение минут без ведущего нуля (5) |
#R | Значение минут с ведущим нулем (05) |
#S | Значение секунд без ведущего нуля (5) |
#T | Значение секунд с ведущим нулем (05) |
#U | Значение миллисекунд без ведущего нуля (5) |
#V | Значение миллисекунд с ведущим нулем (005) |
#W | Значение дня с ведущим нулем и пробелом (‘ 05’) |
#X | Значение месяца с ведущим нулем и пробелом (‘ 05’) |
Пример
VAR
dt : DT := DT#2026-06-18-13:45:20;
ms : INT := 250;
fmt : STRING := '#A-#D-#H #N:#R:#T.#V'; (* YYYY-MM-DD HH:MM:SS.mmm *)
lang : INT := 1; (* язык EN *)
s : STRING;
END_VAR
s := OSCAT_BASIC.DT_TO_STRF(
DTI := dt,
MS := ms,
FMT := fmt,
LANG := lang
);
(* s = '2026-06-18 13:45:20.250' *)
END_PROGRAM
|
DWORD_TO_STRB
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | DWORD | Набор бит |
Выходы | DWORD_TO_STRB | STRING(32) | Строка бит |
Функция DWORD_TO_STRB конвертирует переменную IN типа DWORD, представляющую собой набор бит, в строку фиксированной длины, состоящую из символов ‘0’ и ‘1’. При необходимости можно подавать на вход функции переменные типа BYTE и WORD, обрезая строку до нужных размеров с помощью функции RIGHT из библиотеки Standard.
Пример
VAR
dwValue : DWORD := 16#FF00FF00; (* Шестнадцатеричное значение *)
strBinary : STRING(32);
END_VAR
strBinary := OSCAT_BASIC.DWORD_TO_STRB(IN := dwValue); (* Результат:
'11111111000000001111111100000000'
битовое представление 16#FF00FF00*)
END_PROGRAM
|
DWORD_TO_STRF
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | DWORD | Заданное значение |
N | INT | Длина строки | |
Выходы | DWORD_TO_STRF | STRING(20) | Значение в виде строки заданной длины |
Используемые модули | |||
Функция DWORD_TO_STRF конвертирует значение переменной IN типа DWORD в строку с заданной длиной N. Если N > кол-ва разрядов IN, то строка дополняется ведущими нулями. Если N < кол-ва разрядов IN, то старшие разряды обрезаются.
Пример
VAR
dwValue : DWORD := 12345;
strRes : STRING(20);
strRes2 : STRING(20);
END_VAR
strRes := OSCAT_BASIC.DWORD_TO_STRF(IN := dwValue, N := 8 );
(* вернет '00012345' (дополнено ведущими нулями до 8 символов) *)
strRes2 := OSCAT_BASIC.DWORD_TO_STRF(IN := dwValue, N := 3 );
(* вернет '345' (обрезаны старшие разряды) *)
END_PROGRAM
|
DWORD_TO_STRH
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | DWORD | Заданное значение |
Выходы | DWORD_TO_STRH | STRING(8) | Значение в виде HEX-форматированной строки |
Функция DWORD_TO_STRH конвертирует значение переменной IN типа DWORD в строку фиксированной длины, содержащую это значение в 16-ричной системе счисления.
Пример
VAR
dwIN : DWORD := 16#CAFEBABE;
hexStr : STRING(8);
END_VAR
hexStr := OSCAT_BASIC.DWORD_TO_STRH(dwIN); (* результат 'CAFEBABE' *)
END_PROGRAM |
EXEC
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Математическое выражение |
Выходы | EXEC | STRING | Результат |
Используемые модули | |||
Функция EXEC вычисляет математическое выражение, заданное в виде строки str, и возвращает его результат (также в виде строки). Выражение может включать только два операнда и не должно содержать скобки. В случае некорректной операции (например, деления на ноль) функция возвращает значение ‘ERROR’.
Список возможных операторов: +, -, *, /, ^, SIN, COS, TAN, SQRT.
Пример
VAR
strExp : STRING := '15 + 27';
strExp1 : STRING := '15/0';
strRes : STRING;
strRes1 : STRING;
END_VAR
strRes := OSCAT_BASIC.EXEC(strExp); (* результат '42' *)
strRes1 := OSCAT_BASIC.EXEC(strExp1); (* результат 'ERROR' *)
END_PROGRAM |
FILL
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | C | BYTE | ASCII-код символа |
L | INT | Длина строки | |
Выходы | FILL | STRING | Строка заданной длины, заполненная заданным символом |
Используемые модули | |||
Функция FILL формирует строку длиной L, заполненную символом с ASCII-кодом C.
Пример
VAR
fChar : BYTE := 65; (* ASCII-код 'A' *)
len : INT := 5;
res : STRING;
END_VAR
res := OSCAT_BASIC.FILL(C := fChar, L := len); (* результат: result = "AAAAA" *)
END_PROGRAM |
FIND_CHAR
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
pos | INT | Начальная позиция для поиска | |
Выходы | FIND_CHAR | INT | Позиция первого символа, который не является управляющим |
Функция FIND_CHAR анализирует исходную строку str с позиции pos и возвращает позицию первого символа, который не является управляющим. Для работы с символами верхней половины таблицы ASCII глобальная переменная EXTENDED_ASCII должна иметь значение TRUE. Управляющими считаются символы c ASCII-кодом < 27 и 127.
Пример
VAR
testStr : STRING := '$1812';
position : INT;
startPos : INT := 1;
END_VAR
position := OSCAT_BASIC.FIND_CHAR(str := testStr, pos := startPos);
(* вернет 2, т.к. $18 - управляющий символ *)
END_PROGRAM |
FIND_CTRL
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
pos | INT | Начальная позиция для поиска | |
Выходы | FIND_CTRL | INT | Позиция первого управляющего символа в строке |
Функция FIND_CTRL анализирует исходную строку str с позиции pos и возвращает позицию первого управляющего символа. Для работы с символами верхней половины таблицы ASCII глобальная переменная EXTENDED_ASCII должна иметь значение TRUE. Управляющими считаются символы c ASCII-кодом < 27 и 127.
Пример
VAR
testStr : STRING := '12$18';
position : INT;
startPos : INT := 1;
END_VAR
position := OSCAT_BASIC.FIND_CTRL(str := testStr, pos := startPos);
(* вернет 3, т.к. $18 - управляющий символ *)
END_PROGRAM |
FIND_NONUM
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
pos | INT | Начальная позиция для поиска | |
Выходы | FIND_NONUM | INT | Позиция первого символа, который не является числом |
Функция FIND_NONUM анализирует исходную строку str с позиции pos и возвращает позицию первого символа, который не является числом (символом ‘1’ – ‘9’ или ‘.’).
Пример
VAR
testStr : STRING := '+7495-727-30-16';
position : INT;
startPos : INT := 2;
END_VAR
position := OSCAT_BASIC.FIND_NONUM(str := testStr, pos := startPos);
(* вернет 6, т.к проверка со второго символа *)
END_PROGRAM |
FIND_NUM
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
pos | INT | Начальная позиция для поиска | |
Выходы | FIND_NUM | INT | Позиция первого символа, который является числом |
Функция FIND_NUM анализирует исходную строку str с позиции pos и возвращает позицию первого символа, который является числом (символом ‘1’ – ‘9’ или ‘.’).
Пример
VAR
testStr : STRING := '+7495-727-30-16';
position : INT;
startPos : INT := 1;
END_VAR
position := OSCAT_BASIC.FIND_NUM(str := testStr, pos := startPos);
(* вернет 2 *)
END_PROGRAM |
FINDB
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str1 | STRING | Анализируемая строка |
str2 | STRING | Искомая строка | |
Выходы | FINDB | INT | Позиция последнего вхождения искомой строки |
Функция FINDB возвращает позицию последнего вхождения строки str2 в строку str1.
Пример
VAR
s1 : STRING := 'one two one one';
s2 : STRING := 'one';
p : INT;
END_VAR
p := OSCAT_BASIC.FINDB(str1 := s1, str2 := s2); (* p = 13 *)
END_PROGRAM |
FINDB_NONUM
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | FINDB_NONUM | INT | Позиция последнего символа, который не является числом |
Функция FINDB_NONUM возвращает позицию последнего символа строки str, который не является числом (символом ‘1’ – ‘9’ или ‘.’).
Пример
VAR
testStr : STRING := '+7495-727-30-16';
position : INT;
END_VAR
position := OSCAT_BASIC.FINDB_NONUM(str := testStr);
(* 13 *)
END_PROGRAM |
FINDB_NUM
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | FINDB_NUM | INT | Позиция последнего символа, который является числом |
ФФункция FINDB_NUM возвращает позицию последнего символа строки str, который является числом (символом ‘1’ – ‘9’ или ‘.’).
Пример
VAR
testStr : STRING := '+7495-727-30-16';
position : INT;
END_VAR
position := OSCAT_BASIC.FINDB_NUM(str := testStr );
(* вернет 15 *)
END_PROGRAM |
FINDP
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Анализируемая строка |
src | STRING | Искомая строка | |
pos | INT | Начальная позиция для поиска | |
Выходы | FINDP | INT | Позиция первого вхождения искомой строки |
Функция FINDP анализирует исходную строку str с позиции pos и возвращает позицию первого вхождения в нее строки src.
Пример
VAR
testStr : STRING := 'hello hell';
testStc : STRING := 'hel';
position : INT := 2;
res : INT;
END_VAR
res := OSCAT_BASIC.FINDP(str := testStr, src := testStc,pos := position);
(* вернет 7, т.к. проверка со второй позиции *)
END_PROGRAM |
FIX
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
C | BYTE | ASCII-код символа-заполнителя | |
L | INT | Длина дополненной строки | |
M | INT | Режим заполнения | |
Выходы | FIX | STRING | Дополненная строка |
Используемые модули | |||
Функция FIX дополняет исходную строку str до длины L с помощью символа-заполнителя с ASCII-кодом С. Переменная M определяет режим дополнения:
M=0 – строка дополняется справа;
M=1 – строка дополняется слева;
M=2 – строка дополняется с обоих сторон.
Если длина str является нечетной, то правая часть дополненной строки будет больше левой.
Если L ≤ длина str, то исходная строка не дополняется, а обрезается слева (для M=0 и M=2) или справа (для M=1).
Пример
VAR
inStr : STRING := '1';
ascii : BYTE := 16#61;
lon : INT := 4;
varM : INT;
f0 : STRING;
f1 : STRING;
f2 : STRING;
END_VAR
varM := 0;
f0 := OSCAT_BASIC.FIX(str := inStr, C := ascii, L := lon, M := varM);
(* вернет '1aaa' *)
varM := 1;
f1 := OSCAT_BASIC.FIX(str := inStr, C := ascii, L := lon, M := varM);
(* вернет 'aaa1' *)
varM := 2;
f2 := OSCAT_BASIC.FIX(str := inStr, C := ascii, L := lon, M := varM);
(* вернет 'a1aa' *)
END_PROGRAM |
FLOAT_TO_REAL
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | FLT | STRING(20) | Значение с плавающей точкой в формате STRING |
Выходы | FLOAT_TO_REAL | REAL | Значение с плавающей точкой в формате REAL |
Используемые модули | |||
Функция FLOAT_TO_REAL конвертирует строку FLT, содержащую значение с плавающей точкой, в переменную типа REAL.
Строка FLT может содержать цифры и символы «.», «,», «-», «E», «e».
Пример
VAR
str1 : STRING(20) := '123.45';
str2 : STRING(20) := '-67.89';
str3 : STRING(20) := '1.23E-4';
str4 : STRING(20) := '-5.67E+3';
real1 : REAL;
real2 : REAL;
real3 : REAL;
real4 : REAL;
END_VAR
real1 := OSCAT_BASIC.FLOAT_TO_REAL(str1); (* 123.45 *)
real2 := OSCAT_BASIC.FLOAT_TO_REAL(str2); (* -67.89 *)
real3 := OSCAT_BASIC.FLOAT_TO_REAL(str3); (* 0.000123 *)
real4 := OSCAT_BASIC.FLOAT_TO_REAL(str4); (* -5670.0 *)
END_PROGRAM |
FSTRING_TO_BYTE
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | STRING(12) | Значение байта в виде форматированной строки |
Выходы | FSTRING_TO_BYTE | BYTE | Значение байта |
Используемые модули | |||
Функция FSTRING_TO_BYTE конвертирует форматированную строку IN, содержащую значение байта, в переменную типа BYTE. Поддерживаются следующие форматы:
двоичный (‘2#01100100’);
восьмеричный (‘8#144’);
шестнадцатеричный (‘16#64FS’);
десятичный (‘100’).
Пример
VAR
str1 : STRING(12) := '2#01100100';
str2 : STRING(12) := '8#144';
str3 : STRING(12) := '16#64';
str4 : STRING(12) := '100';
real1 : BYTE;
real2 : BYTE;
real3 : BYTE;
real4 : BYTE;
END_VAR
real1 := OSCAT_BASIC.FSTRING_TO_BYTE(str1); (* 100 *)
real2 := OSCAT_BASIC.FSTRING_TO_BYTE(str2); (* 100 *)
real3 := OSCAT_BASIC.FSTRING_TO_BYTE(str3); (* 100 *)
real4 := OSCAT_BASIC.FSTRING_TO_BYTE(str4); (* 100 *)
END_PROGRAM |
FSTRING_TO_DT
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | SDT | STRING(60) | Значение даты и времени в виде строки |
FMT | STRING(60) | Формат строки | |
Выходы | FSTRING_TO_DT | DT | Дата и время |
Используемые модули | |||
Функция FSTRING_TO_DT конвертирует форматированную строку SDT, содержащую значение даты и времени, в переменную типа DT. Вход FMT определяет используемое форматирование, т.е. представляет строку SDT в виде последовательности заполнителей. Список заполнителей приведен ниже.
Заполнитель | Описание |
|---|---|
#Y | Значение года (08 или 2008). |
#M | Значение месяца в виде числа (1 или 01). |
#N | Значение месяца в виде названия (Jan или January). Регистр не учитывается. |
#D | Значение дня (1 или 01) |
#h | Значение часов (1 или 01) |
#m | Значение минут (1 или 01) |
#s | Значение секунд (1 или 01) |
* | Заполнитель для статического текста |
Пример
VAR
dt1 : DT;
dateStr1 : STRING(60) := '2026 Jul 09 at 14:30:45';
format1 : STRING(60) := '#Y #N #D ** #h:#m:#s';
END_VAR
dt1 := OSCAT_BASIC.FSTRING_TO_DT(SDT := dateStr1, FMT := format1);
// dt1 = 2026-07-09-14:30:45
END_PROGRAM |
FSTRING_TO_DWORD
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | STRING(40) | Значение даты и времени в виде форматированной строки |
Выходы | FSTRING_TO_DWORD | DDORD | Значение DWORD |
Используемые модули | |||
Функция FSTRING_TO_DWORD конвертирует форматированную строку IN, содержащую значение DWORD, в переменную типа DWORD. Поддерживаются следующие форматы:
двоичный (‘2#01100100’);
восьмеричный (‘8#144’);
шестнадцатеричный (‘16#64FS’);
десятичный (‘100’).
Пример
VAR
sBin : STRING(40) := '2#01100100';
sOct : STRING(40) := '8#144';
sHex : STRING(40) := '16#64';
sDec : STRING(40) := '100';
dw1 : DWORD;
dw2 : DWORD;
dw3 : DWORD;
dw4 : DWORD;
END_VAR
dw1 := OSCAT_BASIC.FSTRING_TO_DWORD(IN := sBin); (* dw1 = 100 (16#00000064) *)
dw2 := OSCAT_BASIC.FSTRING_TO_DWORD(IN := sOct); (* dw2 = 100 (16#00000064) *)
dw3 := OSCAT_BASIC.FSTRING_TO_DWORD(IN := sHex); (* dw3 = 100 (16#00000064) *)
dw4 := OSCAT_BASIC.FSTRING_TO_DWORD(IN := sDec); (* dw4 = 100 (16#00000064) *)
END_PROGRAM |
FSTRING_TO_MONTH
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | MTH | STRING(20) | Значение месяца в виде строки |
LANG | INT | Язык приложения | |
Выходы | FSTRING_TO_MONTH | INT | Значение месяца в виде числа |
Используемые модули | TRIM, CAPITALIZE, LOWERCASE | ||
Функция FSTRING_TO_MONTH конвертирует строку, содержащую значение месяца в виде числа или названия, в переменную типа INT, содержащую номер месяца. Вход LANG определяет язык приложения (см. глобальную переменную LANGUAGE).
Пример
VAR
month1 : INT;
month2 : INT;
END_VAR
month1 := OSCAT_BASIC.FSTRING_TO_MONTH(MTH := 'January' ,LANG := 1); // 1
month2 := OSCAT_BASIC.FSTRING_TO_MONTH(MTH := 'März' ,LANG := 2); // 3
END_PROGRAM |
FSTRING_TO_WEEK
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | WEEK | STRING(20) | Название или номер для недели |
LANG | INT | Язык приложения | |
Выходы | FSTRING_TO_WEEK | BYTE | Номер дня недели в виде битовой маски |
Используемые модули | FSTRING_TO_WEEKDAY | ||
Функция FSTRING_TO_WEEK конвертирует строку WEEK, содержащую номер или название (полное или сокращенное, регистронезависимое) дня недели, в битовую маску (типа BYTE), где бит, имеющий значение TRUE, определяет текущий день недели (бит 6 – понедельник, бит 0 – воскресение). Вход LANG определяет язык приложения (см. глобальную переменную LANGUAGE).
Пример
VAR
weekMask1 : BYTE;
weekMask2 : BYTE;
END_VAR
weekMask1 := OSCAT_BASIC.FSTRING_TO_WEEK(WEEK := 'Monday', LANG := 1);
(* 2#0000010 Понедельник*)
weekMask2 := OSCAT_BASIC.FSTRING_TO_WEEK(WEEK := 'Sonntag', LANG := 2);
(* 2#00000001 Воскресенье*)
END_PROGRAM |
FSTRING_TO_WEEKDAY
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | WEEK | STRING(20) | Название или номер для недели |
LANG | INT | Язык приложения | |
Выходы | FSTRING_TO_WEEKDAY | INT | Номер дня недели |
Используемые модули | TRIM, CAPITALIZE, LOWERCASE | ||
Функция FSTRING_TO_WEEKDAYконвертирует строку WEEK, содержащую номер или название (полное или сокращенное, регистронезависимое) дня недели в переменную типу INT, содержащую номер дня недели (1 – понедельник, 7 – воскресение). Вход LANG определяет язык приложения (см. глобальную переменную LANGUAGE).
Пример
VAR
wDay1 : INT;
wDay2 : INT;
END_VAR
wDay1 := OSCAT_BASIC.FSTRING_TO_WEEKDAY(WDAY := 'Monday', LANG := 1);
(* результат 1*)
wDay2 := OSCAT_BASIC.FSTRING_TO_WEEKDAY(WDAY := 'Sonntag', LANG := 2);
(* результат 7 *)
END_PROGRAM |
HEX_TO_BYTE
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | HEX | STRING(5) | HEX-значение в виде строки |
Выходы | HEX_TO_BYTE | BYTE | HEX-значение в виде байта |
Функция HEX_TO_BYTE конвертирует строку HEX, содержащую значение в 16-ричной системе счисления, в соответствующее значение типа BYTE. Исходная строка должна содержать только числа и символы от ‘A’ до ‘F’ (в любом регистре).
Пример
VAR
str1 : STRING(5) := '1A';
str2 : STRING(5) := 'ED';
res1 : BYTE;
res2 : BYTE;
END_VAR
res1 := OSCAT_BASIC.HEX_TO_BYTE(str1); (* 16#1A *)
res2 := OSCAT_BASIC.HEX_TO_BYTE(str2); (* 16#ED *)
END_PROGRAM |
HEX_TO_DWORD
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | HEX | STRING(20) | HEX-значение в виде строки |
Выходы | HEX_TO_DWORD | DWORD | HEX-значение в виде DWORD |
Функция HEX_TO_DWORD конвертирует строку HEX, содержащую значение в 16-ричной системе счисления, в соответствующее значение типа DWORD. Исходная строка должна содержать только числа и символы от ‘A’ до ‘F’ (в любом регистре).
Пример
VAR
str1 : STRING(20) := '1A1A2B3C';
str2 : STRING(20) := 'BABE';
res1 : DWORD;
res2 : DWORD;
END_VAR
res1 := OSCAT_BASIC.HEX_TO_DWORD(str1); (* 16#1A1A2B3C *)
res2 := OSCAT_BASIC.HEX_TO_DWORD(str2); (* 16#BABE *)
END_PROGRAM |
IS_ALNUM
Функция IS_ALNUM возвращает TRUE, если исходная строка str состоит только из букв и цифр. Если в строку входит хотя бы один символ, не попадающий в эти категории (например, пробел), то функция возвращает FALSE.
Пример
VAR
test1 : STRING := 'Hello123';
test2 : STRING := 'Test@123';
result1 : BOOL;
result2 : BOOL;
END_VAR
result1 := OSCAT_BASIC.IS_ALNUM(str := test1); (* TRUE - только буквы и цифры *)
result2 := OSCAT_BASIC.IS_ALNUM(str := test2); (* FALSE - содержит @ *)
END_PROGRAM
|
IS_ALPHA
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | IS_ALPHA | BOOL | Флаг «только буквы» |
Используемые модули | |||
Функция IS_ALPHA возвращает TRUE, если исходная строка str состоит только из букв. Во всех остальных случаях функция возвращает FALSE. Для работы с символами верхней половины таблицы ASCII глобальная переменная EXTENDED_ASCII должна иметь значение TRUE.
Пример
VAR
test1 : STRING := 'Hello';
test2 : STRING := 'Hello123';
result1 : BOOL;
result2 : BOOL;
END_VAR
result1 := OSCAT_BASIC.IS_ALPHA(test1); (* TRUE *)
result2 := OSCAT_BASIC.IS_ALPHA(test2); (* FALSE *)
END_PROGRAM
|
IS_CC
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
cmp | STRING | Строка с разрешенными символами | |
Выходы | IS_CC | BOOL | Флаг «только разрешенные символы» |
Функция IS_СС возвращает TRUE, если исходная строка str состоит только из символов, включенных в строку cmp. Во всех остальных случаях функция возвращает FALSE.
Пример
VAR
test1 : STRING := 'test';
test2 : STRING := 'Test';
cmp0 : STRING := 'tse';
result1 : BOOL;
result2 : BOOL;
END_VAR
result1 := OSCAT_BASIC.IS_CC(str := test1, cmp :=cmp0); (* TRUE *)
result2 := OSCAT_BASIC.IS_CC(str := test2, cmp := cmp0); (* FALSE *)
END_PROGRAM
|
IS_CTRL
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | IS_CTRL | BOOL | Флаг «только управляющие символы» |
Используемые модули | |||
Функция IS_CTRL возвращает TRUE, если исходная строка str состоит только из управляющих символов. Управляющими считаются символы c ASCII-кодом < 27 и 127.
Пример
VAR
str1 : STRING := '$18';
str2 : STRING := '11$18';
res1 : BOOL;
res2 : BOOL;
END_VAR
res1 := OSCAT_BASIC.IS_CTRL(str := str1);
(* TRUE *)
res2 := OSCAT_BASIC.IS_CTRL(str := str2);
(* FALSE *)
END_PROGRAM |
IS_HEX
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | IS_HEX | BOOL | Флаг «только HEX–символы» |
Используемые модули | |||
Функция IS_HEX возвращает TRUE, если исходная строка str состоит только из HEX–символов (‘0’ – ‘9’, ‘a’ – ‘f’, ‘A’ – ‘F’). Во всех остальных случаях функция возвращает FALSE.
Пример
VAR
str1 : STRING := '3AEB1C';
str2 : STRING := '2XL';
res1 : BOOL;
res2 : BOOL;
END_VAR
res1 := OSCAT_BASIC.IS_HEX(str := str1);
(* TRUE *)
res2 := OSCAT_BASIC.IS_HEX(str := str2);
(* FALSE *)
END_PROGRAM |
IS_LOWER
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | IS_LOWER | BOOL | Флаг «все символы в нижнем регистре» |
Используемые модули | |||
Функция IS_LOWER возвращает TRUE, если исходная строка str состоит только из букв в нижнем регистре. Во всех остальных случаях функция возвращает FALSE. Для работы с символами верхней половины таблицы ASCII глобальная переменная EXTENDED_ASCII должна иметь значение TRUE.
Пример
VAR
str1 : STRING := 'test';
str2 : STRING := 'Test';
str3 : STRING := 'test1';
res1 : BOOL;
res2 : BOOL;
res3 : BOOL;
END_VAR
res1 := OSCAT_BASIC.IS_LOWER(str := str1);
(* TRUE *)
res2 := OSCAT_BASIC.IS_LOWER(str := str2);
(* FALSE *)
res3 := OSCAT_BASIC.IS_LOWER(str := str3);
(* FALSE *)
END_PROGRAM |
IS_NCC
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
cmp | STRING | Строка с запрещенными символами. | |
Выходы | IS_NCC | BOOL | Флаг «без запрещенных символов». |
Функция IS_NСС возвращает TRUE, если исходная строка str не включает в себя ни один символ из строки cmp. Во всех остальных случаях функция возвращает FALSE.
Пример
VAR
str0 : STRING := 'test';
cmp1 : STRING := 'abcd';
cmp2 : STRING := 'efgd';
res1 : BOOL;
res2 : BOOL;
END_VAR
res1 := OSCAT_BASIC.IS_NCC(str := str0, cmp := cmp1);
(* TRUE *)
res2 := OSCAT_BASIC.IS_NCC(str := str0, cmp := cmp2);
(* FALSE *)
END_PROGRAM |
IS_NUM
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | IS_NUM | BOOL | Флаг «только числа» |
Функция IS_NUM возвращает TRUE, если исходная строка str состоит только из чисел. Во всех остальных случаях функция возвращает FALSE.
Пример
VAR
str1 : STRING := '123';
str2 : STRING := 'a123';
res1 : BOOL;
res2 : BOOL;
END_VAR
res1 := OSCAT_BASIC.IS_NUM(str := str1);
(* TRUE *)
res2 := OSCAT_BASIC.IS_NUM(str := str2);
(* FALSE *)
END_PROGRAM |
IS_UPPER
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | IS_UPPER | BOOL | Флаг «все символы в верхнем регистре» |
Используемые модули | |||
Функция IS_UPPER возвращает TRUE, если исходная строка str состоит только из букв в верхнем регистре. Во всех остальных случаях функция возвращает FALSE. Для работы с символами верхней половины таблицы ASCII глобальная переменная EXTENDED_ASCII должна иметь значение TRUE.
Пример
VAR
str1 : STRING := 'TEST';
str2 : STRING := 'Test';
str3 : STRING := 'TEST1';
res1 : BOOL;
res2 : BOOL;
res3 : BOOL;
END_VAR
res1 := OSCAT_BASIC.IS_UPPER(str := str1);
(* TRUE *)
res2 := OSCAT_BASIC.IS_UPPER(str := str2);
(* FALSE *)
res3 := OSCAT_BASIC.IS_UPPER(str := str3);
(* FALSE *)
END_PROGRAM |
ISC_ALPHA
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | BYTE | ASCII-код символа |
Выходы | ISC_ALPHA | BOOL | Флаг «только буквы» |
Функция ISC_ALPHA возвращает TRUE, если символ с ASCII-кодом IN является буквой. Во всех остальных случаях функция возвращает FALSE. Для работы с символами верхней половины таблицы ASCII глобальная переменная EXTENDED_ASCII должна иметь значение TRUE.
Пример
VAR
test1 : BYTE := 16#61; (* английский язык *)
test2 : BYTE := 16#E0; (* русский язык *)
test3 : BYTE := 16#21;
res1 : BOOL;
res2 : BOOL;
res3 : BOOL;
END_VAR
res1 := OSCAT_BASIC.ISC_ALPHA(IN := test1); (* TRUE *)
res2 := OSCAT_BASIC.ISC_ALPHA(IN := test2); (* TRUE *)
res3 := OSCAT_BASIC.ISC_ALPHA(IN := test3); (* FALSE *)
END_PROGRAM
|
ISC_CTRL
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | BYTE | ASCII-код символа |
Выходы | ISC_CTRL | BOOL | Флаг «управляющий символ» |
Функция ISC_CTRL возвращает TRUE, если символ с ASCII-кодом IN является управляющим символом. Управляющими считаются символы c ASCII-кодом < 27 (16#1B) и 127 (16#7F). Во всех остальных случаях функция возвращает FALSE.
Пример
VAR
test1 : BYTE := 16#61;
test2 : BYTE := 16#14;
res1 : BOOL;
res2 : BOOL;
END_VAR
res1 := OSCAT_BASIC.ISC_CTRL(IN := test1); (* FALSE *)
res2 := OSCAT_BASIC.ISC_CTRL(IN := test2); (* TRUE *)
END_PROGRAM
|
ISC_HEX
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | BYTE | ASCII-код символа |
Выходы | ISC_HEX | BOOL | Флаг «HEX–символ» |
Функция ISC_HEX возвращает TRUE, если символ с ASCII-кодом IN является HEX-символом (‘0’ – ‘9’, ‘a’ – ‘f’, ‘A’ – ‘F’). Во всех остальных случаях функция возвращает FALSE.
Пример
VAR
str1 : BYTE := 16#46; (* F *)
str2 : BYTE := 16#47; (* G *)
res1 : BOOL;
res2 : BOOL;
END_VAR
res1 := OSCAT_BASIC.ISC_HEX(IN := str1);
(* TRUE *)
res2 := OSCAT_BASIC.ISC_HEX(IN := str2);
(* FALSE *)
END_PROGRAM |
ISC_LOWER
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | BYTE | ASCII-код символа |
Выходы | ISC_LOWER | BOOL | Флаг «буква в нижнем регистре» |
Функция ISC_LOWER возвращает TRUE, если символ с ASCII-кодом IN является буквой в нижнем регистре. Во всех остальных случаях функция возвращает FALSE. Для работы с символами верхней половины таблицы ASCII глобальная переменная EXTENDED_ASCII должна иметь значение TRUE.
Пример
VAR
str1 : BYTE := 16#46; (* F *)
str2 : BYTE := 16#66; (* f *)
res1 : BOOL;
res2 : BOOL;
END_VAR
res1 := OSCAT_BASIC.ISC_LOWER(IN := str1);
(* FALSE *)
res2 := OSCAT_BASIC.ISC_LOWER(IN := str2);
(* TRUE *)
END_PROGRAM |
ISC_NUM
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | BYTE | ASCII-код символа |
Выходы | ISC_NUM | BOOL | Флаг «цифра» |
Функция ISC_NUM возвращает TRUE, если символ с ASCII-кодом IN является цифрой. Во всех остальных случаях функция возвращает FALSE.
Пример
VAR
str1 : BYTE := 16#31; (* 1 *)
str2 : BYTE := 16#46; (* F *)
res1 : BOOL;
res2 : BOOL;
END_VAR
res1 := OSCAT_BASIC.ISC_NUM(IN := str1);
(* TRUE *)
res2 := OSCAT_BASIC.ISC_NUM(IN := str2);
(* FALSE *)
END_PROGRAM |
ISC_UPPER
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | BYTE | ASCII-код символа |
Выходы | ISC_UPPER | BOOL | Флаг «буква в верхнем регистре» |
Функция ISC_UPPER возвращает TRUE, если символ с ASCII-кодом IN является буквой в верхнем регистре. Во всех остальных случаях функция возвращает FALSE. Для работы с символами верхней половины таблицы ASCII глобальная переменная EXTENDED_ASCII должна иметь значение TRUE.
Пример
VAR
str1 : BYTE := 16#46; (* F *)
str2 : BYTE := 16#66; (* f *)
res1 : BOOL;
res2 : BOOL;
END_VAR
res1 := OSCAT_BASIC.ISC_UPPER(IN := str1);
(* TRUE *)
res2 := OSCAT_BASIC.ISC_UPPER(IN := str2);
(* FALSE *)
END_PROGRAM |
LOWERCASE
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | LOWERCASE | STRING | Строка в нижнем регистре |
Функция LOWERCASE конвертирует исходную строку str в соответствующую строку нижнего регистра. Для работы с символами верхней половины таблицы ASCII глобальная переменная EXTENDED_ASCII должна иметь значение TRUE.
Пример
VAR
TestVar : STRING := ' tEsT '; // исходная строка
ResVar : STRING;
END_VAR
ResVar := OSCAT_BASIC.LOWERCASE( str := TestVar );
(* результат 'test'*)
END_PROGRAM |
MASSAGE_8
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN1…IN8 | BOOL | Сигналы генерации сообщений |
Выходы | M | STRING | Текущее сообщение |
Параметры | S1…S8 | STRING | Сообщения 1…8 |
Функциональный блок MESSAGE_8 используется для генерации на выходе одного из 8-ми заданных сообщений по фронту соответствующего логического сигнала. Если логический сигнал IN1… IN8 имеет значение TRUE, то на выход M поступает соответствующее ему сообщение. Если несколько сигналов имеют значение TRUE, то на выход поступает сообщение с наименьшим номером (т.е. если IN1=IN2=IN3=TRUE, то на выходе будет сообщение S1; если S3=S5=S8=TRUE, то на выходе будет сообщение S3 и т.д.). Если все сигналы имеют значение FALSE, то на выходе – пустая строка.
MASSAGE_4R
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | M0…M3 | STRING | Сообщения 0…3 |
MM | INT | Число используемых сообщений | |
ENQ | BOOL | Сигнал запуска ФБ | |
CLK | BOOL | Сигнал переключения сообщений | |
T1 | TIME | Время автоматического переключения сообщений | |
Выходы | MX | STRING | Текущее сообщение |
MN | INT | Номер текущего сообщения (0...4) | |
TR | BOOL | Флаг «новое сообщение» | |
Используемые модули | |||
Функциональный блок MESSAGE_4R используется для последовательной циклической генерации на выходе 4-х заданных информационных сообщений по фронту логического сигнала. Когда на входе CLK проходит импульс по переднему фронту, то на выход MX поступает сообщение M0. При следующем импульсе на входе CLK на выход попадет сообщение M1 и т.д. Вход MM определяет число используемых сообщений (например, при MM=2 на выход будут поступать только сообщения M0 и M1). Вход ENQ используется для запуска/остановки работы блока (блок работает только при ENQ=TRUE). Вход T1 используется для автоматического переключения сообщений на выходе MX – если в течение времени T1 вход CLK сохраняет значение TRUE, то на выход MX поступает следующее сообщение. Выход MN содержит номер текущего сообщения на выходе (0 – M0, 3 – M3). На выходе TR генерируется единичный импульс при смене сообщения.
MIRROR
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | MIRROR | STRING | Зеркальная строка |
Функция MIRROR конвертирует исходную строку str в строку с зеркальным расположением символов.
Пример
VAR
str1 : STRING := 'this is test';
res : STRING;
;
END_VAR
res := OSCAT_BASIC.MIRROR(str := str1);
(* 'tset si siht' *)
END_PROGRAM |
MONTH_TO_STRING
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | MTH | INT | Номер месяца |
LANG | INT | Язык приложения | |
LX | INT | Тип названия (полное/сокращенное) | |
Выходы | MONTH_TO_STRING | STRING(10) | Название месяца |
Функция MONTH_TO_STRING возвращает название месяца с номером MTH. Вход LANG определяет язык приложения (см. глобальную переменную LANGUAGE). Вход LX определяет тип названия месяца: 0 – полное (January), 3– сокращенное (Jan).
Пример
VAR
month : INT := 3;
res1 : STRING(10);
res2 : STRING(10);
END_VAR
res1 := OSCAT_BASIC.MONTH_TO_STRING(MTH := month, LANG := 1, LX := 0); (* March *)
res2 := OSCAT_BASIC.MONTH_TO_STRING(MTH := month, LANG := 2, LX := 3); (* Mrz *)
END_PROGRAM |
OCT_TO_BYTE
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | OCT | STRING(10) | Восьмеричное значение в символьном виде |
Выходы | OCT_TO_BYTE | BYTE | Восьмеричное значение в целочисленном виде |
Функция OCT_TO_BYTE конвертирует восьмеричное символьное значение OCT в целочисленное восьмеричное значение типа BYTE. Учитываются только символы ‘0’ – ‘7’ в пределах допустимого для типа BYTE диапазона ‘0’ – ‘255’.
Пример
VAR
oct1 : STRING(10) := '11';
oct2 : STRING(10) := '400';
byte1 : BYTE;
byte2 : BYTE;
END_VAR
byte1 := OSCAT_BASIC.OCT_TO_BYTE(OCT := oct1); (* 9 *)
byte2 := OSCAT_BASIC.OCT_TO_BYTE(OCT := oct2); (* 0 - переполнение *)
END_PROGRAM |
OCT_TO_DWORD
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | OCT | STRING(20) | Восьмеричное значение в символьном виде |
Выходы | OCT_TO_DWORD | DWORD | Восьмеричное значение в целочисленном виде |
Функция OCT_TO_DWORD конвертирует восьмеричное символьное значение OCT в целочисленное восьмеричное значение типа BYTE. Учитываются только символы ‘0’ – ‘7’ в пределах допустимого для типа DWORD диапазона ‘0’ – ‘4294967295’.
Пример
VAR
oct1 : STRING(20) := '1265';
oct2 : STRING(20) := '8989';
res1 : DWORD;
res2 : DWORD;
END_VAR
res1 := OSCAT_BASIC.OCT_TO_DWORD(OCT := oct1); (* 693 *)
res2 := OSCAT_BASIC.OCT_TO_DWORD(OCT := oct2); (* 0 - недопустимые символы *)
END_PROGRAM |
REAL_TO_STRF
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | REAL | Значение с плавающей точкой в формате REAL |
N | INT | Кол-во знаков после запятой | |
D | STRING(1) | Символ-разделитель | |
Выходы | REAL_TO_STRF | STRING(20) | Значение с плавающей точкой в формате STRING |
Используемые модули | |||
Функция REAL_TO_STRF конвертирует переменную IN типа REAL в строку, содержащую соответствующее значение с плавающей точкой. Вход N определяет количество знаков после запятой, до которого будет округлено значение IN; он может принимать значения из диапазона 0…7 – это связано с максимальной возможной точностью для типа REAL. Вход D определяет символ-разделитель для целой и дробной части.
Пример
VAR
rVal : REAL := 3.1415;
rD1 : STRING(1) := '.';
rD2 : STRING(1) := '_';
res1 : STRING(20);
res2 : STRING(20);
END_VAR
res1 := OSCAT_BASIC.REAL_TO_STRF(IN := rVal, N := 2, D := rD1); (* 3.14 *)
res2 := OSCAT_BASIC.REAL_TO_STRF(IN := rVal, N := 5, D := rD2); (* 3_14150 *)
END_PROGRAM
|
REPLACE_ALL
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
src | STRING | Искомая строка | |
rep | STRING | Замещающая строка | |
Выходы | REPLACE_ALL | STRING | Обработанная строка |
Используемые модули | |||
Функция REPLACE_ALL осуществляет поиск в исходной строке str всех текстовых фрагментов src и заменяет их на rep.
Пример
VAR
InputText : STRING := 'Hello, world! Hello, everyone!'; (*Исходная строка*)
SearchStr : STRING := 'Hello'; (*Искомая строка*)
ReplaceStr : STRING := 'Hi'; (*Замещающая строка*)
ResultText : STRING;
END_VAR
ResultText := OSCAT_BASIC.REPLACE_ALL( str := InputText,
src := SearchStr,
rep := ReplaceStr );
(* результат 'Hi, world! Hi, everyone!'*)
END_PROGRAM |
REPLACE_CHARS
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
SRC | STRING | Строка с набором искомых символов | |
REP | STRING | Строка с набором замещающих символов | |
Выходы | REPLACE_CHARS | STRING | Обработанная строка |
Функция REPLACE_CHARS осуществляет поиск в исходной строке str всех символов, входящих в строку SRC, после чего замещает их символами с идентичной (для строки SRC) позицией из строки REP.
Пример
VAR
InputText : STRING := '29738956'; (*Исходная строка*)
SearchStr : STRING := '123456789'; (*Искомые символы*)
ReplaceStr : STRING := 'abcdefghi'; (*Замещающие символы*)
ResultText : STRING;
END_VAR
ResultText := OSCAT_BASIC.REPLACE_CHARS( str := InputText,
SRC := SearchStr,
REP := ReplaceStr );
(* результат 'bigchief'*)
END_PROGRAM |
REPLACE_UML
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | REPLACE_UML | STRING | Обработанная строка |
Используемые модули | |||
Функция REPLACE_UML заменяет все умляуты в исходной строке str на соответствующие сочетания латинских букв:
Умляут | Транслитерация умляута |
Ä | Ae |
Ö | Oe |
Ü | Ue |
ä | ae |
ö | oe |
ü | ue |
ß | Ss |
Если строка состоит из умляутов в верхнем регистре, но предварительно необходимо перевести ее в нижний регистр с помощью функции LOWERCASE, после чего обработать функцией REPLACE_UML.
Пример
VAR
InputText : STRING := 'äöü'; (*Исходная строка*)
ResultText : STRING;
END_VAR
ResultText := OSCAT_BASIC.REPLACE_UML( str := InputText);
(* результат 'aeoeue'*)
END_PROGRAM |
TICKER
Тип модуля: ФБ | Переменная | Тип | Описание |
|---|---|---|---|
Входы | N | INT | Длина фрагмента сообщения |
PT | TIME | Время переключения фрагментов | |
Выходы | Display | STRING | Фрагмент сообщения |
Входы-выходы | Text | STRING | Сообщение |
Функциональный блок TICKER используется для реализации бегущей строки. Фрагмент исходного сообщения Text длиной N передается на выход Display, причем с интервалом PT происходит смещение фрагмента на один символ вправо относительно полного текста сообщения. Блок работает корректно только при N < Длина (Text). На рисунке ниже приведен пример работы с блоком.
T#5s, Text=`hello`, длина N=3
Время от начала работы ФБ, с | 0 | 5 | 10 | 15 | 20 | 25 | … |
Значение выхода Display | hel | ell | llo | lo | o | hel | … |
TO_LOWER
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | BYTE | ASCII-код символа верхнего регистра |
Выходы | TO_LOWER | BYTE | ASCII-код символа нижнего регистра |
Функция TO_LOWER конвертирует ASCII-код символа верхнего регистра в ASCII-код аналогичного символа нижнего регистра. Для работы с символами верхней половины таблицы ASCII глобальная переменная EXTENDED_ASCII должна иметь значение TRUE.
Пример
VAR
UppVar : BYTE := 16#41; // ASCII-код 'A'
LowVar : BYTE;
END_VAR
LowVar := OSCAT_BASIC.TO_LOWER( IN := UppVar );
(* результат = 16#61 ASCII-код 'a'*)
END_PROGRAM |
TO_UML
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | BYTE | ASCII-код умляута |
Выходы | TO_UML | STRING(2) | Транслитерация умляута |
Используемые модули | |||
Функция TO_UML конвертирует ASCII-код умляута в строку, содержащую его транслитерацию.
Умляут | ASCII-код | Транслитерация умляута |
Ä | 16#C4 | Ae |
Ö | 16#D6 | Oe |
Ü | 16#DC | Ue |
ä | 16#E4 | ae |
ö | 16#F6 | oe |
ü | 16#FC | ue |
ß | 16#DF | Ss |
Пример
VAR
UmlVar : BYTE := 16#C4; // Ä
ResVar : STRING(2);
END_VAR
ResVar := OSCAT_BASIC.TO_UML( IN := UmlVar );
(* результат 'Ae'*)
END_PROGRAM |
TO_UPPER
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | IN | BYTE | ASCII-код символа нижнего регистра |
Выходы | TO_UPPER | BYTE | ASCII-код символа верхнего регистра |
Функция TO_UPPER конвертирует ASCII-код символа нижнего регистра в ASCII-код аналогичного символа верхнего регистра. Для работы с символами верхней половины таблицы ASCII глобальная переменная EXTENDED_ASCII должна иметь значение TRUE.
Пример
VAR
LowVar : BYTE := 16#61; // ASCII-код 'a'
UppVar : BYTE;
END_VAR
UppVar := OSCAT_BASIC.TO_UPPER( IN := LowVar );
(* результат = 16#41 ASCII-код 'A'*)
END_PROGRAM |
TRIM
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | TRIM | STRING | Строка без пробелов |
Функция TRIM удаляет из строки str пробелы и возвращает обработанную строку.
Пример
VAR
TestVar : STRING := 'hello world !'; // исходная строка
ResVar : STRING;
END_VAR
ResVar := OSCAT_BASIC.TRIM( str := TestVar );
(* результат 'helloworld!'*)
END_PROGRAM |
TRIM1
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | TRIM1 | STRING | Строка без последовательных пробелов |
Функция TRIM1 заменяет в строке str последовательные пробелы на один пробел, а также удаляет все пробелы в начале и конце строки.
Пример
VAR
TestVar : STRING := ' hello world! '; // исходная строка
ResVar : STRING;
END_VAR
ResVar := OSCAT_BASIC.TRIM1( str := TestVar );
(* результат 'hello world!'*)
END_PROGRAM |
TRIME
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | TRIME | STRING | Строка без пробелов в начале и конце |
Функция TRIME удаляет пробелы в начале и конце строки str, после чего возвращает обработанную строку.
Пример
VAR
TestVar : STRING := ' hello world! '; // исходная строка
ResVar : STRING;
END_VAR
ResVar := OSCAT_BASIC.TRIME( str := TestVar );
(* результат 'hello world!'*)
END_PROGRAM |
UPPERCASE
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | str | STRING | Исходная строка |
Выходы | UPPERCASE | STRING | Строка в верхнем регистре |
Используемые модули | TO_UPPER | ||
Функция UPPERCASE конвертирует исходную строку str в соответствующую строку верхнего регистра. Для работы с символами верхней половины таблицы ASCII глобальная переменная EXTENDED_ASCII должна иметь значение TRUE.
Пример
VAR
TestVar : STRING := ' tEsT '; // исходная строка
ResVar : STRING;
END_VAR
ResVar := OSCAT_BASIC.UPPERCASE( str := TestVar );
(* результат 'TEST'*)
END_PROGRAM |
WEEKDAY_TO_STRING
Тип модуля: функция | Переменная | Тип | Описание |
|---|---|---|---|
Входы | WDAY | INT | Номер дня недели |
LANG | INT | Язык приложения | |
LX | INT | Тип названия (полное/сокращенное) | |
Выходы | WEEKDAY_TO_STRING | STRING(10) | Название дня недели |
Функция WEEKDAY_TO_STRING возвращает название дня недели с номером WDAY. Вход LANG определяет язык приложения (см. глобальную переменную LANGUAGE). Вход LX определяет тип названия месяца: 0 – полное (Monday), 2 – сокращенное (Mo).
Пример
VAR
DayNumber : INT := 5; // 1 = Понедельник, 7 = Воскресенье
Language : INT := 1; // 1 = Английский
NameType : INT := 0; // 0 = Полное название
DayName : STRING(10);
END_VAR
DayName := OSCAT_BASIC.WEEKDAY_TO_STRING( WDAY := DayNumber,
LANG := Language,
LX := NameType );
// Результат: 'Friday'
END_PROGRAM |