|
Модераторы: ama_kid |
|
ama_kid |
|
|||
АСУТП-кодер Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 1 Всего: 95 |
Добрый день.
На форуме 3S мой аккаунт никак не могут подтвердить board-администраторы, а вопрос хотелось бы решить не методом костыля (как сейчас я сделал). Хотелось бы проконсультироваться с гуру CoDeSys 2.3, если они сюда заглядывают, т.к. в такие дебри еще не влезал. Пишу внешнюю библиотеку на Visual C++, объявил функциональный блок: При этом автоматически генерируется h-файл соответствующего блока для реализации с соответствующими объявлениями: Прошу обратить внимание на параметры F_Local1 (типа BOOL) и F_Reserv, о них пойдет разговор по сути. Итак, ситуация изначально следующая: параметра F_Reserv нет вообще (это есть "костыль"), есть только F_Local1 типа BOOL и остальные UDINT. При этом структура LIB_FUNCtyp имеет разный размер на стороне памяти ПЛК (в моем случае SP PLCWinNT v2.4) и в скомпилированном коде obj-файла. Sizeof(LIB_FUNCtyp) внутри C-кода имеет значение 24 (что, в общем-то правильно, учитывая 4-байтное выравнивание, выставленное в настройках), а на стороне ПЛК опытным путем было установлено, что она имеет размер в 21 байт, т.е. за первым параметром F_Local1 идет сразу второй F_Local2 без какого-либо выравнивания. Соответственно, всё чтение-запись в параметры FB идёт лесом, перепутывая байты и работая с неверными значениями. Поэтому мой костыль выглядит следующим образом: строка "F_Reserv : ARRAY[1..3] OF BOOL;" в библиотеке CoDeSys вставляется, но в сгенерированном h-файле строка "BOOL F_RESERV[3];" комментируется. После этого все отрабатывает корректно. В настройках Target'а не нашел вообще возможности выставлять выравнивание структур. Возможно, где-то в настройках какого-нибудь реального контроллера такая настройка и будет, но конкретно для SoftPLC её нет. Может я не там ищу? Как мне избавиться от необходимости декларировать костыль? -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | SCADA-системы и контроллеры стандарта IEC (МЭК) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |