Вопросы по Step 7 Pro (Ka3ax)

Инженерное программное обеспечение
Аватара пользователя
Ka3ax
Специалист
Сообщения: 303
Зарегистрирован: 07 сен 2013, 10:09

Re: Вопросы новичка (kobrik)

Сообщение Ka3ax »

STL, в OB1 первой строкой
L #temp

откуда в #temp появляется время цикла?

я читаю, читаю ))) но наверное не то и нет там.
Supervision of erection

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Вопросы новичка (kobrik)

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

#temp - временная переменная (TEMP) или STAT?

Аватара пользователя
Ka3ax
Специалист
Сообщения: 303
Зарегистрирован: 07 сен 2013, 10:09

Re: Вопросы новичка (kobrik)

Сообщение Ka3ax »

Михайло писал(а):#temp - временная переменная (TEMP) или STAT?
temp, я так ее и назвал здесь.
я вот думаю >OB100 нужно смотреть?
или в нем при старте, что то образуется?
Supervision of erection

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Вопросы новичка (kobrik)

Сообщение mr_Frodo »

Это азы степа. Переменные бывают глобальные и локальные. Глобальные объявляются в таблице символов. Переменные с решеткой - локальные переменные. Они объявляются в блоке (об, фц, фб). В свою очередь они бывают входными, выходными, временными и статическими. Если Вы увидели в блоке переменную с решоткой то это значит, что она инициализируется и используется ТОЛЬКО В ЭТОМ блоке. Искать её в других - терять время. И даже если и найдёте, то это будет просто "однофамилица": её содержимое зависит от логики именно этого блока.
Вот моя подпись...

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Вопросы новичка (kobrik)

Сообщение mr_Frodo »

Поэтому, если переменая #ххххх родилась и используется в ОБ1, то и содержимое ёё зависит от логики ОБ1. А то, что её имя #темп ни коим образом не говорит,что это врЕменная пременная. Временные переменные могут считаться таковыми только если они объявляются в области временных переменных. А имя может быть каким угодно.
Надеюсь, что я правильно понял ваш вопрос и не зря здесь разбираюсь. ))))

Аватара пользователя
Ka3ax
Специалист
Сообщения: 303
Зарегистрирован: 07 сен 2013, 10:09

Re: Вопросы новичка (kobrik)

Сообщение Ka3ax »

mr_Frodo писал(а):Поэтому, если переменая #ххххх родилась и используется в ОБ1, то и содержимое ёё зависит от логики ОБ1. А то, что её имя #темп ни коим образом не говорит,что это врЕменная пременная. Временные переменные могут считаться таковыми только если они объявляются в области временных переменных. А имя может быть каким угодно.
Надеюсь, что я правильно понял ваш вопрос и не зря здесь разбираюсь. ))))
временная, объявленная в области TEMP, я и имя поэтому тут такое дал.
в программе временная переменная имеет имя "#определение,времени,цикла", в коментариях указано , что в ms.
online железа показывает 25-26 ms.

у меня задача сейчас освоить китайский (STL) за два дня.
Мнемнику понимаю, могу и написать, но глубоких знаний понимать происходящее нет, я на STL не писал много, на SCL больше.
В регистры и аккумуляторы не вникал. Хотя, первый освоенный мной язык был Asembler Z80, я программатор на нем реализовал, как первый проект для Sinclair. Но сегодня я стар и все забыл. ПОэтому начал здесь спрашивать. Последний опыт, разработка систем автоматизации, программировал редко, начальником был.

Сейчас новая работа , а фирма "пишет" только на STL
то и содержимое ёё зависит от логики ОБ1
на первом месте L #temp в OB1 стоит, как может и может ли логика OB1 на содержание #temp влиять?
Supervision of erection

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Вопросы новичка (kobrik)

Сообщение mr_Frodo »

Ну вообще все стандартные блоки ОБ1, ОБ30, ОБ100, ОБ80 и т.д. имеют собственные , заложенные производителем и зависящие от модели ЦПУ переменные, которые вы можете использовать по своему усмотрению. Открываете менеджер проекта тычете по ОБ1 и нажимаете F1. "Вылазиет" контекстная справка по вашему ОБ1 :p изучаете её и сравниваете локальные адреса переменных вашего проекта с именами по умолчанию и по адресу понимаете, что это за данные в этой области хранятся и откуда берутся ))))
Вот моя подпись...

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Вопросы новичка (kobrik)

Сообщение mr_Frodo »

ещё маленькая хитрость...
для "осмысливания" команд стл можно применить практику (в Степ7) создания некоторых нетворков в ЛАД, а потом переключать вид на стл и сравнивая увиденное понять логику и назначение команд стл без справочника. Если писать на стл сразу, то обратно в ЛАД перевести получится в гораздо меньших количествах случаев.
Вот моя подпись...

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Вопросы новичка (kobrik)

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

Ассемблер Z80 и STL (IL) определённо очень родственны. Но в работе процессора ПЛК есть особенности, которые нужно знать-понимать. Но это уж не такой серьёзный барьер в освоении.

Аватара пользователя
Ka3ax
Специалист
Сообщения: 303
Зарегистрирован: 07 сен 2013, 10:09

Re: Вопросы новичка (kobrik)

Сообщение Ka3ax »

Михайло писал(а):Ассемблер Z80 и STL (IL) определённо очень родственны. Но в работе процессора ПЛК есть особенности, которые нужно знать-понимать. Но это уж не такой серьёзный барьер в освоении.
хотел бы список особенностей. пока что попадается, то и учу
Supervision of erection

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Вопросы новичка (kobrik)

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

Если помнишь, то в Z80 постоянно использовались инструкции типа JUMP (JZ, JNZ, JC, JNC и т.д.). У ПЛК-шных процессоров они практически не используются, так как каждая инструкция имеет вход EN. То есть сначала происходит вычисление, будет или не будет выполняться инструкция. Это позволяет полностью отказаться от JUMP-ов, а цикл программы всегда выполняется за одно и то же время (за исключением случаев, когда используется условный вызов CALL).

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Вопросы новичка (kobrik)

Сообщение mr_Frodo »

Достаточно часто использую эти инструкции в стл. Даже если вы "разберёте" на стл из лада какой нибудь нетворк с такими входами, например последовательные действия с числом (адд, суб, жив и пр.), перемещение (мув) или компараторы (кмп), то увидите, что без прыжков там нечего делать.
Вот моя подпись...

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Вопросы новичка (kobrik)

Сообщение mr_Frodo »

Кстати, КаЗах, вы разобрались откуда берётся значение в вашем #темп?
Вот моя подпись...

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Вопросы новичка (kobrik)

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

mr_Frodo писал(а):Достаточно часто использую эти инструкции в стл.
А я ни разу не использовал.

Аватара пользователя
Ka3ax
Специалист
Сообщения: 303
Зарегистрирован: 07 сен 2013, 10:09

Re: Вопросы новичка (kobrik)

Сообщение Ka3ax »

Михайло писал(а):
mr_Frodo писал(а):Достаточно часто использую эти инструкции в стл.
А я ни разу не использовал.
я постоянно встречаю в кодах прыжки.
Михайло, может пару примеров с механизмами, как прыжки обойти можно?
разбивать network с прыжками на другие network и в каждом где предполгался прыжек делать оконочание блока?
Кстати, КаЗах, вы разобрались откуда берётся значение в вашем #темп?
конечно нет, просто берется. спрашивать, как то страшно, так что читаю все подряд, перечитываю.
знать бы в какой стороне информация находится.
Supervision of erection

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Вопросы новичка (kobrik)

Сообщение mr_Frodo »

Можете выложить снимок экрана ОБ1 в области объявления временных переменных?
Вот моя подпись...

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Вопросы новичка (kobrik)

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

Без прыжков можно обходиться, если использовать функции
A, O, AN, ON, A(, O(, AN(, ON(, ), FP, FN - построение булевых условий
=, R, S - запись булевого результата
CC - условный вызов CALL
L, T - работа с целыми числами
+I, -I, *I, /I - математические операции
>I, <I, >=I, <=I, ==I, <>I - операции сравнения

Может ещё какие-то забыл, но эти точно надо знать и использовать.

Безпрыжковое программирование предполагает выполнение программы без ветвлений циклически от начала до конца. Могут быть хорошо контролируемые ветвления за счёт CC (условный CALL) или UC (безусловный CALL).

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Вопросы новичка (kobrik)

Сообщение mr_Frodo »

Михайло, покажите тогда пример выбора задания для ПЧ из нескольких (двух) значений по сигналу с разных входов, не используя прыжков в стл.
Вот моя подпись...

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Вопросы новичка (kobrik)

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

И вправду, команды L, T безусловные, значит неудобные. Надо писать этот кусок в LAD на основе MOVE.

Аватара пользователя
Ka3ax
Специалист
Сообщения: 303
Зарегистрирован: 07 сен 2013, 10:09

Re: Вопросы новичка (kobrik)

Сообщение Ka3ax »

спасибо, Михайло, как то про вызовы и не вспомнил, про сути тот же прыжок, только с возвращением.
или можно не возвращаться?
Supervision of erection

Ответить