Вопросы по Step 7 Pro (Ka3ax) • RAZRAB.RU

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

Инженерное программное обеспечение

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

Сообщение Ka3ax » 08 май 2018, 18:49

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

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

я читаю, читаю ))) но наверное не то и нет там.
Supervision of erection
Аватара пользователя
Ka3ax
Специалист
 
Сообщения: 261
Зарегистрирован: 07 сен 2013, 10:09

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

Сообщение Михайло » 08 май 2018, 19:01

#temp - временная переменная (TEMP) или STAT?
Михайло
Администратор
 
Сообщения: 3755
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение Ka3ax » 08 май 2018, 19:38

Михайло писал(а):#temp - временная переменная (TEMP) или STAT?


temp, я так ее и назвал здесь.
я вот думаю >OB100 нужно смотреть?
или в нем при старте, что то образуется?
Supervision of erection
Аватара пользователя
Ka3ax
Специалист
 
Сообщения: 261
Зарегистрирован: 07 сен 2013, 10:09

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

Сообщение mr_Frodo » 09 май 2018, 05:37

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

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

Сообщение mr_Frodo » 09 май 2018, 05:50

Поэтому, если переменая #ххххх родилась и используется в ОБ1, то и содержимое ёё зависит от логики ОБ1. А то, что её имя #темп ни коим образом не говорит,что это врЕменная пременная. Временные переменные могут считаться таковыми только если они объявляются в области временных переменных. А имя может быть каким угодно.
Надеюсь, что я правильно понял ваш вопрос и не зря здесь разбираюсь. ))))
Аватара пользователя
mr_Frodo
Специалист
 
Сообщения: 437
Зарегистрирован: 22 июл 2016, 20:38

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

Сообщение Ka3ax » 09 май 2018, 07:30

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
Аватара пользователя
Ka3ax
Специалист
 
Сообщения: 261
Зарегистрирован: 07 сен 2013, 10:09

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

Сообщение mr_Frodo » 09 май 2018, 09:12

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

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

Сообщение mr_Frodo » 09 май 2018, 09:18

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

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

Сообщение Михайло » 09 май 2018, 10:43

Ассемблер Z80 и STL (IL) определённо очень родственны. Но в работе процессора ПЛК есть особенности, которые нужно знать-понимать. Но это уж не такой серьёзный барьер в освоении.
Михайло
Администратор
 
Сообщения: 3755
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение Ka3ax » 10 май 2018, 01:35

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

хотел бы список особенностей. пока что попадается, то и учу
Supervision of erection
Аватара пользователя
Ka3ax
Специалист
 
Сообщения: 261
Зарегистрирован: 07 сен 2013, 10:09

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

Сообщение Михайло » 10 май 2018, 04:43

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

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

Сообщение mr_Frodo » 11 май 2018, 05:46

Достаточно часто использую эти инструкции в стл. Даже если вы "разберёте" на стл из лада какой нибудь нетворк с такими входами, например последовательные действия с числом (адд, суб, жив и пр.), перемещение (мув) или компараторы (кмп), то увидите, что без прыжков там нечего делать.
Вот моя подпись...
Аватара пользователя
mr_Frodo
Специалист
 
Сообщения: 437
Зарегистрирован: 22 июл 2016, 20:38

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

Сообщение mr_Frodo » 11 май 2018, 05:48

Кстати, КаЗах, вы разобрались откуда берётся значение в вашем #темп?
Вот моя подпись...
Аватара пользователя
mr_Frodo
Специалист
 
Сообщения: 437
Зарегистрирован: 22 июл 2016, 20:38

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

Сообщение Михайло » 11 май 2018, 07:04

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

А я ни разу не использовал.
Михайло
Администратор
 
Сообщения: 3755
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение Ka3ax » 11 май 2018, 07:16

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

А я ни разу не использовал.

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

конечно нет, просто берется. спрашивать, как то страшно, так что читаю все подряд, перечитываю.
знать бы в какой стороне информация находится.
Supervision of erection
Аватара пользователя
Ka3ax
Специалист
 
Сообщения: 261
Зарегистрирован: 07 сен 2013, 10:09

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

Сообщение mr_Frodo » 11 май 2018, 07:57

Можете выложить снимок экрана ОБ1 в области объявления временных переменных?
Вот моя подпись...
Аватара пользователя
mr_Frodo
Специалист
 
Сообщения: 437
Зарегистрирован: 22 июл 2016, 20:38

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

Сообщение Михайло » 11 май 2018, 07:59

Без прыжков можно обходиться, если использовать функции
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).
Михайло
Администратор
 
Сообщения: 3755
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение mr_Frodo » 11 май 2018, 11:12

Михайло, покажите тогда пример выбора задания для ПЧ из нескольких (двух) значений по сигналу с разных входов, не используя прыжков в стл.
Вот моя подпись...
Аватара пользователя
mr_Frodo
Специалист
 
Сообщения: 437
Зарегистрирован: 22 июл 2016, 20:38

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

Сообщение Михайло » 11 май 2018, 13:26

И вправду, команды L, T безусловные, значит неудобные. Надо писать этот кусок в LAD на основе MOVE.
Михайло
Администратор
 
Сообщения: 3755
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение Ka3ax » 11 май 2018, 18:20

спасибо, Михайло, как то про вызовы и не вспомнил, про сути тот же прыжок, только с возвращением.
или можно не возвращаться?
Supervision of erection
Аватара пользователя
Ka3ax
Специалист
 
Сообщения: 261
Зарегистрирован: 07 сен 2013, 10:09

След.

Вернуться в Simatic TIA Portal / Step7

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2