Работа со строками

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)

Значение в виде строки заданной длины

Используемые модули

FIX

Функция 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

Результат

Используемые модули

UPPERCASE, TRIM, FIND_NONUM

Функция 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

Строка заданной длины, заполненная заданным символом

Используемые модули

CHR_TO_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

Дополненная строка

Используемые модули

FILL

Функция 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

Используемые модули

DEC_TO_INT, EXPN

Функция 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

Значение байта

Используемые модули

BIN_TO_BYTE, OCT_TO_BYTE, HEX_TO_BYTE, DEC_TO_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

Дата и время

Используемые модули

SET_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

Используемые модули

BIN_TO_DWORD, OCT_TO_DWORD, HEX_TO_DWORD, DEC_TO_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

Тип модуля: функция

Переменная

Тип

Описание

Входы

str

STRING

Исходная строка

Выходы

IS_ALNUM

BOOL

Флаг «только буквы и цифры»

Используемые модули

ISC_ALPHA, ISC_NUM

Функция 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

Флаг «только буквы»

Используемые модули

ISC_ALPHA

Функция 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

Флаг «только управляющие символы»

Используемые модули

ISC_CTRL

Функция 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–символы»

Используемые модули

ISC_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

Флаг «все символы в нижнем регистре»

Используемые модули

ISC_LOWER

Функция 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

Флаг «только числа»

ISC_NUM

Функция 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

Флаг «все символы в верхнем регистре»

Используемые модули

ISC_UPPER

Функция 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

Флаг «новое сообщение»

Используемые модули

INC1

Функциональный блок 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

Используемые модули

EXP10

Функция 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

Обработанная строка

Используемые модули

FINDP

Функция 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

Обработанная строка

Используемые модули

TO_UML

Функция 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)

Транслитерация умляута

Используемые модули

CHR_TO_STRING

Функция 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