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

Тема: CmpSysExec

  1. #1

    По умолчанию CmpSysExec

    Здравствуйте!

    Проблема в библиотеке CmpSysExec. При вызове любого ФБ из ее состава возвращает код ошибки - 1. Где взять расшифровку кодов ошибок?

    Причем раньше все работало и вдруг перестало.

    код такого плана:

    Объявление:
    fbCmpSysExec: CmpSysExec.sysExecute3;

    Выполнение:
    fbCmpSysExec(xExecute := TRUE, sCommand := 'ls');

  2. #2

    По умолчанию

    Цитата Сообщение от 6385428 Посмотреть сообщение
    Здравствуйте!

    Проблема в библиотеке CmpSysExec. При вызове любого ФБ из ее состава возвращает код ошибки - 1. Где взять расшифровку кодов ошибок?

    Причем раньше все работало и вдруг перестало.

    код такого плана:

    Объявление:
    fbCmpSysExec: CmpSysExec.sysExecute3;

    Выполнение:
    fbCmpSysExec(xExecute := TRUE, sCommand := 'ls');
    Добрый день.

    Этот код возвращается, если превышено допустимое число одновременно вызываемых экземпляров блоков библиотеки (9).
    Т.е., например, если у вас в проекте 4 экземпляра sysExecute3 и 5 экземпляров sysExecute4, и в конкретный момент времени все они вызваны с xExecute := TRUE - то при попытке вызова 10-го экземпляра вернется ошибка с кодом 1.

  3. #3

    По умолчанию

    Спасибо за оперативный ответ!

    Экземпляр точно 1, перепроверил много раз. Но код загружался на ПЛК множество раз через полную загрузку и ПЛК не перезагружался. Внутренний счетчик экземпляров библиотеки находится в области памяти не затрагиваемой при обновлении кола проекта?

  4. #4

    По умолчанию

    Цитата Сообщение от 6385428 Посмотреть сообщение
    Спасибо за оперативный ответ!

    Экземпляр точно 1, перепроверил много раз. Но код загружался на ПЛК множество раз через полную загрузку и ПЛК не перезагружался. Внутренний счетчик экземпляров библиотеки находится в области памяти не затрагиваемой при обновлении кола проекта?
    Вообще, если код загружался через полную загрузку (а не через онлайн-изменение) - то все должно работать корректно.
    У нас когда-то были проблемы, похожие на ту, которую описываете вы - их поправили в прошивке 1.3.0812.1315.

  5. #5

    По умолчанию

    Перепроверил - действительно при полной загрузке счетчик не сбрасывается. При перезагрузке вызов начинает работать. Если потом упустить количество даже не экземпляров блоков, а вызовы одного и того экземпляра с разными параметрами, не сбросив его в промежутках в false - перестает работать. И только перезагрузка помогает

  6. #6

    По умолчанию

    Здравствуйте, а как организовать циклический доступ, например к БД каждые 10 секунд, с помощью CmpSysExec?

  7. #7

    По умолчанию

    Цитата Сообщение от Zagagulkin Посмотреть сообщение
    Здравствуйте, а как организовать циклический доступ, например к БД каждые 10 секунд, с помощью CmpSysExec?
    Для этого потребуется циклически вызывать экземпляр ФБ из библиотеки CmpSysExec - например, по таймеру.

  8. #8

    По умолчанию

    Спасибо, за оперативный ответ!

  9. #9

    По умолчанию

    timer(ENABLE := TRUE, TIMELOW := T#10S, TIMEHIGH := T#1MS);

    IF timer.OUT THEN

    arIntErrorTable[i] := INSERT_TO_DB(xEnable := TRUE, tableName := arLINES_COUNTERS[1][i], counterStr := arLINES_COUNTERS[2][i], atSpeed := 1);

    IF arIntErrorTable[i] = 1 THEN
    answerStr := arLINES_COUNTERS[1][i];
    END_IF

    i := i + 1;

    IF i > 7 THEN
    i := 1;
    END_IF
    END_IF

    Вот такой код как-то странно работает, при первом проходе от 1 до 7, данные записываются в БД SQlite3 функцией INSERT_TO_DB(обертка над SysExec3), а при последующих возвращает код ошибки 1.

  10. #10

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

Ваши права

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