STL, в OB1 первой строкой
L #temp
откуда в #temp появляется время цикла?
я читаю, читаю ))) но наверное не то и нет там.
Вопросы по Step 7 Pro (Ka3ax)
Re: Вопросы новичка (kobrik)
Supervision of erection
Re: Вопросы новичка (kobrik)
#temp - временная переменная (TEMP) или STAT?
Re: Вопросы новичка (kobrik)
temp, я так ее и назвал здесь.Михайло писал(а):#temp - временная переменная (TEMP) или STAT?
я вот думаю >OB100 нужно смотреть?
или в нем при старте, что то образуется?
Supervision of erection
Re: Вопросы новичка (kobrik)
Это азы степа. Переменные бывают глобальные и локальные. Глобальные объявляются в таблице символов. Переменные с решеткой - локальные переменные. Они объявляются в блоке (об, фц, фб). В свою очередь они бывают входными, выходными, временными и статическими. Если Вы увидели в блоке переменную с решоткой то это значит, что она инициализируется и используется ТОЛЬКО В ЭТОМ блоке. Искать её в других - терять время. И даже если и найдёте, то это будет просто "однофамилица": её содержимое зависит от логики именно этого блока.
Вот моя подпись...
Re: Вопросы новичка (kobrik)
Поэтому, если переменая #ххххх родилась и используется в ОБ1, то и содержимое ёё зависит от логики ОБ1. А то, что её имя #темп ни коим образом не говорит,что это врЕменная пременная. Временные переменные могут считаться таковыми только если они объявляются в области временных переменных. А имя может быть каким угодно.
Надеюсь, что я правильно понял ваш вопрос и не зря здесь разбираюсь. ))))
Надеюсь, что я правильно понял ваш вопрос и не зря здесь разбираюсь. ))))
Re: Вопросы новичка (kobrik)
временная, объявленная в области TEMP, я и имя поэтому тут такое дал.mr_Frodo писал(а):Поэтому, если переменая #ххххх родилась и используется в ОБ1, то и содержимое ёё зависит от логики ОБ1. А то, что её имя #темп ни коим образом не говорит,что это врЕменная пременная. Временные переменные могут считаться таковыми только если они объявляются в области временных переменных. А имя может быть каким угодно.
Надеюсь, что я правильно понял ваш вопрос и не зря здесь разбираюсь. ))))
в программе временная переменная имеет имя "#определение,времени,цикла", в коментариях указано , что в ms.
online железа показывает 25-26 ms.
у меня задача сейчас освоить китайский (STL) за два дня.
Мнемнику понимаю, могу и написать, но глубоких знаний понимать происходящее нет, я на STL не писал много, на SCL больше.
В регистры и аккумуляторы не вникал. Хотя, первый освоенный мной язык был Asembler Z80, я программатор на нем реализовал, как первый проект для Sinclair. Но сегодня я стар и все забыл. ПОэтому начал здесь спрашивать. Последний опыт, разработка систем автоматизации, программировал редко, начальником был.
Сейчас новая работа , а фирма "пишет" только на STL
на первом месте L #temp в OB1 стоит, как может и может ли логика OB1 на содержание #temp влиять?то и содержимое ёё зависит от логики ОБ1
Supervision of erection
Re: Вопросы новичка (kobrik)
Ну вообще все стандартные блоки ОБ1, ОБ30, ОБ100, ОБ80 и т.д. имеют собственные , заложенные производителем и зависящие от модели ЦПУ переменные, которые вы можете использовать по своему усмотрению. Открываете менеджер проекта тычете по ОБ1 и нажимаете F1. "Вылазиет" контекстная справка по вашему ОБ1 изучаете её и сравниваете локальные адреса переменных вашего проекта с именами по умолчанию и по адресу понимаете, что это за данные в этой области хранятся и откуда берутся ))))
Вот моя подпись...
Re: Вопросы новичка (kobrik)
ещё маленькая хитрость...
для "осмысливания" команд стл можно применить практику (в Степ7) создания некоторых нетворков в ЛАД, а потом переключать вид на стл и сравнивая увиденное понять логику и назначение команд стл без справочника. Если писать на стл сразу, то обратно в ЛАД перевести получится в гораздо меньших количествах случаев.
для "осмысливания" команд стл можно применить практику (в Степ7) создания некоторых нетворков в ЛАД, а потом переключать вид на стл и сравнивая увиденное понять логику и назначение команд стл без справочника. Если писать на стл сразу, то обратно в ЛАД перевести получится в гораздо меньших количествах случаев.
Вот моя подпись...
Re: Вопросы новичка (kobrik)
Ассемблер Z80 и STL (IL) определённо очень родственны. Но в работе процессора ПЛК есть особенности, которые нужно знать-понимать. Но это уж не такой серьёзный барьер в освоении.
Re: Вопросы новичка (kobrik)
хотел бы список особенностей. пока что попадается, то и учуМихайло писал(а):Ассемблер Z80 и STL (IL) определённо очень родственны. Но в работе процессора ПЛК есть особенности, которые нужно знать-понимать. Но это уж не такой серьёзный барьер в освоении.
Supervision of erection
Re: Вопросы новичка (kobrik)
Если помнишь, то в Z80 постоянно использовались инструкции типа JUMP (JZ, JNZ, JC, JNC и т.д.). У ПЛК-шных процессоров они практически не используются, так как каждая инструкция имеет вход EN. То есть сначала происходит вычисление, будет или не будет выполняться инструкция. Это позволяет полностью отказаться от JUMP-ов, а цикл программы всегда выполняется за одно и то же время (за исключением случаев, когда используется условный вызов CALL).
Re: Вопросы новичка (kobrik)
Достаточно часто использую эти инструкции в стл. Даже если вы "разберёте" на стл из лада какой нибудь нетворк с такими входами, например последовательные действия с числом (адд, суб, жив и пр.), перемещение (мув) или компараторы (кмп), то увидите, что без прыжков там нечего делать.
Вот моя подпись...
Re: Вопросы новичка (kobrik)
Кстати, КаЗах, вы разобрались откуда берётся значение в вашем #темп?
Вот моя подпись...
Re: Вопросы новичка (kobrik)
А я ни разу не использовал.mr_Frodo писал(а):Достаточно часто использую эти инструкции в стл.
Re: Вопросы новичка (kobrik)
я постоянно встречаю в кодах прыжки.Михайло писал(а):А я ни разу не использовал.mr_Frodo писал(а):Достаточно часто использую эти инструкции в стл.
Михайло, может пару примеров с механизмами, как прыжки обойти можно?
разбивать network с прыжками на другие network и в каждом где предполгался прыжек делать оконочание блока?
конечно нет, просто берется. спрашивать, как то страшно, так что читаю все подряд, перечитываю.Кстати, КаЗах, вы разобрались откуда берётся значение в вашем #темп?
знать бы в какой стороне информация находится.
Supervision of erection
Re: Вопросы новичка (kobrik)
Можете выложить снимок экрана ОБ1 в области объявления временных переменных?
Вот моя подпись...
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).
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).
Re: Вопросы новичка (kobrik)
Михайло, покажите тогда пример выбора задания для ПЧ из нескольких (двух) значений по сигналу с разных входов, не используя прыжков в стл.
Вот моя подпись...
Re: Вопросы новичка (kobrik)
И вправду, команды L, T безусловные, значит неудобные. Надо писать этот кусок в LAD на основе MOVE.
Re: Вопросы новичка (kobrik)
спасибо, Михайло, как то про вызовы и не вспомнил, про сути тот же прыжок, только с возвращением.
или можно не возвращаться?
или можно не возвращаться?
Supervision of erection