SF C Шаги в IEC 61131-3 Программирование - PullRequest
1 голос
/ 14 января 2020

Так что у меня есть проблема, когда в моем SF C он переходит на начальный шаг, но команды, записанные на этом шаге, не регистрируются.

В конце SF C шаг вводит 5 в A_Status (INT). Самый следующий переход проверяет, равно ли значение A_Status 5. Пока никаких проблем, но после перехода, когда он переходит к началу SF C, где первый шаг должен ввести 0 в A_Status, A_Status остается в 5.

Время цикла моей программы составляет 100 мс. Я пытался замедлить цикл, но это не сработало. В чем здесь проблема? Может быть, та же самая переменная, используемая в такой последовательности, просто не работает?

Ответ был бы очень признателен.

1 Ответ

0 голосов
/ 15 января 2020

Вы не упоминаете, записываете ли вы значения во время входа / выхода или в шаговых действиях SF C. Но учтите, что в некоторых случаях код с предыдущего шага может быть выполнен позже, чем код на новом шаге.

Вот ссылка, которая объясняет порядок вызовов и почему иногда части кода выполняются дважды: https://infosys.beckhoff.com/english.php?content=.. / content / 1033 / tc3_plc_intro / 45035999420423563. html

Мне удалось добавить следующий код во все действия, чтобы этого не произошло.

IF STEP_NAME.x THEN // Only execute this while the step is active.
  // Insert code here.
END_IF
...