Каков размер STRING по умолчанию в IEC61131-3?

Я унаследовал программу ПЛК, написанную в структурированном тексте IEC 61131-3. Я только что заметил, что в нем смешаны переменные STRING и несколько переменных STRING(15). Это предполагает, что IEC61131-3 объявляет свои строки с предопределенной длиной (не так ли?) и что может быть длина по умолчанию (есть ли?). переполнение их буферов и игнорирование избытка (возможно?)

В идеале, пожалуйста, подкрепите любой ответ (-ы) ссылкой (-ами) на легкодоступную ссылку IEC61131-3, чтобы можно было просмотреть ее для получения дополнительной информации о STRING и других типах данных IEC 61131-3.


person omatai    schedule 13.09.2016    source источник
comment
Вопрос во втором абзаце не соответствует теме в соответствии с пунктом № 4 в справочном центре. Вы можете удалить его, чтобы избежать закрытых и / или отрицательных голосов.   -  person Ken White    schedule 13.09.2016
comment
Должным образом отредактировано, чтобы сменить акцент - на этот вопрос должен быть окончательный ответ, и одного источника, подтверждающего это, будет достаточно. Я, конечно, не могу найти его после большего количества поисков, чем я могу вынести.   -  person omatai    schedule 13.09.2016


Ответы (2)


Если вы объявляете переменную STRING в IEC61131-3, вы всегда должны указывать длину STRING.

sExample : STRING(n);

n определяет, сколько символов/байтов имеет ваша строка. Символ \0 всегда добавляется, поэтому STRING(n) имеет размер n+1 байт.

В Codesys и TwinCat есть некоторые специфичные для поставщиков особенности, которые не определены в IEC61131-3 (на самом деле):

sExample : STRING; //This is the same as STRING(80)
sExample : T_MaxString; //This is the same as STRING(255)

Вы не должны использовать STRING больше, чем T_MaxString, потому что доступные строковые функции не могут обрабатывать большие строки.

Эта информация основана на Beckhoff Infosys TC3, поскольку CodeSys Документация недоступна, а официальный стандарт IEC61131-3 недоступен в свободном доступе. Поэтому я могу предоставить только конкретную информацию о поставщике.

Вы должны перепроверить это с документацией вашей системы ПЛК.

person Felix Keil    schedule 13.09.2016
comment
Согласовано: IEC61131-3 не находится в свободном доступе. Я предполагаю, что он указывает, что все строки имеют фиксированный максимальный размер, и поэтому, если вы объедините две строки, дальнейшего выделения памяти никогда не будет, а результат будет усечен при необходимости - вы можете это подтвердить? - person omatai; 15.09.2016
comment
В TC3 строковые функции библиотеки Standard ограничены 255 символами, но вы можете работать с более длинными строками, используя расширенные строковые функции в библиотеке Utilities (CONCAT2, FIND2, INSERT2, DELETE2, REPLACE2 и т. д.). Они работают с использованием POINTER и SIZEOF, поэтому могут обрабатывать строки любого размера. Имейте в виду, что следует избегать копирования больших строк в задачах с коротким временем цикла. - person Hydrargyrum; 11.02.2020

Если размер не указан, CODESYS по умолчанию выделяет 80 символов.

https://help.codesys.com/api-content/2/codesys/3.5.12.0/en/_cds_datatype_string/

person jackal_rs    schedule 01.11.2019