Спасибо, всем
Спасибо, всем
Евгений Кислов Я их тебе когда-то слал. Ща найду, вставлю сюда.
WhyNot В ПЛК немного не так, как в программировании на компах. Тут важно НЕ забывать о том, что каждая программа-задача повторяется бесконечно вся целиком.
Поэтому если ты напишешь FOR с 1 по 254 - то он прокрутится за один вызов задачи и за этот вызов задачи ПЛК будет пытаться опросить разом всех.
FORом должен служить сам вызов задачи, как уже подсказали: заводим некую переменную "Шаг", и каждый вызов задачи крутим её, опрашивая устройство с нужным номером шага.
Вот что делал я для OCL. Скриншоты мутные, попробую пояснить принцип.
Сначала я делал большую копипасту - для каждого шага. И закручивал это в большой CASE. Было много-много кода!
OCL-MB-Request-1.gif OCL-MB-Request-2.gif
Потом мне это захотелось оптимизировать. Я вспомнил про массивы объектов из СИ, и сделал себе структуру для описания одного запроса вместе с его FB SerialRequest:
OCL-MB-Request-3.gif
Потом объявил константный массив всех-всех запросов (Евгений Кислов - тут где-то помог твой ответ о том, как это делать и объявлять и на лету структуры инициализировать):
OCL-MB-Request-4.gif
А дальше оставалось завести ту самую переменную "Шаг" (ioMBReqStep) и увеличивать её на 1, если опрос был успешным:
OCL-MB-Request-5.gif
Последний раз редактировалось Cs-Cs; 26.01.2022 в 13:08. Причина: Опечаточки
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net
Спасибо за разъяснение!
Ребят всем привет!
Как разбить строку WSTRING на байты и потом собрать обратно?
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Если через компоненты в дереве проекта - используйте объединение (UNION), чтобы представить WSTRING как массив вордов (будьте внимательны с размерностью массива).
Если через библиотеку OwenCommunication - то ничего преобразовывать не надо, под указатель на отправляемые данные можно сразу положить строку.
Последний раз редактировалось Евгений Кислов; 28.01.2022 в 19:29.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Мне бы подошла возможность указать ADR(переменная) и затем нужные байты забрать и в массив байтов все загнать. Ну и потом из массива байт собрать обратно
Через Юнион я думал. Но уменя длинна разная. Где-то 3-4 символа (8байт) а где-то 50 символов. Уже 100байт. Вот думаю может через обращение к памяти можно байты забрать проще. И в массив все это собрать мне нужно. Сейчас имею данные за 1 раз свыше 10000 байт. Те 10килобайт
Последний раз редактировалось Игорь Владимирович; 28.01.2022 в 19:32.