Файл source dat не читается
ПРОБЛЕМА: Я новичок в C и даже новичок в structs , когда я пытаюсь просто распечатать свои данные в файле beer.dat, мне выдается ошибка, и я знаю, что не читаю ее должным образом, но как я могу сохранить свои данные в моем Struct после правильной потоковой передачи файла?
Для полной наглядности выложу вопросы по заданию . Задание:
- Поиск пива должен запрашивать у пользователя идентификационный номер, и в результате должен отображаться его количество и цена, если есть в вашем инвентаре.
- При просмотре всего инвентаря будут отображаться все сорта пива с их идентификационным номером, ценой и количество в порядке возрастания по цене. Эту сортировку следует выполнять с помощью Рекурсивных Пузырьковая или рекурсивная сортировка.
- При оформлении заказа счет-фактура заказа выводится на экран.
Содержимое файла beer.dat:
КОД:
НАЧАЛЬНЫЕ ОШИБКИ: Компилятор дает мне,
Я искренне признателен за любую помощь, которую вы можете оказать. Я нахожусь в середине эпизода большой депрессии, и из-за этого мне очень трудно понять эту новую концепцию. Это последнее задание семестра. Опять же, я искренне благодарен вам за то, что взглянули на этот вопрос. Конечно, не просить выполнить задание !!
@ user10605163 Прошу прощения, у меня все это включено вверху, я также забыл скопировать структуру. Я тоже буду редактировать с предупреждениями / ошибками.
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно.
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей.
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то.
Чего считать ? бинарник ?
Зачем менять скорости для дебуга если она стандартная и одна ?
Что горит ? Есть ли пинг ? Как падает в ошибку ?
Нужно открыть проект,записанный в ПЛК. Горит Работа и Питание. Не пидговал( чтобы подлезть к Ethernet, нужно снять лицо.) Номер ошибки напишу позже. Скорость знаю,что одна.
У тебя при подаче питания на ПЛК запускается программа, это и мешает установлению связи. В РЭ написано как остановить работу программы: "Чтобы прекратить циклическую загрузку программы и последующую перезагрузку контроллера необходимо, удерживая нажатой кнопку "Старт/Стоп" на передней панели контроллера нажать кнопку "Сброс". При такой комбинации кнопок программа не будет автоматически запущена, что даст возможность подключиться к контроллеру и загрузить в него корректно работающую программу".
Загружать в ПЛК ничего не надо, а надо установить связь и выкачать из ПЛК программу.
Для чего он, я знаю . Поработав полчаса в редакторе LD CoDeSys'а, у меня сложилось впечатление, что он не приспособлен для написания сложных алгоритмов (например, как цепочка во вложении). Уж очень GUI не интуитивен. А про документацию я вообще молчу.
То, что надо. Спасибо!
С удовольствием положил бы, если бы ST поддерживал переходы. А можно поподробнее про "ход конем"?
Шаг 1: Выполнение восстановления системы
- Запустите msconfig . Опять же, самый простой способ сделать это – ввести msconfig в поле поиска Cortana, щелкнуть правой кнопкой мыши Приложение настройки системы в результате поиска. и выберите Запуск от имени администратора . Кроме того, вы также можете запустить диалоговое окно Выполнить , нажав клавишу Windows и клавишу R . Введите msconfig в диалоговом окне «Выполнить» и нажмите клавишу ввода.
- В окнах Конфигурация системы выберите Инструмент .
- Выберите Восстановление системы в списке Имя инструмента и нажмите Запуск
- Следуйте инструкциям на экране, которые включают выбор даты, до которой вы хотите выполнить откат вашей системы. Конечно, вам придется выбрать дату до того, как вы впервые начали испытывать проблемы с файлом DAT.
Что если никак не удаётся подключиться? Пишет обрыв. Пробовал разные скорости. Если сбросить (ПЛК 100), то программа сотрётся? Какие ещё есть способы реинкарнации?
Как загрузить существующую программу с плк 100 на комп ?
Доброго времени суток, собственно возник такой вопрос, свою программу загрузить это понятно как , а как выгрузить на ноут уже то что там написано, спасибо за ответ.
Нужно открыть проект,записанный в ПЛК. Горит Работа и Питание. Не пинговал( чтобы подлезть к Ethernet, нужно снять лицо шкафа.) Номер ошибки напишу позже. Скорость знаю,что одна.
Если оно вообще «написано» (на контроллер загружен исходный код проекта), то File > Open > [PLC. ], затем указываем модель (target) контроллера и параметры соединения, по подтверждении которых кодесис загрузит файл проекта с контроллера.
Для загрузки и выгрузки файлов вне кодесиса используйте утилиту plc_io, которая доступна на сайте компании Овен. Так как сотрудникам компании давно нет дела до этой программки, пользователи вынуждены пользоваться одной версией для записи, а другой — для чтения (см. прикреплённый архив).
Да. А вот написать об этом в руководстве,ну никак.
У нас новый пиарщик Сименса
Не угадал. Я еще могу Allen Bradley в пример привести (который кстати мне нравится больше, чем сименс).
LD из степ7 я привел для примера, чтобы не рисовать его в paint'е.
К сожалению, не я пробую, а заказчики требуют
С LD в CoDeSys я уже разобрался (не без помощи конвертации примеров из ST по совету Валенка). Сложности в его понимании вызваны немного нестандартным (не общепринятым) отображением LD в CoDeSys. Здесь LD это практически копия FBD плюс релейные контакты и катушки. По аналогии с релейными схемами, у меня в голове сложился образ LD цепочки, где "ток" течет из одной точки (от "источника питания"). В CoDeSys же "ток течет" из нескольких источников, что немного не привычно.
Вот такое вот вероломство образов
Часто встречаются случаи повреждения файла DAT. Это снова может привести к целому ряду проблем, с определенным приложением, которое создало файл DAT, работающее по ошибке.
ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)
1) Я правильно понял, что в языках ST и FBD нет условных/безусловных переходов (JUMP'ов)?
2) Я правильно понял, что в языке LD нет возможности сравнить, например, два целых числа и нет возможности выполнить вычисление в несколько действий (например А*В+С) в одной цепочке (network)?
3) В документации как-то скудно описано использование скобок. В языке IL мне нужно проверить следующее "составное" условие:
(booleanVar == TRUE) ИЛИ (integerVar <> 333)
Какой из этих вариантов правильный:
Заранее спасибо за ответы.
У нас новый пиарщик Сименса
Шаг 2. Выполните сканирование SFC
Другой вариант, который вы можете попробовать, – это выполнить sfcscan вашей системы, чтобы убедиться, что все ваши файлы находятся в идеальном порядке. Вот шаги:
- Нажмите клавишу Windows + R , чтобы открыть диалоговое окно Выполнить .
- Введите cmd и нажмите enter, чтобы запустить командную строку Windows . Кроме того, вы можете просто ввести cmd в поле поиска Cortana , щелкнуть правой кнопкой мыши Командная строка и выбрать Запуск от имени администратора .
- В окне Командная строка введите sfc/scannow и нажмите клавишу ввода.
- Подождите, пока процесс не завершится. Для завершения сканирования на 100% может потребоваться несколько минут.
Перезагрузите компьютер. Ошибки файла DAT должны исчезнуть навсегда.
Кроме того, вот несколько дополнительных ресурсов, которые вы можете попробовать.
Ответы 1
Вы хотите, чтобы ваша программа читала данные с beer.dat во время выполнения. Этот файл не содержит кода, который является частью вашей программы. Компилятор сообщает вам, что он не знает, как интерпретировать содержимое файла как часть программы C.
Файл открывается и читается позже в search с помощью fopen и fscanf .
Вам также все еще не хватает форвардной декларации для search . Либо поместите функцию search перед main , либо добавьте объявление типа
до main , чтобы компилятор знал, какие аргументы принимает search и что возвращает, когда вы вызываете его в main .
Включение некоторых дополнительных предупреждений с помощью -Wall -Wextra также говорит нам, что
потому что вы пытаетесь прочитать из файла, на который ссылается обработчик fp (первый аргумент), и вы инструктируете fscanf сохранить прочитанную строку туда, куда указывает обработчик файла fp (третий аргумент). Конечно, в этом нет никакого смысла, вы хотите сохранить это в каком-нибудь массиве char .
Ладно, в этом есть смысл. Как только я нажимаю функцию search , мой компилятор вылетает. Есть идеи, почему?
ну нет, я понимаю, моя проблема еще не решена полностью. После того, как я запустил main и выбрал функцию search , все, что мне дали, это Process finished with exit code -1073741819 .
@ user7823016 Прочтите мою правку к ответу, если вы этого не сделали. Я не вижу другой причины для сбоя во время выполнения, как сейчас код.
предупреждение - Format specifies type 'char *' but the argument has type 'FILE *' (aka 'struct _iobuf *') при обращении к третьему полю в строке fscanf в search . Также я прошел через отладчик, и я не уверен, как включить эти предупреждения в CLion.
@ user7823016 Да, как я объяснил, ваш третий аргумент fscanf должен быть указателем на массив char .
Ой, простите. Я думал, вы говорите об изменении, которое вы внесли в один из своих комментариев.
Не могу понять алгоритма считывания программы из ПЛК.
PLK100P-M. Пишет: Последний онлайн сервис был завершён некорректно.
Номер сервиса:49, Номер ошибки:80, Файл не читается.
Программа сохраняется в контроллере, и работает исправно.
Что это означает? Если можно подробнее.
Видимо проблема не актуальная.
Николаев, может подскажите как прочитать программу из плк?
Это проблема контроллера или Codesys?
Проблема действительно не частая.
С сей ошибкой не сталкивался.
Обычно такое CoDeSys может писать, если с памятью проблеммы. Сделайте лог терминала и выложите пожалуйста.
К сожалению контроллер сейчас в процессе: трогать нельзя. Пока ждал ответа потребовали срочно установить, так что с логом пока трудности. Вы со своих контроллеров считываете программы? если да, то опишите как.
У меня сложилось впечатление, что я выполняю неправильно последовательность создания загрузочного проекта. В инструкции к Codesys'у сказано скудновато об этом. Как то непосредственно после загрузки мне удалось программу выгрузить, но затем я запустил её в Codesys'е, и после снова попытавшись прочесть, получил ошибку. Т.е. она как бы не фатальная.
Проект и код проекта разные вещи. В ПЛК грузится откомпилированный код. Взломать его нельзя. Считывать его из контроллера бессмысленно. Исходные тексты проекта обычно охраняться на компьютере. Но, при необходимости их можно и в ПЛК записать на хранение. Есть соответствующая команда в меню онлайн.
Т.е. если я правильно понял, в меню "Открыть"-команда "Открыть проект из ПЛК" извлекает не программу которая работает, а ту которая хранится в отдельном участке памяти? Если она не была туда загружена специальной командой, то, соответственно, получим искомую ошибку?
Если так, то касается это только ПЛК Овен или всех?
Другими словами: могу ли я не имея проекта, подключится к ПЛК (Овен) и увидеть состояния переменных (в Codesys'е)? Как вы понимаете, это нужно для быстрой диагностики системы. Без этого никак не обойтись.
- Компилируется проект
- Создается исполнительный код (не декомпилируемый)
- Этот код загружается в ОЗУ ПЛК
- Скомпилированный код загружается в ППЗУ. При этом данный код Вы можете скачать из ППЗУ, но смысла в этом никакого нет. Вы с ним ничего не сделаете.
Для того, чтобы не потерять проект (исходный файл с ПК с разрешением *.pro) - его можно записать командой Загрузка исходных текстов, или командой Запись файлов в ПЛК. Вытащить файл можно командой считать файл из ПЛК.
ВАЖНО. Если у Вас утерян исходный файл проекта, и Вы связываетесь с контроллером новым файлом - не делайте запись проекта - сначала скачайте старый.
* Скомпилированный код загружается в ППЗУ. При этом данный код Вы можете скачать из ППЗУ, но смысла в этом никакого нет. Вы с ним ничего не сделаете.
Как-раз таки и не могу скачать: ошибка выползает. Возможно первая закрузка проходит "нормально", но после некоторых манипуляций (запуск по новой исправленной программы и т.д.) выдаёт ошибку. Попробуйте исправлять программу и перезаливать раз несколько. Возможно где-то здесь возникает сбой.
И почему не имеет смысла? могу же я получить информацию о состояниях входов/выходов (не только ПЛК, но и всех модулей подключённым к нему)? К примеру как это делается в STEP (Siemens) или в PL7 (Schneider)
Запускаешь среду, нажимаешь соединить, и получаешь программу со всеми внутренностями. Смотришь где-что включено, на чём остановился процесс и делаешь вывод.
И, вообще, что означает фраза "не декомпилируемый" в этом контексте?
Прочитал инструкцию к ПЛК63-коды ошибок(401-404,500-ошибки EEPROM), могут быть такие ошибки в ПЛК100?
А можно еще проще. Меню CoDeSys ->Файл -> Открыть Выбрать ПЛК. указать параметры связи и проект загрузится с ПЛК и откроется.
Если кратко,то висит плк-100 , в нём записана программа,надо считать ибо все утеряно, а он падает в ошибку. Пробовал подключаться через Debug - отваливается. Менял скорости- не помогло. Какими ещё параметрами при подключении поиграть можно? Сбросить думал. Но не затрётся ли? Ибо не знаю , что с ним вообще.
Читайте также: