Страница 20 из 39 ПерваяПервая ... 10181920212230 ... ПоследняяПоследняя
Показано с 191 по 200 из 384

Тема: Codesys v3 + Raspberry Pi

  1. #191
    Пользователь Аватар для uni
    Регистрация
    01.03.2016
    Адрес
    Екатеринбург
    Сообщений
    17

    По умолчанию

    CoDeSys 3.5.10.x зависает (ожидает соединения и констатирует потерю связи) при попытке повторного логина (с загрузкой программы) для проекта, который работает с event'ами. Теряется соединение с runtime'ом. Кто-нибудь что-нибудь про это знает/слышал? Проект.

    Спросил на форуме CoDeSys.
    Последний раз редактировалось uni; 16.03.2017 в 10:11. Причина: ссылка на форум

  2. #192
    Пользователь Аватар для uni
    Регистрация
    01.03.2016
    Адрес
    Екатеринбург
    Сообщений
    17

    По умолчанию

    Да не, с версиями всё норм. Это глюк runtime'а как по мне. Вот видео демонстрация проблемы. CoDeSys 3.5.10.0 (10, 20). Остальное свежее с сайта RaspberryPi. runtime в устройство загружает сам CoDeSys (уж какой загрузит, ему виднее).


  3. #193
    Пользователь Аватар для uni
    Регистрация
    01.03.2016
    Адрес
    Екатеринбург
    Сообщений
    17

    По умолчанию

    Для тех потомков, кто будет пользовать этот самый codesys и столкнётся с глюком потери соединения при работе с event'ами, знайте, что CDRead() с принудительно установленным флагом O_NONBLOCK спасёт отца русской демократии. Такого флага конечно нет, но вы его можете объявить сами (O_NONBLOCK = 4000 - в десятичной (!) системе). Флаг нужно пользовать как в Си-программах.

    Ну и если вы хотите большего, к примеру, часами (/dev/rtc) поуправлять (ioctl) или чем другим, то запросы можно оформить так (я не нашёл эквиваленты макросов _IOR и _IOW):

    Код:
    var constant
    	RTC_RD_TIME: udint := 16#09;
    	RTC_SET_TIME: udint := 16#0a;
    	group: dword := 16#70;
    	IOC_OUT: dword := 16#80000000;
    	IOC_IN: dword := 16#40000000;	
    	IOCPARM_MASK: dword := 16#1fff;
    end_var
    
    method private ReadRequest : dword
    var_input
    	num: udint;
    	len: udint;
    end_var
    
    ReadRequest := IOC_OUT or ( shl( len and IOCPARM_MASK, 16 ) or ( shl( group, 8 ) or num ) );
    
    method private WriteRequest : dword
    var_input
    	num: udint;
    	len: udint;
    end_var
    
    WriteRequest := IOC_IN or ( shl( len and IOCPARM_MASK, 16 ) or ( shl( group, 8 ) or num ) );
    
    // ...
    
    hRtc := CDOpen( '/dev/rtc', CmpCharDevice.ACCESS_MODE.O_RDONLY, adr( Result ) );
    
    if hRtc <> RTS_INVALID_HANDLE then
    	
    	Request := dword_to_dint( ReadRequest( RTC_RD_TIME, sizeof( TRtcTime ) ) );
    
    	CDIoctl( hRtc, Request, dword_to_dint( adr( Read ) ), adr( Result ) );
    	
    	CDClose( hRtc, adr( Result ) );
    
    end_if
    
    // ...
    
    hRtc := CDOpen( '/dev/rtc', CmpCharDevice.ACCESS_MODE.O_WRONLY, adr( Result ) );
    
    if hRtc <> RTS_INVALID_HANDLE then
    	
    	Request := dword_to_dint( WriteRequest( RTC_SET_TIME, sizeof( TRtcTime ) ) );
    
    	CDIoctl( hRtc, Request, dword_to_dint( adr( rtctime ) ), adr( Result ) );
    	
    	CDClose( hRtc, adr( Result ) );
    
    end_if
    П.С. Оказывается CmpCharDevice.library после чистой установки CoDeSys почему-то недоступна. Видимо эта библиотека появляется при добавлении пакета с RaspberryPi, но на просторах сети её найти и скачать можно. Также можно добавить в проект библиотеки недостающий флаг и дополнительную функциональность по сборке запросов. Может быть где-то кто-то до меня это уже сделал, кто знает...
    Последний раз редактировалось uni; 25.03.2017 в 12:16. Причина: доп. информация

  4. #194

    По умолчанию

    Цитата Сообщение от kst-pu Посмотреть сообщение
    Вопрос знатокам: а как себя ведёт малина с данным ПО при пропадании питания, сбоев файловой системы не возникает при этом? Если да,то как вообще отключать такой ПЛК?
    Малина плохо себя ведет. Поэтому правильно подключаться к ней через ssh и запускать sudo halt и после этого выключать. А для защиты от коротких (до пары часов, я мерял) пропаданий питания достаточно поставить USB Power Bank на входе.

  5. #195
    Пользователь Аватар для uni
    Регистрация
    01.03.2016
    Адрес
    Екатеринбург
    Сообщений
    17

    По умолчанию

    Используя shared memory можно передавать данные из runtime codesys во внешние программы. Таким образом можно делать визуализацию на Mono, используя преимущества c#. Отлаживать оба проекта можно в Windows системе, правда с небольшим отличием в доступе к разделяемому объекту.

    Код для codesys взят из примера SharedMemory и обрезан (см. в store). На raspberri pi 3 нужно лишь открыть и прочитать файл /dev/shm/{имя_объекта_в_codesys}. На картинке ниже codesys формирует одно число типа lreal и записывает его в разделяемую память. Проект на c# открывает файл, читает это число (текущее измерение) и отображает его на графике (компонент NPlot).

    Писать визуализацию в Codesys то ещё занятие, не для слабонервных. Всё равно она нестандартная (велосипедная). Ни чем не хуже делать её на mono, тем более, что возможностей здесь на порядок больше.

    2017-10-21_23-04-29.png

  6. #196

    По умолчанию

    Мужики, не в дружбу а в службу, если есть здесь кто покупал CODESYS Control for Raspberry Pi SL - интересует содержимое папки /var/opt/codesys/backup. Скиньте в личку в любом виде, 'на_коньяк' строго гарантирую.

  7. #197

    По умолчанию

    Добрый день. Обновлю тему.

    в логе codesyscontrol.log такие сообщения

    1547254171, 0x00000002, 4, 16, 40, Retain restore from file failed: [<app>Application</app>]
    1547254171, 0x00000002, 2, 1288, 49, Retain data are initialized now of [<app>Application</app>]
    1547254177, 0x00000002, 1, 0, 2, Application [<app>Application</app>] loaded via [Bootproject]
    поля такие
    ;<entries>
    ;Timestamp, CmpId, ClassId, ErrorId, InfoId, InfoText
    ;</entries>

    Можно ли отловить это событие (event)? куда смотреть? CmpApp EventIDs смотрел, что то не нашел.... И что такое CmpId, ClassId, ErrorId, InfoId?

  8. #198

    По умолчанию

    c CmpId разобрался, там же в логе
    1547264340, 0x00000001, 1, 0, 10, <cmp>CmpApp</cmp>, <id>0x00000002</id> <ver>3.5.14.0</ver>
    т.е. это CmpApp...

  9. #199

    По умолчанию

    описание ClassId тоже найдено:

    #define LOG_INFO 0x00000001
    For general information

    #define LOG_WARNING 0x00000002
    For warnings

    #define LOG_ERROR 0x00000004
    For errors

    #define LOG_EXCEPTION 0x00000008
    For exceptions

    #define LOG_DEBUG 0x00000010
    Only for debug log entries

    #define LOG_COM 0x00000040
    For communication entries

    #define LOG_INFO_TIMESTAMP_RELATIVE
    0x00000080

  10. #200

    По умолчанию

    Там же описания ErrorId, InfoId, InfoText

    "Error Id" The error Id, if an operation failed

    "Info Id" An unique Id per component, that can be used to specify a longer
    test for the log entry in the target description of CODESYS. This is
    used to save resources in the runtime system to store the log entries

    'Info string" - Info string with optional and variable information, e.g. application
    names or task names

Страница 20 из 39 ПерваяПервая ... 10181920212230 ... ПоследняяПоследняя

Похожие темы

  1. CoDeSys V3 и ноутбук
    от smk1635 в разделе СПК2хх
    Ответов: 14
    Последнее сообщение: 23.09.2020, 08:11
  2. codesys v3
    от nevii в разделе ПЛК3хх
    Ответов: 3
    Последнее сообщение: 18.09.2014, 12:23
  3. ПЛК110 и CoDeSys v3
    от DIG в разделе ПЛК1хх
    Ответов: 32
    Последнее сообщение: 09.11.2011, 18:02
  4. CodeSys V3
    от nnesterov в разделе ПЛК3хх
    Ответов: 13
    Последнее сообщение: 05.04.2010, 15:12
  5. CoDeSys v3
    от Alor в разделе Трёп (Курилка)
    Ответов: 1
    Последнее сообщение: 02.12.2008, 10:48

Ваши права

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