Спасибо, за Ваш труд! Отличное видео. Много полезного узнал. Если это возможно, то сделайте ещё видео с реальными примерами, где используются "сдвиги" , а также косвенная адресация на STL и SCL. Заранее, спасибо!
А если мы посмотрим в кросреференс на используемые таймер Т1 там будет показан как используемый? Как потом инженеру в большой программе понять какие таймер используются, а какие нет? Просмотреть всю программу и увидеть место где на вход функции подается номер таймер. А если он не заметит то он просто использует таймер два раза. К чему это приведет? на стимуляторе конечно ничего не случиться, а с реальным оборудованием ...
Добрый день. Мне приходилось обслуживать десятки немецких станков различного назначения где весь код написан через указатели и косвенную адресацию. Были даже программы, где перекрестные ссылки показывали, что в программе вызывается только OB1, а все остально друг с другом не связано 🤷🏻♂️. Иногда к такому коду шла документация с перечислением занятых ресурсов плк. Но чаще всего, если я что-то и писал дополнительно, то как правило либо уже досконально знал, какие ресурсы свободны, либо использовал программные аналоги таймеров и счетчиков. А пример этот в том, что такой подход встречается сплошь и рядом в различный станках. Правильно это ли нет… наверное скорее нет, чем да. Но имеем, что имеем…
@@ClickClackLogic Да согласен, что так пишут. Делается это для того, чтобы максимально завязать покупателя на производителя. Но говорить о том как делать правильно с мыслью о том, что этот код в дальнейшем будет инструментом диагностики оборудования. Такие компании как Jacobs или General Motors разрешают в требованиях к оборудованию писать код на только на lad. Все остальные языки запрещены. Так как когда это модернизация то время затраченное на нее обычно не на что не влияет. Точнее все время на заводах влияет на деньги но в случае модернизации это недополученная прибыль, а в случае ремонта это огромные потери денег просто потому, что поиск занимает больше времени чем мог бы занимать при правленом написании кода. Учите писать правильный код это действительно улучшит положение на заводах, тогда не придется людям разбираться в "помойках".
Есть другая сторона медали. Я работал на предприятии, где на замену и ПНР нового станка в поточной линии дают 1.5-2 недели максимум. Так вот, в качестве поставщика станков всегда выбирали KHS или KRONES, так как эти фирмы сейчас производят модульные станки. Такой станок монтируется в течении 1 недели, потом представители производителя заливают в него свою типовую программу (вся на косвенной и по сути универсальная под все комплектации), и производят конфигурирование через HMI, согласно приобретенной конфигурации, без программирования и уже на следующий или даже в этот же день можно запускать продукцию и производить корректировку рецептов. Конечно покупатель вправе выбирать поставщиков и даже вправе предъявлять свои требования, но вот такой «модульный» принцип конфигурирования имеет свои преимущества… ведь позже можно просто докупить еще какой то модуль, установить его самостоятельно, а производитель просто по удаленке активирует его, изменив конфигурацию. И если производство уже «подсело» на подобный способ модернизации, то никто как правило уже не спрашивает у инженеров эксплуатации будет ли ему удобно возиться в подобной «лапше»… И как правило проблемы на заводах были именно потому, что люди впринципе не понимали, что возможно писать подобный код и всегда надеялись на перекресные ссылки. Из-за этого потом, как вы правильно заметили, возникали коллизии и остановки линий. Код в видео лишь показывает, что такая возможность есть, а пользоваться ей или нет пусть решает каждый сам.
Собственно чему вы удивляетесь?! На чем немцы новейшие станки нам в 2022-2024 году поставляют, то и обслуживаем. Зато код очень быстро работает и места мало занимает. 🤷🏻♂️ Такие фирмы как Krones, KHS свой код на STL даже в 1500е перетащили. Им видимо так удобнее.
В данном случае это просто решение абстрактной задачи самым изуверским способом, чтобы просто продемонстрировать возможности STL :) А по факту подобными сдвигами иногда создают стеки (виртуальный конвейер) для отслеживания состояния продукции в станках, где вся работа завязана на такты и нет возможности контролировать наличие продукта датчиками. Ставится один датчик на входе, который по такту машины фиксирует наличие продукта в бит 0 и далее этот бит двигается каждый такт в лево. На остальных участках, где требуется выполнить манипуляции с продуктом его наличие проверяется по наличию 1 в том или ином бите. Надеюсь получилось объяснить.
@@ClickClackLogic ну про случай в примере я так и понял)))). Про пример с станками наверное надо самому попробовать посдвигать,т .к ни разу сам не пользовался этими сдвигами и нету представления как они точно работают. Возможно тогда картинка сложится более четко
Добрый день. Перед вызовом команды "SD T1" мы загружаем в память контроллера время "L S5T#1S". Команда запуска таймера при запуске использует содержимое аккумулятора 1 в качестве уставки времени. Таким образом таймер T1 запускается с параметром в 1 секунду.
Добрый день. ACCU1 устроен следующим образом: ACCU1-H-H ACCU1-H-L ACCU1-L-H ACCU1-L-L Поэтому когда мы говорим о расположении информации в аккумуляторе, то мы оперируем этой структурой. При выполнении команды L MB10 - Содержимое MB10 попадет в ACCU1-L-L При выполнении команды L MW10 - Данные распределяться так, MB10 в ACCU1-L-H, а MB11 в ACCU1-L-L www.siemens-pro.ru/docs/simatic/s7-300/STEP7.V53_STL_r.pdf Стр. 128
спасибо за живой пример! лайк с ходу от легендарного вебмастера СЕООНЛИ
Не знаю кто он, но спасибо! Мы старались.
Спасибо, за Ваш труд! Отличное видео. Много полезного узнал. Если это возможно, то сделайте ещё видео с реальными примерами, где используются "сдвиги" , а также косвенная адресация на STL и SCL.
Заранее, спасибо!
Добрый день. На канале уже есть вторая часть, в которой мы немного рассказали про косвенную адресацию.
А если мы посмотрим в кросреференс на используемые таймер Т1 там будет показан как используемый? Как потом инженеру в большой программе понять какие таймер используются, а какие нет? Просмотреть всю программу и увидеть место где на вход функции подается номер таймер. А если он не заметит то он просто использует таймер два раза. К чему это приведет? на стимуляторе конечно ничего не случиться, а с реальным оборудованием ...
Добрый день. Мне приходилось обслуживать десятки немецких станков различного назначения где весь код написан через указатели и косвенную адресацию. Были даже программы, где перекрестные ссылки показывали, что в программе вызывается только OB1, а все остально друг с другом не связано 🤷🏻♂️. Иногда к такому коду шла документация с перечислением занятых ресурсов плк. Но чаще всего, если я что-то и писал дополнительно, то как правило либо уже досконально знал, какие ресурсы свободны, либо использовал программные аналоги таймеров и счетчиков. А пример этот в том, что такой подход встречается сплошь и рядом в различный станках. Правильно это ли нет… наверное скорее нет, чем да. Но имеем, что имеем…
@@ClickClackLogic Да согласен, что так пишут. Делается это для того, чтобы максимально завязать покупателя на производителя. Но говорить о том как делать правильно с мыслью о том, что этот код в дальнейшем будет инструментом диагностики оборудования. Такие компании как Jacobs или General Motors разрешают в требованиях к оборудованию писать код на только на lad. Все остальные языки запрещены. Так как когда это модернизация то время затраченное на нее обычно не на что не влияет. Точнее все время на заводах влияет на деньги но в случае модернизации это недополученная прибыль, а в случае ремонта это огромные потери денег просто потому, что поиск занимает больше времени чем мог бы занимать при правленом написании кода. Учите писать правильный код это действительно улучшит положение на заводах, тогда не придется людям разбираться в "помойках".
Есть другая сторона медали. Я работал на предприятии, где на замену и ПНР нового станка в поточной линии дают 1.5-2 недели максимум. Так вот, в качестве поставщика станков всегда выбирали KHS или KRONES, так как эти фирмы сейчас производят модульные станки. Такой станок монтируется в течении 1 недели, потом представители производителя заливают в него свою типовую программу (вся на косвенной и по сути универсальная под все комплектации), и производят конфигурирование через HMI, согласно приобретенной конфигурации, без программирования и уже на следующий или даже в этот же день можно запускать продукцию и производить корректировку рецептов.
Конечно покупатель вправе выбирать поставщиков и даже вправе предъявлять свои требования, но вот такой «модульный» принцип конфигурирования имеет свои преимущества… ведь позже можно просто докупить еще какой то модуль, установить его самостоятельно, а производитель просто по удаленке активирует его, изменив конфигурацию.
И если производство уже «подсело» на подобный способ модернизации, то никто как правило уже не спрашивает у инженеров эксплуатации будет ли ему удобно возиться в подобной «лапше»…
И как правило проблемы на заводах были именно потому, что люди впринципе не понимали, что возможно писать подобный код и всегда надеялись на перекресные ссылки. Из-за этого потом, как вы правильно заметили, возникали коллизии и остановки линий.
Код в видео лишь показывает, что такая возможность есть, а пользоваться ей или нет пусть решает каждый сам.
Можете, пожалуйста разобрать на канале использование языка SCL и LAD? Именно эти два языка составляют костяк в написании кода
Добрый день. Я подумаю. Нужно придумать хороший пример для этого.
@@ClickClackLogic у меня на совбесе в начале лета была задача сделать программу по схеме
S5Time))) Ви що в древній вік живете)))) Акамулятори це треш повний :D
Собственно чему вы удивляетесь?! На чем немцы новейшие станки нам в 2022-2024 году поставляют, то и обслуживаем. Зато код очень быстро работает и места мало занимает. 🤷🏻♂️ Такие фирмы как Krones, KHS свой код на STL даже в 1500е перетащили. Им видимо так удобнее.
Объясните для чего нужен вообще этот сдвиг,что он даёт
В данном случае это просто решение абстрактной задачи самым изуверским способом, чтобы просто продемонстрировать возможности STL :)
А по факту подобными сдвигами иногда создают стеки (виртуальный конвейер) для отслеживания состояния продукции в станках, где вся работа завязана на такты и нет возможности контролировать наличие продукта датчиками. Ставится один датчик на входе, который по такту машины фиксирует наличие продукта в бит 0 и далее этот бит двигается каждый такт в лево. На остальных участках, где требуется выполнить манипуляции с продуктом его наличие проверяется по наличию 1 в том или ином бите. Надеюсь получилось объяснить.
@@ClickClackLogic ну про случай в примере я так и понял)))).
Про пример с станками наверное надо самому попробовать посдвигать,т .к ни разу сам не пользовался этими сдвигами и нету представления как они точно работают.
Возможно тогда картинка сложится более четко
Я подобные «виртуальные конвейеры» на блоках розлива, термоупаковочных машинах и машинах для выдува ПЭТ бутылок впервые встретил.
Здравствуйте. Объясните пожалуйста, про добавленный таймер Т1 в FC1 не понял как именно мы его настроили?
Добрый день. Перед вызовом команды "SD T1" мы загружаем в память контроллера время "L S5T#1S". Команда запуска таймера при запуске использует содержимое аккумулятора 1 в качестве уставки времени. Таким образом таймер T1 запускается с параметром в 1 секунду.
@@ClickClackLogic спасибо
Почему у вас на видео, на слайде младший байт аккумулятора это байт 0 а не 1?
Добрый день.
ACCU1 устроен следующим образом:
ACCU1-H-H ACCU1-H-L ACCU1-L-H ACCU1-L-L
Поэтому когда мы говорим о расположении информации в аккумуляторе, то мы оперируем этой структурой.
При выполнении команды
L MB10 - Содержимое MB10 попадет в ACCU1-L-L
При выполнении команды
L MW10 - Данные распределяться так, MB10 в ACCU1-L-H, а MB11 в ACCU1-L-L
www.siemens-pro.ru/docs/simatic/s7-300/STEP7.V53_STL_r.pdf
Стр. 128
И опять же на 15.12 выговорите про младший байт аккумулятора а в комментариях возле строки кода пишите старший байт.
Мы действительно сохраняем младший байт аккумулятора, в котором содержится старший байт загруженного в него слова.