1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Значения "локальной" переменной в момент времени.

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
Ответить
Аватара пользователя

Автор темы
PsiSoP
здесь недавно
здесь недавно
Сообщения: 30
Зарегистрирован: 12 сен 2020, 12:26
Имя: Митрич
Благодарил (а): 9 раз
Поблагодарили: 1 раз

Значения "локальной" переменной в момент времени.

Сообщение PsiSoP »

Доброго времени суток Уважаемые.

Я пока новый человек в теме программирования (тапками можно и нужно кидаться не обижусь).

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

Скажем так переменная
#StatusDisplayChain имеет конечное значение в OB = 97 но в самой программе я вижу что разные блоки присваивают ей другие значения.

Правильно ли я понимаю что при выполнении программы каждый проход оно допустим в пустой оператор #StatusDisplayChain = 0 добавляет первое значение которое изменяет его и так n+1 раз. Но в отображении показывает конечное? А все предыдущие значения как бы держит в уме?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя

Nicolayy
освоился
освоился
Сообщения: 281
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 9 раз
Поблагодарили: 64 раза

Значения "локальной" переменной в момент времени.

Сообщение Nicolayy »

PsiSoP писал(а): 21 авг 2021, 13:27 меня удивило поведение локальной переменной а именно ее разные значения в один момент времени
Хочу поинтерeсоваться: что сие означает? Ну, т.е. что это за такой волшебный "один момент времени" в Вашем понимании? В представленном Вами фрагменте программы сначала переменной было присвоенно одно значение, затем - другое. В Step7 программа выполняется сверху вниз построчно, никаких ребусов тут нет. И, конечно, нет никакого "одного момента времени" в этой истории.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3576
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

Значения "локальной" переменной в момент времени.

Сообщение Михайло »

Мониторинг в ТИА Портале не всегда отражает реальное значение переменных, если они меняются в пределах скана несколько раз. Дело в том, что сеть Ethernet не может справиться с такими быстрыми изменениями.
Поймите, как работает мониторинг: он рассматривает каждый network по отдельности, берет входные значения и вычисляет выходы по ним.
Язык программирования не имеет значения.
Аватара пользователя

Nicolayy
освоился
освоился
Сообщения: 281
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 9 раз
Поблагодарили: 64 раза

Значения "локальной" переменной в момент времени.

Сообщение Nicolayy »

PsiSoP писал(а): 21 авг 2021, 13:27 Мониторинг в ТИА Портале не всегда отражает реальное значение переменных
Так тут-то на скринах все значения правильные отображены. Ну, вопрос только по значению 85 на второй картинке, но скорее всего там был еще фрагмент кода, где переменной присваивались эти самые 85, просто этот фрагмент на скрин не попал.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3576
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

Значения "локальной" переменной в момент времени.

Сообщение Михайло »

PsiSoP писал(а): 21 авг 2021, 13:27 Правильно ли я понимаю что при выполнении программы каждый проход оно допустим в пустой оператор #StatusDisplayChain = 0 добавляет первое значение которое изменяет его и так n+1 раз. Но в отображении показывает конечное? А все предыдущие значения как бы держит в уме?
Все верно. Держит не "в уме", а в той ячейке памяти, которая выделена под эту переменную. Принцип "Кто последний, того и тапки". С точки зрения работоспособности, нормально, а с точки зрения читаемости программы, так себе. Если таких операций присваивания немного, то возможно имело бы смысл записать условия выполнения операций так, чтобы они никогда не выполнялись одновременно. Тогда было бы все определенно и строго.
Аватара пользователя

Nicolayy
освоился
освоился
Сообщения: 281
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 9 раз
Поблагодарили: 64 раза

Значения "локальной" переменной в момент времени.

Сообщение Nicolayy »

Михайло писал(а): 22 авг 2021, 15:03 возможно имело бы смысл записать условия выполнения операций так, чтобы они никогда не выполнялись одновременно
Угу. IF THEN надо написать по-человечески и не заниматься ерундой

v0v
не первый раз у нас
не первый раз у нас
Сообщения: 343
Зарегистрирован: 12 дек 2018, 14:47
Имя: Влад
Благодарил (а): 1 раз
Поблагодарили: 44 раза

Значения "локальной" переменной в момент времени.

Сообщение v0v »

Лучше подать сигнал по фронту.

ZuElecRu
освоился
освоился
Сообщения: 290
Зарегистрирован: 09 авг 2016, 13:49
Имя: Чистилин Андрей Анатольевич
Страна: Россия
город/регион: Малоярославец
Благодарил (а): 31 раз
Поблагодарили: 35 раз

Значения "локальной" переменной в момент времени.

Сообщение ZuElecRu »

Nicolayy писал(а): 22 авг 2021, 17:44 Угу. IF THEN надо написать по-человечески и не заниматься ерундой
Вот сразу видно, человек сразу из программистов в электронщики попал, а не как все, из электриков....шутка, не обижайся :-P
на самом деле у буржуев в написании программы спошь и рядом такой подход, когда много шагов техпроцесса, а в каждом шаге еще подшаги, в них еще. Пишут программу в лоб, в LAD, и не парятся, ни в отладке ни в последующей модернизации.
Аватара пользователя

Looker
эксперт
эксперт
Сообщения: 1112
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 323 раза
Поблагодарили: 218 раз

Значения "локальной" переменной в момент времени.

Сообщение Looker »

В литературе попалась фраза про качество написания программы - "телефонный тест". Это было в одной из двух:
- Керниган Б.В... Элементы стиля программирования.
- Д. Прайс Программирование на языке Паскаль. Практическое руководство.
Фраза, кажется была в первой.
Книги старые, но стоящие для прочтения.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
Аватара пользователя

Nicolayy
освоился
освоился
Сообщения: 281
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 9 раз
Поблагодарили: 64 раза

Значения "локальной" переменной в момент времени.

Сообщение Nicolayy »

ZuElecRu, ну, Вас тут нет сложных логических конструкций, а просто сплошные присвоения по простым условиям. В таких случаях IF THEN ELSIF... удобнее и рациональнее всего
Аватара пользователя

Автор темы
PsiSoP
здесь недавно
здесь недавно
Сообщения: 30
Зарегистрирован: 12 сен 2020, 12:26
Имя: Митрич
Благодарил (а): 9 раз
Поблагодарили: 1 раз

Значения "локальной" переменной в момент времени.

Сообщение PsiSoP »

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

Извиняюсь за то что сразу не ответил но мирские будни с лопатой и картошкой...)

Почему был задан вопрос - ранее я такого просто не встречал у других ребят в коде.
Американские коллеги пишут на LAD и создают строгие условия как по циклам так и по присвоениям значений.
А вот коллеги из германии в основном почему то любят FBD и устраивают дикую мешанину. Но это можно так сказать победить но вот ихние сокращения названия переменных или в комментариях на немецком..... Пока не прошерстиш весь код что и откуда и за что отвечает, трудно понять.

ZuElecRu
освоился
освоился
Сообщения: 290
Зарегистрирован: 09 авг 2016, 13:49
Имя: Чистилин Андрей Анатольевич
Страна: Россия
город/регион: Малоярославец
Благодарил (а): 31 раз
Поблагодарили: 35 раз

Значения "локальной" переменной в момент времени.

Сообщение ZuElecRu »

Nikolay:
К сожалению у меня нет такого пакета в Step7, но мне был интересен пример конструкции IT then для верней строчки второй картинки...
Аватара пользователя

Nicolayy
освоился
освоился
Сообщения: 281
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 9 раз
Поблагодарили: 64 раза

Значения "локальной" переменной в момент времени.

Сообщение Nicolayy »

ZuElecRu писал(а): 24 авг 2021, 11:24 для верней строчки второй картинки
там половина верхней строки срезана на второй картинке.

Отправлено спустя 3 минуты 18 секунд:
PsiSoP писал(а): 24 авг 2021, 09:14 сокращения названия переменных или в комментариях на немецком.
Комментарии на валлонском диалекте французского языка (Бельгия), где автоматический перевод половину слов просто не переводит (типа, это не французские слова) - вот где полный п...
Аватара пользователя

Автор темы
PsiSoP
здесь недавно
здесь недавно
Сообщения: 30
Зарегистрирован: 12 сен 2020, 12:26
Имя: Митрич
Благодарил (а): 9 раз
Поблагодарили: 1 раз

Значения "локальной" переменной в момент времени.

Сообщение PsiSoP »

Nicolayy писал(а): 24 авг 2021, 12:11 там половина верхней строки срезана на второй картинке.
Имеется в виду tmp2?
Nicolayy писал(а): 24 авг 2021, 12:11 Комментарии на валлонском диалекте французского языка (Бельгия), где автоматический перевод половину слов просто не переводит (типа, это не французские слова) - вот где полный п...
Мнда....
У вас нет необходимых прав для просмотра вложений в этом сообщении.

ZuElecRu
освоился
освоился
Сообщения: 290
Зарегистрирован: 09 авг 2016, 13:49
Имя: Чистилин Андрей Анатольевич
Страна: Россия
город/регион: Малоярославец
Благодарил (а): 31 раз
Поблагодарили: 35 раз

Значения "локальной" переменной в момент времени.

Сообщение ZuElecRu »

Да пофиг на комментарии, замените на меркеры, мне интересно как это будет. На винсс флексибл, на пример, нельзя сделать в скрипте IF tag1=true AND tag2=true как скобки не ставь, всегда приходится вкладывать
if tag1=true then
if tag2=true then
...
Аватара пользователя

Автор темы
PsiSoP
здесь недавно
здесь недавно
Сообщения: 30
Зарегистрирован: 12 сен 2020, 12:26
Имя: Митрич
Благодарил (а): 9 раз
Поблагодарили: 1 раз

Значения "локальной" переменной в момент времени.

Сообщение PsiSoP »

Благодаря вашим ответам я вопрос решил.
Пересмотрел программу в целом, разделил на шаги и больше такой гадости нету. По крайней мере стало намного удобнее.

Дабы не плодить Темы такой микровопросик:
[+]
MC-Interpolator{OB92}
MC-Servo {OB91}
FB_Interpolieren / DB_Interpolieren
Сразу из коробки под паролями или это создатели проекта постарались?
В проекте есть блоки управления двумя 6SL3 210-5FB10-4UF1
Аватара пользователя

Nicolayy
освоился
освоился
Сообщения: 281
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 9 раз
Поблагодарили: 64 раза

Значения "локальной" переменной в момент времени.

Сообщение Nicolayy »

ZuElecRu писал(а): 24 авг 2021, 12:45 На винсс флексибл, на пример, нельзя сделать в скрипте IF tag1=true AND tag2=true как скобки не ставь
[+]

Код: Выделить всё

IF(Log0) THEN
   Status := 98;
ELSIF(Ctrl_On = false) THEN
   Status := 97;
ELSIF(M_Released_Axis = false) THEN 
   Status := 96;
ELSIF((AX1.Done = false AND AX1.Enable) OR 
      (AX2.Done = false AND AX2.Enable)) 
THEN 
   Status := 95; 
//ELSIF
// и т.д.
// ...
END_IF;
ну а в step7-то можно.

ZuElecRu
освоился
освоился
Сообщения: 290
Зарегистрирован: 09 авг 2016, 13:49
Имя: Чистилин Андрей Анатольевич
Страна: Россия
город/регион: Малоярославец
Благодарил (а): 31 раз
Поблагодарили: 35 раз

Значения "локальной" переменной в момент времени.

Сообщение ZuElecRu »

Nicolayy писал(а): 25 авг 2021, 07:32 ну а в step7-то можно.
Ну да, нормально, читаемо, непривычно правда. Надо все таки поставить себе, потренироваться, можно как в AWL все один network запихнуть..., с точки зрения писателя программы, хорошо, с точки зрения наладчика полный кошмар. Хотя без комментариев и так и так кошмар.
Спасибо.
А онлайн это как выглядит?
Аватара пользователя

Nicolayy
освоился
освоился
Сообщения: 281
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 9 раз
Поблагодарили: 64 раза

Значения "локальной" переменной в момент времени.

Сообщение Nicolayy »

ZuElecRu писал(а): 25 авг 2021, 10:43 А онлайн это как выглядит?
Примерно как online на AWL оно выглядит. Т.е. появляется таблица справа напротив кода программы, где значения переменных и логических выражений
Ответить

Вернуться в «Simatic TIA Portal»