Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 20

Тема: Язык Си в SP: FUN работает, FB нет

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию Язык Си в SP: FUN работает, FB нет

    Добрый день,

    Вопрос про SP WinNT из Codesys 2.3 напрямую не связанный с овен, надеюсь задаю в нужную ветку форума.
    В интернете есть док "Creating and Linking External C Library Functions - CODESYS". Там описано как сделать внешнюю библиотеку на Си.

    У меня получилось сделать, но работает только функция. Она возвращает только одно значение, правда если делать static переменные то можно возвращать сложные результаты расчета несколькими вызовами функций по типу GetProperty объекта. А вот функциональный блок возвращает только 0.

    Ниже скрины создания описания библиотеки, исходников и компиляции obj, применения и отладки подключенной библиотеки. На выходе функций результат правильный. На выходе ФБ - 0.

    Подскажите что не так. В настройках выравнивания данных структур в компиляторе стоит как сказано в доке - 1 байт. Еще все это работает если OBJ создан в режиме debug - так и должно быть? Release работать не будет?
    01_csys23_lib_prj.png 02_vs6_cple.PNG 03_csys23_prj.png

  2. #2

    По умолчанию

    А зачем понадобилось делать внешнюю библиотеку на Си ?

  3. #3

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    А зачем .. на Си ?
    Предположительно чтобы писать сложную математику (мат.модель), возможно использовать наработки. Писать будут программисты на Си. Моя задача проверить возможность писать на Си в принципе.

  4. #4

    По умолчанию

    Цитата Сообщение от sas7 Посмотреть сообщение
    Предположительно чтобы писать сложную математику (мат.модель), возможно использовать наработки. Писать будут программисты на Си. Моя задача проверить возможность писать на Си в принципе.
    В описании сказано, это хозяйство работает только на 32-bit платформах.

  5. #5

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    В описании сказано, это хозяйство работает только на 32-bit платформах.
    Функция работает и на 64 как видим по третей картинке. ФБ сейчас проверю на 32-й виртуалке. Кодесис и так работает как 32х битное приложение в 64х битной среде.

  6. #6

    По умолчанию

    Цитата Сообщение от sas7 Посмотреть сообщение
    Функция работает и на 64 как видим по третей картинке. ФБ сейчас проверю на 32-й виртуалке. Кодесис и так работает как 32х битное приложение в 64х битной среде.
    Если работает на 32, то на 64 тем более будет работать. Надо чтобы у ПЛК была платформа не ниже 32-bit.

  7. #7

    По умолчанию

    Проверил на 32х битной платформе. Работает как и раньше: FUN - да, FB - возвращает 0 в myout2. Наблюдается на таргетах SP PLCWinNT и SP RTE.

  8. #8

    По умолчанию

    может дело в call convention? как должно быть? __cdecl, __stdcall, __fastcall?

  9. #9

    По умолчанию

    адрес структуры это понятно - он собственно передается на вход функции реализующей функциональный блок. завтра на работе посмотрю. а как узнать реальный адрес экземпляра?

  10. #10

    По умолчанию

    а где всетаки описаны типы вроде INT? какой хидер нужно подключать? т.к. мне кажется это из-за того что VS скомпилировал структуру исходя из размера INT 4 байта а не 2 байта.
    Завтра попробую запись в адрес на работе.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. язык St
    от жекон в разделе ПЛК1хх
    Ответов: 13
    Последнее сообщение: 12.08.2017, 20:00
  2. язык St
    от freeon в разделе ПЛК1хх
    Ответов: 14
    Последнее сообщение: 14.12.2016, 19:45
  3. Язык LD
    от Руслан2 в разделе ПЛК1хх
    Ответов: 21
    Последнее сообщение: 08.12.2016, 04:48
  4. язык Sfc
    от Евгений Мотренко в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 13.05.2008, 04:34

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •