Подборка по базе: Детский массаж. Поэтапное руководство.pdf, Инструкция для пользователя по подключению к АИС Расчет через FT, Руководство пользователя 7.docx, Работа в АИС СГО под функцией пользователя Учитель (1+).pdf, Приложение 5. Методическое руководство к дидактическому матер, РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ПО ПРОВЕДЕНИЮ ЭКСПЕРТИЗЫ ЗАЯВОК.docx, Практическая работа. Составление руководства пользователя ис.doc, Методическое руководство.docx, Памятка пользователя в МИС.pdf, Базисное руководство по психотерапии.pdf
3571
«Библиотека ‘SysLibCallback’ не включена в проект! Невозможно сгенерировать системные
события.»
Для управления задачами по событиям нужна библиотека SysLibCallback.lib. Включите библиоте- ку в проект или измените конфигурацию.
3575
«Задача <‘name>’: время цикла должно быть кратно <число> µs.»
Поправьте время цикла задачи в диалоге Taskattributes. Эта величина должна быть кратна времени системного ‘тика’ вашей целевой системы.
3600
«Неявные переменные не найдены!»
Дайте команду ‚Rebuild all’. Если это не поможет, свяжитесь с изготовителем ПЛК
3601
«<имя> — зарезервированное имя переменной»
Имя данной переменной зарезервировано генератором кода, измените его.
3610
» ‘<имя>’ не поддерживается»
Данное свойство не поддерживается в установленной целевой системе.
3611
«Неверная директория компиляции ‘<имя>'»
В ‚Project’ ‚Options’ ‚Directories’ задана несуществующая директория для файлов компилятора.
3612
«Превышено максимальное количество POU (<число>)! Компиляция прервана.»
В проекте используется слишком много POU. Измените максимум POU в Target Settings / Memory
Layout.
3613
«Компиляция отменена»
Компиляция прервана пользователем.
3614
«Проект не содержит POU с именем ‘<имя>’ (главная процедура) или не определена конфи-
гурация задач»
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-125
Создайте главный POU (т.е. PLC_PRG) или задайте конфигурацию задач.
3615
«<имя> (главная процедура) должна быть типа program»
Главный POU (т.е. PLC_PRG) должен иметь тип программа.
3616
«Программы не должны быть реализованы во внешних библиотеках»
Проект, который предполагается сохранить, как внешнюю библиотеку, содержит программы. Они не будут доступны в библиотеке.
3617
«Недостаточно памяти»
Увеличьте размер виртуальной памяти вашего компьютера.
3618
«Битовый доступ не поддерживается текущим генератором кода!»
Битовый доступ не поддерживается генератором кода данной целевой системы.
3619
«Разные версии объектного файла ‘<имя>’ и библиотеки ‘<имя>’!»
Убедитесь, что файлы *.lib и *.obj или *.hex соответствуют одной версии библиотеки. Проверьте даты создания этих файлов.
3620
«POU ‘<имя>
не может содержаться внутри библиотеки»
Вы пытаетесь сохранить библиотеку в формате версии 2.1. В этой версии библиотека не может со- держать PLC_PRG, удалите или переименуйте его.
3621
«Невозможно записать файл компиляции ‘<имя>'»
Вероятнее всего, в директории, указанной для файлов компилятора, уже имеется файл с таким именем, имеющий атрибут «Только чтение «. Удалите данный файл либо измените ему права дос- тупа.
3622
«Невозможно создать символьный файл ‘<имя>'»
Вероятнее всего, в директории, указанной для символьных файлов (обычно это директория проек- та), уже имеется файл с таким именем, имеющий атрибут «Только чтение «. Удалите данный файл либо измените ему права доступа.
3623
«Невозможно записать файл загрузочного проекта ‘<имя>'»
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-126
Вероятнее всего, в директории, указанной для загрузочных файлов (специфичных для целевой платформы), уже имеется файл с таким именем, имеющий атрибут «Только чтение «. Удалите дан- ный файл либо измените ему права доступа.
3624
«Настройка целевой платформы <установка1>=<значение> несовместима с <установ-
ка2>=<значение>»
Проверьте и исправьте данные установки в диалоге Targetsettings dialogs (вкладка Resources). Если они недоступны для редактирования, то обратитесь к изготовителю контроллера.
3700
«POU с именем ‘<имя>’ уже включен в библиотеку ‘<имя>'»
Имя POU проекта уже использовано в библиотеке, измените его.
3701
«Имя, используемое в интерфейсе, отличается от имени POU»
Используйте команду ‘Project’ ‘Rename object’ для изменения памяти POU в организаторе объек- тов либо измените имя в окне объявления POU. Имя POU следует за одним из ключевых слов:
PROGRAM, FUNCTION или FUNCTIONBLOCK.
3702
«Список идентификаторов переполнен»
Не более 100 идентификаторов могут быть использованы при объявлении одной переменной.
3703
«Повторное определение идентификатора ‘<имя>'»
Убедитесь, что только один идентификатор ‘<имя>’ присутствует в разделе объявлений POU.
3704
«Рекурсия данных: «
->
-> .. ->
«»
Применен недопустимый вызов экземпляром функционального блока самого себя.
3705
«<имя>: VAR_IN_OUT недопустим в POU верхнего уровня, если не задана конфигурация за-
дач»
Создайте конфигурацию задач или убедитесь, что переменные VAR_IN_OUT не используются в
PLC_PRG.
3720
«После слова ‘AT’ должен идти адрес»
После ключевого слова AT должен быть указан корректный адрес.
3721
«Только ‘VAR’ и ‘VAR_GLOBAL’ можно помещать по адресам»
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-127
Поместите объявление в область VAR или VAR_GLOBAL.
3722
«По битовым адресам доступны только переменные типа ‘BOOL'»
Только переменные типа BOOL могут адресовать биты. Измените адрес или тип переменной.
3726
«Константы нельзя размещать по прямым адресам»
Константы нельзя располагать по прямым адресам.
3727
«По этому адресу нельзя размещать массив»
Объявление может быть произведено по указанному адресу. Измените адрес.
3728
«Неверный адрес: ‘<адрес>'»
Указанный адрес не определен для заданной конфигурации ПЛК. Измените адрес или конфигура- цию ПЛК.
3729
«Неверный тип ‘<имя>’ по адресу: ‘<имя>’ «
Переменная данного типа не может быть размещена по указанному адресу. Например: адрес AT
%IB1:WORD; не допустим, если включено выравнивание по четным адресам. Данная ошибка мо- жет возникнуть при попытке разместить массив по недопустимому прямому адресу.
3740
«Неверный тип: ‘<имя>’ «
Ошибка в типе данных объявления.
3741
«Требуется указание типа»
Ключевое слово или оператор использован вместо типа данных
3742
«Необходимо значение перечисления»
В определении перечисления пропущен идентификатор после скобки либо разделитель.
3743
«Необходимо целое число»
Перечисления можно инициализировать только целыми значениями (INT).
3744
«Константа перечисления ‘<имя>’ уже определена»
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-128
Проверьте соблюдение следующих правил при объявлении перечислений:
•
Все значения в одном перечислении должны быть уникальны.
•
Во всех глобальных перечислениях все значения должны быть уникальны.
•
Во всех локальных перечислениях все значения должны быть уникальны.
3745
«Переменные с ограниченным диапазоном допустимы только для Integers!»
Переменные с ограниченным диапазоном образуются только на целочисленных типах.
3746
«Диапозон ‘<имя>’ неприменим для типа данных ‘<имя>'»
Один из пределов диапазона выходит за область значений базового типа.
3747
«Неизвестная длина строки: ‘<имя>'»
Для определения длины строки используется ошибочная константа.
3748
«Размерность массива не должна превышать 3»
Нельзя использовать массивы с размерностью более трех. Используйте ARRAY OF ARRAY при необходимости.
3749
«Нижняя граница ‘<имя>’ не задана»
Не задана константа, определяющая нижнюю границу диапазона.
3750
«Верхняя граница ‘<имя>’ не задана»
Не задана константа, определяющая верхнюю границу диапазона.
3751
«Неверная длина строки ‘<количество символов>'»
Заданный размер строки превышает допустимый в данной целевой системе.
3752
«Размерность вложенного массива не должна превышать 9»
Массив может быть 1- 2- или 3-мерный. Размерность можно еще увеличить путем вложений мас- сивов (например, «arr: ARRAY [0..2,0..2,0..2] OF ARRAY [0..2,0..2,0..2] OF ARRAY [0..2,0..2,0..2,
0..2] OF DINT». Максимальная размерность не должна превышать 9. Данная ошибка говорит о превышении этого ограничения. Уменьшите вложенность массивов.
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-129
3760
«Неверное начальное значение»
Используйте для инициализации значение, совместимое с типом переменной. Изменяя объявле- ние, воспользуйтесь диалогом объявлений переменных (Shift/F2 или ‘Edit»Autodeclare’).
3761
«Переменные ‘VAR_IN_OUT’ не могут иметь начальных значений.»
Удалите инициализацию в объявлении переменной VAR_IN_OUT.
3780
«Здесь должно быть: ‘VAR’, ‘VAR_INPUT’, ‘VAR_OUTPUT’ или ‘VAR_IN_OUT'»
В следующей за определением имени POU строке должно быть одно из перечисленных ключевых слов.
3781
«Необходим ‘END_VAR’ или идентификатор»
Введите корректное определение END_VAR в данной строке окна объявлений.
3782
«Ошибочное окончание инструкции или объявления»
В разделе объявлений: добавьте ключевое слово END_VAR в конце раздела.
В разделе кода: добавьте инструкцию, завершающую команду (например, END_IF).
3783
«Необходим ‘END_STRUCT’ или идентификатор»
Проверьте правильность окончания определения типа.
3784
«Текущее целевое устройство не поддерживает аттрибут <имя аттрибута>»
Данная целевая система не поддерживает переменные такого типа (например, RETAIN, PERSIS-
TENT)
3800
«Недостаточно памяти для глобальных переменных. Увеличьте объем доступной памяти в
опциях проекта.»
Увеличьте число сегментов в опциях диалога Project’ ‚Options’ ‚Build’.
3801
«Переменная ‘<имя>’ слишком велика (<число> байт)»
Переменная использует тип, занимающий более одного сегмента
Размер сегмента определяется настройкой целевой платформы. Если вы не нашли этого парамет- ра в опциях памяти, свяжитесь с изготовителем ПЛК.
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-130
3802
«Недостаточно энергонезависимой памяти. Переменная ‘<имя>’, <число> байт.»
Израсходована вся память Retain переменных. Размер этой области определяется настройкой це- левой платформы. Если вы не нашли этого параметра в опциях памяти, свяжитесь с изготовителем
ПЛК (обратите внимание: если хотя бы одна переменная функционального блока объявлена как
Retain, то все данные экземпляра сохраняются в Retain области!)
3803
«Недостаточно общей памяти данных. Переменная ‘<имя>’, ‚<число>’ байт.»
Израсходована вся память глобальных переменных. Размер этой области определяется настройкой целевой платформы. Если вы не нашли этого параметра в опциях памяти, свяжитесь с изготовите- лем ПЛК
3820
«‘VAR_OUTPUT’ и ‘VAR_IN_OUT’ недопустимы в функциях»
В функциях нельзя использовать выходы или входы-выходы.
3821
«В функции должен быть, по крайней мере, один вход»
Функция должна иметь как минимум один параметр.
3840
«Неизвестная глобальная переменная ‘<имя>’!»
В POU используется глобальная переменная VAR_EXTERNAL, необъявленная в списке глобаль- ных.
3841
«Объявление элемента ‘<имя>’ не совпадает с его глобальным объявлением!»
Тип переменной в объявлении VAR_EXTERNAL не совпадает с типом в списке глобальных объ- явлений.
3850
«Объявление развернутой структуры ‘<имя>’ внутри структуры ‘<имя>’ недопустимо!»
Такое определение структуры нарушает распределение памяти. Измените определение соответст- вующим образом.
3900
«Несколько подчеркиваний в идентификаторе»
Удалите повторное подчеркивание в идентификаторе.
3901
«Максимальное количество числовых полей в адресе — 4»
Попытка присваивания по прямому адресу, содержащему более 4-х уровней (например,
%QB0.1.1.0.1).
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-131
3902
«Ключевые слова должны быть напечатаны заглавными буквами»
Используйте заглавные буквы в ключевых словах или включите опцию ‚Autoformat’ in ‚Project’
‚Options’.
3903
«Неверная константа длительности»
Нотация константы не соответствует МЭК 61131-3.
3904
«Переполнение длительности»
Заданное значение длительности нельзя преобразовать во внутренний формат. Максимальное значение длительности: t#49d17h2m47s295ms.
3905
«Неверный формат даты»
Нотация константы не соответствует МЭК 61131-3.
3906
«Неверная константа времени дня»
Нотация константы не соответствует МЭК 61131-3.
3907
«Неверная константа даты и времени»
Нотация константы не соответствует МЭК 61131-3.
3908
«Неверная строковая константа»
Строковая константа содержит недопустимый символ.
4000
«Отсутствует идентификатор»
В этой позиции должен быть корректный идентификатор
4001
«Переменная ‘<имя>’ не объявлена»
Объявите переменную локально или глобально.
4010
«Несоответствие типов: невозможно преобразовать ‘<имя>’ в ‘<имя>’.»
Проверьте, какой тип данных требуется этому оператору, и измените тип или используйте другую переменную.
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-132
4011
«Несоответствие операнда ‘<имя>’ в ‘<имя>’: невозможно преобразовать ‘<имя>’ в ‘<имя>’.»
Тип актуального параметра не может быть автоматически преобразован в тип формального пара- метра. Используйте другую переменную или явное преобразование типов.
4012
«Несоответствие параметра ‘<имя>’ в ‘<имя>’: невозможно преобразовать ‘<имя>’ в
‘<имя>’.»
Значение ошибочного типа присваивается входной переменной ‘<имя>. Замените переменную или укажите соответствующий префикс константы.
4013
«Несоответствие выхода ‘<имя>’ в ‘<имя>’: невозможно преобразовать ‘<имя>’ в ‘<имя>’.»
Значение ошибочного типа присваивается выходной переменной ‘<имя>. Замените переменную или укажите соответствующий префикс константы.
4014
«Типизированный литерал: невозможно перевести ‘<имя>’ в ‘<имя>'»
Тип константы не соответствует заданному префиксу.
Например: SINT#255
4015
«Тип данных ‘<имя>’ недопустим для прямого битового доступа»
Прямая битовая адресация допускается только с целыми типами или битовыми строками, но не для прямоадресуемых переменных. Возможно, вы используете переменную типа REAL/LREAL или константу
., либо прямоадресуемую переменную.
4016
«Индекс бита ‘<число>’ превышает допустимый для типа ‘<имя>'»
Вы пытаетесь использовать бит, не определенный для данного типа переменных.
4017
«‘MOD’ не определен для ‘REAL'»
Оператор MOD применим только для целых типов.
4020
«Операндом для ‘ST’, ‘STN’, ‘S’, ‘R’ должна быть переменная или прямой адрес доступные по
записи»
Замените первый операнд переменной, имеющей доступ на запись.
4021
«Переменная ‘<имя>’ не имеет доступа по записи»
Замените переменную на другую, имеющую доступ на запись.
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-133
4022
«Необходим операнд»
Добавьте операнд команды.
4023
«После ‘+’ или ‘-‘ должно стоять число»
Введите число.
4024
«Небходим или или … перед ‘<имя>'»
Задайте значимый операнд в указанной позиции.
4025
«Необходимы символы ‘:=’ или ‘=>’ перед ‘<имя>'»
Введите один из двух операторов в указанной позиции.
4026
«Для ‘BITADR’ необходим битовый адрес или переменная по битовому адресу»
Используйте корректный битовый адрес (т.е. %IX0.1).
4027
«Требуется целое число или символьная константа»
Введите число или идентификатор переменной.
4028
«‘INI’-оператору необходим экземпляр функционального блока»
Проверьте тип переменной, для которой используется оператор №1.
4029
«Функция не может вызывать сама себя.»
Функция не должна вызывать сама себя.
Используйте промежуточные переменные.
4030
«Выражения и константы недопустимы в качестве операнда для ‘ADR'»
Для выражений и констант извлечение адреса невозможно.
4031
«‘ADR’ нельзя использовать для битового адреса! Вместо него используйте ‘BITADR’.»
Используйте BITADR. Заметьте, что BITADR не дает физический адрес памяти.
Приложение K: Ошибки и предупреждения компилятора
CoDeSys V2.3 10-134
4032
«Для ‘<имя>’ недостаточно ’<число>’ операндов. Необходимо, по крайней мере, ‘<число>’»
Проверьте число операндов для данного оператора и добавьте недостающие.
4033
«’<число>’ операндов это слишком много для ‘<имя>’. Нужно не более ‘<число>’»
Проверьте число операндов для данного оператора и уберите лишние.
4034
«Деление на 0»
Вы пытаетесь выполнить деление на 0 с константами. Если вы намеренно хотите спровоцировать деление на ноль при исполнении, используйте переменную.
4035
«Нельзя использовать ADR для ‘VAR CONSTANT’, если активирована опция ‘Замещение
Введение
За время работы инженером-программистом ПЛК очень часто в ходе разработки находились не самые очевидные, но довольно простые и красивые решения как типовых, так и специализированных задач. В этой статье хочу поделиться опытом и рассказать как сделать разработку под ПЛК приятнее и эффективнее.
Об опыте автора
Опыт работы с ПЛК: 3 года.
Разработка под ПЛК: Beckhoff CX series, SE Modicon M221, WAGO 750 series.
Среды разработки: TwinCAT 3, EcoStruxure Machine Expert-Basic, CODESYS V2.3.
Основная часть опыта приходится на ST+TwinCAT 3, который базируется на CODESYS и IEC 61131.
Статью решил написать так как покидаю OT и перехожу в мир IT. Хочется поделится опытом, чтобы эти 3 года не прошли даром.
Среда разработки
Если часто приходиться комментировать части кода — то узнайте какое сочетание клавиш позволит вам это сделать, это сэкономит много времени. В TwinCAT XAE Shell для комментирования выделенного кода: Ctrl+K+C и Ctrl+K+U для расскомментирования.
Обезвредьте кнопку Stop, чтобы случайно не остановить ПЛК, иногда такое случайное нажатие может привести к нежелательным последствиям. В TwinCAT XAE Shell можно выбрать какие кнопки выводить на toolbar. После локальной отладки программы рекомендую скрыть кнопку остановки ПЛК.
Structured Text
STRING vs WSTRING
В TwinCAT 3 есть возможность использовать Unicode строки. Они могут пригодиться, если необходимо передовать специфические символы, но без необходимости лучше не использовать WSTRING.
STRING |
WSTRING |
|
Format |
ASCII |
Unicode |
Size of character |
BYTE (1 byte) |
WORD (2 bytes) |
Terminator |
Null character |
0 |
Date and time
Почти в любом проекте необходимо знать точное время, вычислять временные интервалы. Часто работа с временем и датами доставляет много проблем и боли. Для себя я нашёл решение, уверен, оно упростит многим жизнь.
F_GetSystemTime() (Функция из модуля Tc2_System)
Эта функция может быть использована для считывания метки времени операционной системы. Временная метка представляет собой 64-разрядное целое значение с точностью до 100 нс. Помимо прочего, его можно использовать для синхронизации задач или измерения времени. Одна единица соответствует 100 нс. Время представляет собой количество интервалов в 100 нс с 1 января 1601 года.
Хранятся отметки в переменных типа ULINT. Зная всё это мы можем без труда рассчитывать интервалы времени с точностью до 100нс! Нужно просто найти разность между отметками.
К сожалению, стандартных функций для преобразования отметки в тип DATETYPE я не нашёл, поэтому пришлось реализовать такую функцию самостоятельно:
(*
:Description: Convert time since 1 January 1601 in 100 ns to DATE_AND_TIME (Преобразует время с 1 Января 1601 года в 100 нс в DATE_AND_TIME)
:Usability: Convert timestamp to datetime
:Note: check then nSystemType more then 01.01.1970 00:00:00
Version history:
Kozhemaykin E. A. | Creating | 16.08.2021;
*)
FUNCTION F_SystemTimeToDT : DT
VAR CONSTANT
SECONDS_BETWEEN_1601_AND_1970 : ULINT := 11_644_473_600;
END_VAR
VAR_INPUT
nSystemTime : ULINT; // One unit is 100 ns since 1 January 1601
END_VAR
VAR
nSeconds : ULINT;
END_VAR
nSeconds := (nSystemTime / 10_000_000) - SECONDS_BETWEEN_1601_AND_1970;
F_SystemTimeToDT := ULINT_TO_DT(nSeconds);
Как видно из кода, сложность заключалась в расчёте интервала между начальным отсчётом системного времени ПЛК и типа DATETIME.
Функция для получения текущей даты/времени в формате DATETIME
(*
:Description: Return datetime now in format DATE_AND_TIME (DT)
:Usability: For getting datetime now in format DATE_AND_TIME (DT)
Version history:
Kozhemaykin E. A. | Creating | 16.08.2021;
*)
FUNCTION F_DateTimeNow : DT
F_DateTimeNow := F_SystemTimeToDT(F_GetSystemTime());
Функция для получения прошедшего времени в формате TIME
(*
:Description: Time passed since tStart (Прошло времени c tStart)
:Usability: If need check how long time past
Version history:
Kozhemaykin E. A. | Creating | 16.08.2021;
*)
FUNCTION F_TimePassed : TIME
VAR_INPUT
tStart: ULINT; (* Время начала в 100нс от 01.01.1601,
текущее время в данном формате предоставляет функция F_GetSystemTime()*)
END_VAR
F_TimePassed := ULINT_TO_TIME((F_GetSystemTime() - tStart) / 10000);
Числовые константы
Большинство документаций по обмену по промышленным протоколам содержит шестнадцатиричные адреса регистров, номера функций, обозначения комманд и т.д. Для битовых операций необходимо представлять числа в двоичном виде. Чтобы эффективно решать задачи, где приходиться отходить от десятичной системы счисления необходимо знать о возможности задания константных чисел заданного типа в заданной системе счисления.
В общем виде задание числовой константы выглядит так:
{datetype}#{numeral system}#value
Пример: DINT#16#A1
Числовые значения могут быть двоичными числами, восьмеричными числами, десятичными числами или шестнадцатеричными числами. Если целое значение не является десятичным числом, его основание должно быть записано перед целочисленной константой, за которой следует символ хэша (#). Для шестнадцатеричных чисел цифры для чисел от 10 до 15, как обычно, представлены буквами A-F.
Типом этих числовых значений может быть BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL или LREAL.
ANY type
В языках программирования со статической типизацией довольно сложно делать универсальные функции/функциональные блоки. Когда мне поставили задачу собирать и анализировать различные данные, я решил, что копировать функциональные блоки и изменять в них только тип входного значения — не лучший вариант. Тогда появилась идея приводить все типы к одному и по объективным причинам это тип LREAL.
При реализации функции или метода вы можете объявлять входные данные (VAR_INPUT) как переменные с типом данных ANY. Далее вы можете получить указатель на значение, тип данных и размер переданной на этот вход переменной.
Структура типа данных ANY
TYPE AnyType :
STRUCT
// the type of the actual parameter
typeclass : __SYSTEM.TYPE_CLASS ;
// the pointer to the actual parameter
pvalue : POINTER TO BYTE;
// the size of the data, to which the pointer points
diSize : DINT;
END_STRUCT
END_TYPE
Кроме типа ANY существуют также дочерние типы:
Хочу обратить внимание что на вход типа ANY не может быть подана константа, поэтому в некоторых случаях придётся создавать дополнительную переменную.
Зная про этот тип мне удалось реализовать функцию, которая приводила данные разных типов к LREAL.
Функция по преобразованию числовых типов в LREAL
(*
:Description: Convert ANY_NUM and ANY_BIT to LREAL
:Usability: For development universal functions
:Note:
Valid types is:
ANY_NUM:
- ANY_REAL: REAL, LREAL
- ANY_INT: USINT, UINT, UDINT, ULINT, SINT, INT, DINT, LINT
ANY_BIT:
- BYTE, WORD, DWORD, LWORD
Version history:
Kozhemaykin E. A. | Creating | 01.06.2021;
Kozhemaykin E. A. | {CLASS_TO_LREAL -> TO_LREAL | 03.11.2021;
*)
FUNCTION F_AnyNumToLREAL : LREAL
VAR_INPUT
AnyNum: ANY; // Variable for converting, need have address
END_VAR
VAR
pReal : POINTER TO REAL; // pointer to a variable of the type REAL
pLReal : POINTER TO LREAL; // pointer to a variable of the type LREAL
pUSInt : POINTER TO USINT; // pointer to a variable of the type USInt
pUInt : POINTER TO UINT; // pointer to a variable of the type UInt
pUDInt : POINTER TO UDINT; // pointer to a variable of the type UDInt
pULInt : POINTER TO ULINT; // pointer to a variable of the type ULInt
pSInt : POINTER TO SINT; // pointer to a variable of the type SInt
pInt : POINTER TO INT; // pointer to a variable of the type Int
pDInt : POINTER TO DINT; // pointer to a variable of the type DInt
pLInt : POINTER TO LINT; // pointer to a variable of the type LInt
pByte : POINTER TO BYTE; // pointer to a variable of the type Byte
pWord : POINTER TO WORD; // pointer to a variable of the type Word
pDWord : POINTER TO DWORD; // pointer to a variable of the type DWord
pLWord : POINTER TO LWORD; // pointer to a variable of the type LWord
END_VAR
VAR_OUTPUT
OrginalType: __SYSTEM.TYPE_CLASS;
bInvalidType: BOOL := FALSE;
END_VAR
// Real numbers
IF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_REAL) THEN
pReal := AnyNum.pValue;
OrginalType := __SYSTEM.TYPE_CLASS.TYPE_REAL;
F_AnyNumToLREAL := TO_LREAL(pReal^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_LREAL) THEN
pLReal := AnyNum.pValue;
OrginalType := __SYSTEM.TYPE_CLASS.TYPE_LREAL;
F_AnyNumToLREAL := pLReal^;
// Bit's numbers
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_BYTE) THEN
pByte := AnyNum.pValue;
OrginalType := __SYSTEM.TYPE_CLASS.TYPE_BYTE;
F_AnyNumToLREAL := TO_LREAL(pByte^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_WORD) THEN
pWord := AnyNum.pValue;
OrginalType := __SYSTEM.TYPE_CLASS.TYPE_WORD;
F_AnyNumToLREAL := TO_LREAL(pWord^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_DWORD) THEN
pDWord := AnyNum.pValue;
OrginalType := __SYSTEM.TYPE_CLASS.TYPE_DWORD;
F_AnyNumToLREAL := TO_LREAL(pDWord^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_LWORD) THEN
pLWord := AnyNum.pValue;
OrginalType := __SYSTEM.TYPE_CLASS.TYPE_LWORD;
F_AnyNumToLREAL := TO_LREAL(pLWord^);
// Unsigned integers
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_USINT) THEN
pUSInt := AnyNum.pValue;
OrginalType := __SYSTEM.TYPE_CLASS.TYPE_USINT;
F_AnyNumToLREAL := TO_LREAL(pUSInt^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_UINT) THEN
pUInt := AnyNum.pValue;
OrginalType := __SYSTEM.TYPE_CLASS.TYPE_UINT;
F_AnyNumToLREAL := TO_LREAL(pUInt^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_UDINT) THEN
pUDInt := AnyNum.pValue;
OrginalType := __SYSTEM.TYPE_CLASS.TYPE_UDINT;
F_AnyNumToLREAL := TO_LREAL(pUDInt^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_ULINT) THEN
pULInt := AnyNum.pValue;
OrginalType := __SYSTEM.TYPE_CLASS.TYPE_ULINT;
F_AnyNumToLREAL := TO_LREAL(pULInt^);
// Signed integers
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_SINT) THEN
pSInt := AnyNum.pValue;
OrginalType := __SYSTEM.TYPE_CLASS.TYPE_SINT;
F_AnyNumToLREAL := TO_LREAL(pSInt^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_INT) THEN
pInt := AnyNum.pValue;
OrginalType := __SYSTEM.TYPE_CLASS.TYPE_INT;
F_AnyNumToLREAL := TO_LREAL(pInt^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_DINT) THEN
pDInt := AnyNum.pValue;
OrginalType := __SYSTEM.TYPE_CLASS.TYPE_DINT;
F_AnyNumToLREAL := TO_LREAL(pDInt^);
ELSIF (AnyNum.TypeClass = __SYSTEM.TYPE_CLASS.TYPE_LINT) THEN
pLInt := AnyNum.pValue;
OrginalType := __SYSTEM.TYPE_CLASS.TYPE_LINT;
F_AnyNumToLREAL := TO_LREAL(pLInt^);
//Invalid type
ELSE
F_AnyNumToLREAL := 0;
bInvalidType := TRUE;
END_IF
REFERENCE
Все знают про указатели (POINTER) и связанные с ними проблемы, так вот многие из них можно избежать, если использовать ссылки(REFERENCE):
-
Ссылки проще в использовании: ссылку не нужно разыменовывать (с помощью ^), чтобы получить доступ к содержимому объекта, на который ссылается ссылка.
-
Более чистый синтаксис для передачи значений: Если вход является ссылкой, то нет необходимости писать ADDR(value).
-
В отличие от указателей, для ссылок компилятор проверяет типы данных при передаче значений.
Стоит отметить, что не всегда ссылкой можно заменить указатель, но когда это возможно, то сделайте это.
Pragmas
Инструкции pragma влияют на свойства переменных, относящихся к процессу компиляции или предкомпиляции. Не поленитесь просмотреть возможности каждого типа pragmas — обязательно найдёте что-то полезное для своего проекта.
Типы pragmas:
-
Message pragmas
-
Attribute pragmas
-
Conditional pragmas
-
Region pragma
-
Pragmas for warning suppression
Union
Union — тип структуры, который позволяет представлять значение в разных типах данных. Данная структура полезна при отладке кода а также при обработке входных значений.
В случае, если нужно обращаться к битам, то это можно сделать через точку. Но у этого способа я вижу огромный недостаток: нет возможности итерироваться по битам. Если нужно разобрать переменную на байты или по 16-бит или другим сложным образом, то вместо написания сложных функций попробуйте сначала сделать это с помощью Union.
SEL, MIN, MAX, LIMIT
Многим программистам ПЛК часто не хватает синтаксического сахара, которого много в других языках программирования. На примере функции SEL хочется показать, что возможно этот «сахар» в виде тернарного оператора не особо нужен.
Если вам нужно выбрать значение в зависимости от условия, выможете сделать это в одну строку:
value := SEL(condition, if false, if true);
Если вам нужно ограничить значение сверху и/или снизу, это также можно сделать в одну строку:
value := MIN(value, max_limit);
value := MAX(value, min_limit);
or
value := LIMIT(min_limit, value, max_limit);
Многие функции и операторы, которых нам не хватает уже написаны — нужно только поискать.
Заключение
В статье описано,то на что лично мне захотелось обратить внимание (ООП решил не трогать). Буду рад если мой опыт принесёт кому-то пользу. Попрошу при использовании предоставленных функций оставлять продолжать version history.
Делитесь своим опытом в комментариях. Чтобы быть в курсе событий и общаться с коллегами предлагаю перейти по ссылкам: тг-канал proPLC, тг-чат proPLC.
Номер ошибки: | Ошибка 3760 | |
Название ошибки: | Sharepoint Error 3760 | |
Описание ошибки: | Ошибка 3760: Возникла ошибка в приложении Microsoft Sharepoint. Приложение будет закрыто. Приносим извинения за неудобства. | |
Разработчик: | Microsoft Corporation | |
Программное обеспечение: | Microsoft Sharepoint | |
Относится к: | Windows XP, Vista, 7, 8, 10, 11 |
Анализ «Sharepoint Error 3760»
Это наиболее распространенное условие «Sharepoint Error 3760», известное как ошибка времени выполнения (ошибка). Разработчики программного обеспечения, такие как SoftwareDeveloper, обычно работают через несколько этапов отладки, чтобы предотвратить и исправить ошибки, обнаруженные в конечном продукте до выпуска программного обеспечения для общественности. К сожалению, некоторые критические проблемы, такие как ошибка 3760, часто могут быть упущены из виду.
Некоторые люди могут столкнуться с сообщением «Sharepoint Error 3760» во время работы программного обеспечения. Когда это происходит, конечные пользователи могут сообщить Microsoft Corporation о наличии ошибок «Sharepoint Error 3760». Затем программисты могут исправить эти ошибки в коде и включить исправление, которое можно загрузить с их веб-сайта. Эта ситуация происходит из-за обновления программного обеспечения Microsoft Sharepoint является одним из решений ошибок 3760 ошибок и других проблем.
Почему возникает ошибка времени выполнения 3760?
Ошибки выполнения при запуске Microsoft Sharepoint — это когда вы, скорее всего, столкнетесь с «Sharepoint Error 3760». Мы можем определить, что ошибки во время выполнения ошибки 3760 происходят из:
Ошибка 3760 Crash — ошибка 3760 блокирует любой вход, и это может привести к сбою машины. Обычно это происходит, когда Microsoft Sharepoint не может распознать, что ему дается неправильный ввод, или не знает, что он должен производить.
Утечка памяти «Sharepoint Error 3760» — ошибка 3760 утечка памяти приводит к увеличению размера Microsoft Sharepoint и используемой мощности, что приводит к низкой эффективности систем. Возможные причины включают сбой Microsoft Corporation для девыделения памяти в программе или когда плохой код выполняет «бесконечный цикл».
Ошибка 3760 Logic Error — Логические ошибки проявляются, когда пользователь вводит правильные данные, но устройство дает неверный результат. Когда точность исходного кода Microsoft Corporation низкая, он обычно становится источником ошибок.
В большинстве случаев проблемы с файлами Sharepoint Error 3760 связаны с отсутствием или повреждением файла связанного Microsoft Sharepoint вредоносным ПО или вирусом. Основной способ решить эти проблемы вручную — заменить файл Microsoft Corporation новой копией. Запуск сканирования реестра после замены файла, из-за которого возникает проблема, позволит очистить все недействительные файлы Sharepoint Error 3760, расширения файлов или другие ссылки на файлы, которые могли быть повреждены в результате заражения вредоносным ПО.
Распространенные проблемы Sharepoint Error 3760
Типичные ошибки Sharepoint Error 3760, возникающие в Microsoft Sharepoint для Windows:
- «Ошибка программного обеспечения Sharepoint Error 3760. «
- «Ошибка программного обеспечения Win32: Sharepoint Error 3760»
- «Возникла ошибка в приложении Sharepoint Error 3760. Приложение будет закрыто. Приносим извинения за неудобства.»
- «Sharepoint Error 3760 не может быть найден. «
- «Sharepoint Error 3760 не найден.»
- «Ошибка запуска программы: Sharepoint Error 3760.»
- «Sharepoint Error 3760 не работает. «
- «Ошибка Sharepoint Error 3760. «
- «Sharepoint Error 3760: путь приложения является ошибкой. «
Ошибки Sharepoint Error 3760 EXE возникают во время установки Microsoft Sharepoint, при запуске приложений, связанных с Sharepoint Error 3760 (Microsoft Sharepoint), во время запуска или завершения работы или во время установки ОС Windows. Отслеживание того, когда и где возникает ошибка Sharepoint Error 3760, является важной информацией при устранении проблемы.
Создатели Sharepoint Error 3760 Трудности
Проблемы Sharepoint Error 3760 могут быть отнесены к поврежденным или отсутствующим файлам, содержащим ошибки записям реестра, связанным с Sharepoint Error 3760, или к вирусам / вредоносному ПО.
В основном, осложнения Sharepoint Error 3760 связаны с:
- Недопустимая или поврежденная запись Sharepoint Error 3760.
- Зазаражение вредоносными программами повредил файл Sharepoint Error 3760.
- Вредоносное удаление (или ошибка) Sharepoint Error 3760 другим приложением (не Microsoft Sharepoint).
- Другая программа, конфликтующая с Sharepoint Error 3760 или другой общей ссылкой Microsoft Sharepoint.
- Microsoft Sharepoint (Sharepoint Error 3760) поврежден во время загрузки или установки.
Продукт Solvusoft
Загрузка
WinThruster 2023 — Проверьте свой компьютер на наличие ошибок.
Совместима с Windows 2000, XP, Vista, 7, 8, 10 и 11
Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление
[0х3100] |
Группа аппаратных ошибок |
0х3131 |
Ошибка выделения памяти |
0х3132 |
Ошибка проверки микросхемы |
0х3133 |
Ошибка обмена с микросхемой |
0х3134 |
Ошибка чтения микросхемы |
0х3135 |
Ошибка записи/стирания микросхемы |
0х3136 |
Ошибка часов |
0х3137 |
Ошибка OTP памяти |
0х3138 |
Ошибка логики (выделенный буфер переполнен) |
0х3139 |
Ошибка работы микросхемы NVRAM |
0х313A |
Для выполнения заданной операции отсутствует аппаратная поддержка |
[0х3200] |
Группа ошибок принтера |
0х3231 |
Нет бумаги |
0х3232 |
Открыта крышка |
0х3233 |
Температура ТПГ превышает рабочий диапазон |
0х3234 |
Напряжение питания превышает рабочий диапазон |
0х3235 |
Ошибка отрезчика |
0х3236 |
Аппаратная ошибка принтера |
[0х3300] |
Группа ошибок машины загружаемых шаблонов |
0х33XX |
Ошибка виртуальной машины Pawn, где ХХ – младший байт, который принимает значения от 00 до 7F |
0х3380 |
Неверный тип (номер) шаблона |
0х3381 |
Загруженные шаблоны повреждены или отсутствуют |
0х3382 |
Несовместимая версия загруженных шаблонов |
[0х3400] |
Группа ошибок фискального накопителя (ФН) |
Ошибки формируемые ФН |
|
0х3431 |
Некорректный формат или параметры команды |
0х3432 |
Неверное состояние ФН |
0х3433 |
Ошибка ФН (запросить расширенные сведения об ошибке) |
0х3434 |
Ошибка КС (запросить расширенные сведения об ошибке) |
0х3435 |
Закончен срок эксплуатации ФН |
0х3436 |
Архив ФН переполнен |
0х3437 |
Неверные дата и/или время |
0х3438 |
Нет запрошенных данных |
0х3439 |
Некорректное значение параметров команды |
0х343A |
Неверная команда |
0х343B |
Неразрешенные реквизиты |
0х343C |
Дублирование данных |
0х343D |
Отсутствуют данные, необходимые для корректного учета в ФН |
0х343E |
Количество позиций в документе подлежащих учету превысило разрешенный лимит |
0х343F |
Отсутствуют данные в команде |
0х3440 |
Превышение размеров TLV данных |
0х3441 |
Транспортное соединение отсутствует |
0х3442 |
Исчерпан ресурс криптопроцессора |
0х3444 |
Исчерпан ресурс хранения |
0х3445 |
Исчерпан ресурс ожидания передачи сообщения |
0х3446 |
Смена превысила 24 часа |
0х3447 |
Неверная разница во времени между двумя операциями |
0х3448 |
Параметры реквизита не соответствуют форматам данных |
0х3449 |
Признак «продажа подакцизного товара» не установлен |
0х3450 |
Неустановленный реквизит в товарной позиции (в товарной позиции присутствует реквизит, не определенный в документе ФФД) |
0х3451 |
Сообщение от ОФД не может быть принято |
0х3453 |
Ошибка сервиса обновления ключей проверки КМ |
0х3454 |
Неизвестный ответ сервиса обновления ключей проверки кодов проверки |
0х3460 |
Требуется повтор процедуры обновления ключей проверки КМ |
0х3462 |
Запрещена работа с маркированным товарами |
0х3463 |
Неверная последовательность команд группы Bxh |
0х3464 |
Работа с маркированными товарами временно заблокирована |
0х3465 |
Переполнена таблица проверки кодов маркировки |
0х346C |
В блоке TLV отсутствуют необходимые реквизиты |
0х346E |
В реквизите 2007 содержится КМ, который ранее не проверялся в ФН |
Ошибки ФН формируемые ККТ |
|
0х3491 |
Неверный размер возвращаемых данных |
0х3492 |
Ошибка интерфейса ФН |
0х3493 |
Ошибка интерфейса ФН при посылке команды |
0х3494 |
Превышен объем числовых данных для передачи в ФН |
0х3495 |
Ошибка чтения документа из ФН при допечати |
0х3496 |
В ФН есть неотправленные документы |
0х3497 |
Исчерпан лимит перерегистраций |
0х3498 |
Ожидание перезагрузки ФН |
0х3499 |
Получение документа из ФН прервано |
[0х3500] |
Группа ошибок обмена с ОФД (ошибки не возвращаются в ответе, но могут быть запрошены) |
0х3531 |
Отсутствует физический канал связи |
0х3532 |
Ошибка сетевых настроек (есть канал соединения, но соединение не устанавливается) |
0х3533 |
Разрыв соединения сервером при передаче документа |
0х3534 |
Ошибка заголовка сессионного пакета (при приеме квитанции) |
0х3535 |
Истек таймаут ожидания квитанции |
0х3536 |
Разрыв соединения при приеме квитанции |
0х3537 |
Превышен таймаут передачи документа на сервер |
0х3538 |
ОФД-процесс не инициализирован |
[0х3600] |
Группа ошибок при работе с маркированным товаром |
0х3631 |
Процедура проверки уже запущена |
0х3632 |
Ошибка соединения с сервером ИСМ |
0х3633 |
Процедура проверки прервана |
0х3634 |
Попытка передать данные о маркированном товаре до начала внесения товарной позиции |
0х3635 |
Неверное состояние процесса проверки КМ |
[0х4100] |
Группа ошибок транспортного протокола (нижний уровень) |
0х4131 |
Неизвестная версия протокола |
0х4132 |
Переполнение буфера физического уровня |
0х4133 |
Переполнение буфера транспорта |
0х4134 |
Ошибка CRC пакета |
0х4135 |
Неверный идентификатор получателя |
0х4136 |
Недостаточно места в буфере получателя |
0х4138 |
Неверный идентификатор пакета транспорта |
[0х4200] |
Группа общих ошибок протокола (верхний уровень) |
0х4231 |
Неверная длина пакета |
0х4232 |
Недоступный символ в числовом параметре |
0х4233 |
Неверная команда |
0х4234 |
Длина параметра не равна заданной |
0х4235 |
Отсутствует обязательный параметр |
0х4236 |
Переполнение кольцевого буфера |
0х4237 |
Переполнение буфера команд |
0х4238 |
Буфер последнего ответа на команду пустой |
[0Х4300] |
Группа ошибок транспортного протокола (верхний уровень) |
0х4331 |
Неверный ID получателя (в параметре команды) |
0х4332 |
Получатель уже занят другим отправителем |
[0х4400] |
Группа ошибок при передаче параметров (неверное значение параметра) |
0х4451 |
Неверный тип документа |
0х4452 |
Неверный номер пользовательской ячейки |
0х4453 |
Превышение длины реквизита |
0х4454 |
Неверный итог чека |
0х4455 |
Неверная сумма товарной позиции |
0х4456 |
Неверные дата и/или время |
0х4457 |
Синтаксическая ошибка в параметре с фиксированной точкой |
0х4458 |
Несуществующее поле |
0х4459 |
Неверное значение параметра |
0х445A |
Несуществующий реквизит |
0х445B |
Недопустимый реквизит для данного типа документа |
0х445C |
Некорректный РНМ или ИНН |
0х445D |
Недопустимое сочетание реквизитов 1002 и 1056 |
0х445E |
Недопустимое сочетание реквизитов 1002 и 1017 |
0х445F |
Невозможно записать реквизит платежного агента (реквизит 1057 не был установлен при регистрации / перерегистрации) |
0х4460 |
Невозможен повтор реквизита |
0х4461 |
Общая ошибка в параметрах |
0х4462 |
Общая ошибка длины параметра |
0х4464 |
Передана некорректная сумма налога |
0х4465 |
Переданная дата/время меньше даты/время последнего фискального документа |
0х4466 |
Количество позиций с реквизитом 1162 в автономном режиме превысило разрешенный лимит |
0х4467 |
В этом ФФД операция неразрешена |
0х4468 |
Операция невозможна, не был установлен признак ТМТ при фискализации |
[0х4500] |
Группа ошибок получения реквизитов |
0х4531 |
Слишком большой индекс массива |
0х4532 |
Запрошенный локальный реквизит недоступен |
0х4533 |
Запрошенный переменный реквизит недоступен |
0х4534 |
Запрошенный постоянный реквизит недоступен |
[0х4600] |
Группа ошибок электронного журнала |
0х4631 |
Копия отсутствует |
0х4632 |
Данные в ЭЖ повреждены |
0х4633 |
Превышение максимального размера документа (128 Кб) |
0х4641 |
Нет данных в хранилище |
0х4642 |
Функции планировщика не доступны |
0х4643 |
Неизвестный тип задания |
[0х4700] |
Группа ошибок команд работы с внешними устройствами |
0х4731 |
Общая ошибка |
0х4732 |
Переполнение буфера внешнего устройства |
[0х4800] |
Группа пользовательских ошибок, возвращаемых из шаблонов |
[0х5000] |
Группа ошибок штрих-кодов |
0х5031 |
Критическое утверждение не прошло проверкуОбщие ошибки |
0х5032 |
Недопустимый входной параметр |
0х5033 |
Указатель ссылается в недопустимое место памяти |
0х5034 |
Ресурс занят |
0х5035 |
Недостаточно памяти |
0х5036 |
Переполнение |
0х5037 |
Запрашиваемый штрихкод недоступен |
Ошибки, специфичные для QR-кода |
|
0х5040 |
Недопустимая версия |
0х5041 |
Неподдерживаемый или неверный режим |
0х5042 |
Недопустимый уровень коррекции ошибок |
Ошибки, специфичные для линейных кодов |
|
0х5061 |
Неверный тип линейного штрих-кода |
0х5062 |
Передан неверный размер/длина для данной операции |
[0х6100] |
Группа ошибок состояния ККТ |
0х6131 |
Фатальная ошибка, расшифровка в бите статуса фатальных ошибок |
0х6132 |
Не выполнена идентификация кассира |
0х6133 |
Документ открыт |
0х6134 |
Документ закрыт |
0х6135 |
Смена превысила 24 часа |
0х6136 |
Смена закрыта |
0х6137 |
Смена открыта |
0х6138 |
Нефискальный режим |
0х6139 |
Архив ФН закрыт |
0х613A |
Нужно выполнить регистрацию/перерегистрацию |
0х613B |
Данная операция по документу запрещена (см. биты разрешенных операций по чеку) |
0х613C |
Данная операция разрешена только при включенном переключателе MODE |
0х613D |
В ФН есть неотправленные документы. Операция невозможна |
0х613E |
ФН не обнаружен. Операция невозможна |
0х6141 |
Произошла критичная ошибка, документ необходимо отменить |
0х6142 |
Регистры ККТ еще не инициализированы |
0х6143 |
Команда недоступна в текущем состоянии инициализации |
0х6144 |
Нет данных на отправку |
0х6145 |
Нет маркированных позиций в чеке |
0х6146 |
Необходимо отправить все уведомления |
[0х6200] |
Группа ошибок операций ККТ |
0х6231 |
Ошибка переполнения |
0х6232 |
Отрицательный результат (не достаточно наличных в ДЯ) |
0х6233 |
Оплата безналичными превышает сумму чека |
0х6241 |
Ошибка цифровой подписи |
0х6242 |
Ошибка проверки файла с ПО контейнера |
[0х6300] |
Группа ошибок настроек |
0х6331 |
Данный канал сети Интернет отсутствует в ККТ |
[0х6400] |
Группа ошибок коммуникационных интерфейсов |
0х6431 |
Данный аппаратный канал отсутствует, выключен и еще не проинициализирован |
0х6432 |
Данный сетевой интерфейс не подключен, или на нём не получен IPадрес |
0х6433 |
Данный сетевой интерфейс занят, или запрошенная операция уже выполняется |
[0x6500] |
Группа ошибок лицензирования |
0x6531 |
Нет подходящей лицензии |
0x6532 |
Нет свободного места для сохранения лицензии |
0x6533 |
Аппаратная ошибка при сохранении лицензии |
0x6534 |
Попытка ввода лицензии с некорректной подписью |
0x6535 |
Попытка ввода лицензии с некорректным ЗН ККТ |
0x6536 |
Попытка ввода истекшей лицензии |
[0х7000] |
Группа ошибок ввода реквизитов |
0х70ХХ |
Номер реквизита, на котором возникла ошибка, где ХХ – младший байт, равный значению: <Тег реквизита> – 1000 Например, если возникла ошибка в реквизите 1226 (ИНН поставщика), то младший байт будет содержать значение 1226–1000=226 |
[0х7100] |
Резерв |
[0х7200] |
Группа ошибок работы с универсальными счетчиками |
0х7231 |
Неверный тег для универсальных счетчиков |
0х7232 |
Неверный индекс для универсальных счетчиков |
0х7233 |
Неверный размер универсального счетчика |
0х7234 |
Неверная конфигурация универсальных счетчиков |
[0х7300] |
Группа ошибок работы с базой товаров |
0х7331 |
Общая ошибка базы товаров |
0х7332 |
Некорректный тег |
0х7333 |
Некорректный размер тега |
0х7334 |
Недопустимый номер позиция |
0х7335 |
Произошла аппаратная ошибка |
0х7336 |
Нет данных запрошенных по тегу |
0х7337 |
Перебор окончен без найденных данных |
0х7338 |
Нет места в динамической области |
[0х7400] |
Группа ввода реквизитов маркировка |
0х74ХХ |
Номер реквизита, на котором возникла ошибка, где ХХ – младший байт, равный значению: <Тег реквизита> – 2000 Например, если возникла ошибка в реквизите 2106 (результат проверки сведений о товаре), то младший байт будет содержать значение 2106–2000=106 |
[0х7500] |
Группа ошибок уровня minipos |
0х7531 |
Отсутствие позиции оплаты |
0х7532 |
Таймаут выполнения команды истек |
0х7533 |
Неверный режим работы |
Штрих-ФР-К — Ошибка: неверная длина ответа
Модераторы:Sonc, siall
- Victor
- Сообщения:46
- Зарегистрирован:11 дек 2012, 07:43
-
Благодарил (а):
0 -
Поблагодарили:
2 раза - Контактная информация:
Приобрели новый ККМ Штрих-ФР-К и появилась проблема с тем, что он выдает «неверная длина ответа». Инструкцию перешерстили, ничего не нашли толкового. Драйвер 4,3 может уже думаю стоит его обновить … Или это из-за 1C, с которой он работает/должен работать в паре?
- Alex
- Сообщения:38
- Зарегистрирован:11 дек 2012, 08:28
-
Благодарил (а):
0 -
Поблагодарили:
1 раз - Контактная информация:
Re: Штрих-ФР-К — Ошибка: неверная длина ответа
Сообщение
Alex » 12 дек 2012, 08:39
Думаю, что это из-за того, что в размер ячейки памяти Штрих-ФР-К не влазит какое-то название. Например, название организации или ФИО продавца. В этом случае могла бы выпасть такая ошибка. Могу ошибаться, но не думаю.
- Mikhail_2
- Сообщения:33
- Зарегистрирован:11 дек 2012, 08:29
-
Благодарил (а):
0 -
Поблагодарили:
0 - Контактная информация:
Re: Штрих-ФР-К — Ошибка: неверная длина ответа
Сообщение
Mikhail_2 » 12 дек 2012, 10:42
Вам нужно проверить таймаут драйвера Штрих-ФР-К . Вероятнее всего установленной по умолчанию величины недостаточно, чтобы обработать сигнал.
- Victor
- Сообщения:46
- Зарегистрирован:11 дек 2012, 07:43
-
Благодарил (а):
0 -
Поблагодарили:
2 раза - Контактная информация:
Re: Штрих-ФР-К — Ошибка: неверная длина ответа
Сообщение
Victor » 12 дек 2012, 12:11
Alex писал(а):Думаю, что это из-за того, что в размер ячейки памяти Штрих-ФР-К не влазит какое-то название. Например, название организации или ФИО продавца. В этом случае могла бы выпасть такая ошибка. Могу ошибаться, но не думаю.
Нет, такое полностью исключено.
- Victor
- Сообщения:46
- Зарегистрирован:11 дек 2012, 07:43
-
Благодарил (а):
0 -
Поблагодарили:
2 раза - Контактная информация:
Re: Штрих-ФР-К — Ошибка: неверная длина ответа
Сообщение
Victor » 13 дек 2012, 07:16
Mikhail_2 писал(а):Вам нужно проверить таймаут драйвера Штрих-ФР-К . Вероятнее всего установленной по умолчанию величины недостаточно, чтобы обработать сигнал.
А как его можно поменять, если знаете подскажите, не хочется снова всю инструкцию перерывать.
- Davidoff_S
- Сообщения:39
- Зарегистрирован:11 дек 2012, 10:06
-
Благодарил (а):
0 -
Поблагодарили:
0 - Контактная информация:
Re: Штрих-ФР-К — Ошибка: неверная длина ответа
Сообщение
Davidoff_S » 13 дек 2012, 07:41
Victor писал(а):
Mikhail_2 писал(а):Вам нужно проверить таймаут драйвера Штрих-ФР-К . Вероятнее всего установленной по умолчанию величины недостаточно, чтобы обработать сигнал.
А как его можно поменять, если знаете подскажите, не хочется снова всю инструкцию перерывать.
Очень все просто, заходите «Тест драйвера ФР»/»Настройка свойств» и там устанавливаете таймаут. Рекомендую постепенно его увеличивать начиная с теперешнего показания с шагом 50мс или 100мс. Затем нажмите «установить параметры».
- Victor
- Сообщения:46
- Зарегистрирован:11 дек 2012, 07:43
-
Благодарил (а):
0 -
Поблагодарили:
2 раза - Контактная информация:
Re: Штрих-ФР-К — Ошибка: неверная длина ответа
Сообщение
Victor » 13 дек 2012, 08:45
Пока ничего не получается, уже стоит 400мс. Может быть дело в чем-то еще?
- NotaBene
- Сообщения:55
- Зарегистрирован:11 дек 2012, 10:08
-
Благодарил (а):
0 -
Поблагодарили:
0 - Контактная информация:
Re: Штрих-ФР-К — Ошибка: неверная длина ответа
Сообщение
NotaBene » 13 дек 2012, 09:32
Кстати, думаю, что если увеличение таймаута не поможет, то стоило бы заново залить драйвер. Скорее всего это он неверно считает.
- Victor
- Сообщения:46
- Зарегистрирован:11 дек 2012, 07:43
-
Благодарил (а):
0 -
Поблагодарили:
2 раза - Контактная информация:
Re: Штрих-ФР-К — Ошибка: неверная длина ответа
Сообщение
Victor » 13 дек 2012, 12:57
Вроде получилось. Боюсь сглазить, но на 600 остановились.
- Davidoff_S
- Сообщения:39
- Зарегистрирован:11 дек 2012, 10:06
-
Благодарил (а):
0 -
Поблагодарили:
0 - Контактная информация:
Re: Штрих-ФР-К — Ошибка: неверная длина ответа
Сообщение
Davidoff_S » 14 дек 2012, 07:52
Больше проблем не будет. Если таймаут маленький, то не вся информация от ФР получена. Драйвер подсчитывает не буквы, а байты. Если обмен данными медленный, то тогда он недополучает инфу и указывает на это расхождение.