Как передать значение из меркерного слова в перефирийное вхо

Инженерное программное обеспечение
phantom
Любитель
Сообщения: 71
Зарегистрирован: 02 дек 2017, 18:56

Как передать значение из меркерного слова в перефирийное вхо

Сообщение phantom »

Добрый день,
Как передать значение из меркерного слова(MW3) в перефирийное входное слово (PIW300), на симуляторе эмулирую энкодер. В HardWare у меня прописан энкодер с входами PIW300, PIW302, PIW304. Когда я пытаюсь с эмулятора напрямую передать в PIW300 в PLCSIM симулятор ругается, что адрес вне диапазона. Зато спокойно можно создать адреса IW80, QW80... и в PLCSim. Создал функцию, в MOVE, на входе (IN) задал IW80, на выходе OUT - MW3. Теперь у меня значение от энкодера хранятся в MW3 как передать в PIW300, чтобы запустить процесс остальных функций?

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

Re: Как передать значение из меркерного слова в перефирийное

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

Там где-то в Step7 задается размер периферийной области PIW, возможно он у вас по умолчанию - что-то типа 256, поэтому PIW300 дает ошибку.

POV
Специалист
Сообщения: 127
Зарегистрирован: 04 авг 2016, 16:28
Откуда: Нижний Новгород

Re: Как передать значение из меркерного слова в перефирийное

Сообщение POV »

PIW можно только читать, PQW только писать. IW и QW - писать, читать в свое удовольствие, это просто область памяти, видна на закладке в Module information. Ее размер задается в настройках ЦПУ и она обновляется ОС ЦПУ в основном цикле (если иное не задано в настройках). Если вы измените размер области I, Q на более 300, то сможете записать IW300, но записать PIW300 не получиться.

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

Re: Как передать значение из меркерного слова в перефирийное

Сообщение mr_Frodo »

phantom писал(а):Добрый день,
Как передать значение из меркерного слова(MW3) в перефирийное входное слово (PIW300), на симуляторе эмулирую энкодер. В HardWare у меня прописан энкодер с входами PIW300, PIW302, PIW304. Когда я пытаюсь с эмулятора напрямую передать в PIW300 в PLCSIM симулятор ругается, что адрес вне диапазона. Зато спокойно можно создать адреса IW80, QW80... и в PLCSim. Создал функцию, в MOVE, на входе (IN) задал IW80, на выходе OUT - MW3. Теперь у меня значение от энкодера хранятся в MW3 как передать в PIW300, чтобы запустить процесс остальных функций?
Я не понял: зачем такая принципиальность в СИМУЛЯТОРЕ использовать периферийный адрес?!? :wall: Если это будет любой другой, что от этого изменится? Проверить работу можно в любом варианте, а в реале использовать требуемый источник.
Вот моя подпись...

phantom
Любитель
Сообщения: 71
Зарегистрирован: 02 дек 2017, 18:56

Re: Как передать значение из меркерного слова в перефирийное

Сообщение phantom »

POV писал(а):PIW можно только читать, PQW только писать. IW и QW - писать, читать в свое удовольствие, это просто область памяти, видна на закладке в Module information. Ее размер задается в настройках ЦПУ и она обновляется ОС ЦПУ в основном цикле (если иное не задано в настройках). Если вы измените размер области I, Q на более 300, то сможете записать IW300, но записать PIW300 не получиться.
Спасибо за разъяснение.

phantom
Любитель
Сообщения: 71
Зарегистрирован: 02 дек 2017, 18:56

Re: Как передать значение из меркерного слова в перефирийное

Сообщение phantom »

mr_Frodo писал(а):
phantom писал(а):Добрый день,
Как передать значение из меркерного слова(MW3) в перефирийное входное слово (PIW300), на симуляторе эмулирую энкодер. В HardWare у меня прописан энкодер с входами PIW300, PIW302, PIW304. Когда я пытаюсь с эмулятора напрямую передать в PIW300 в PLCSIM симулятор ругается, что адрес вне диапазона. Зато спокойно можно создать адреса IW80, QW80... и в PLCSim. Создал функцию, в MOVE, на входе (IN) задал IW80, на выходе OUT - MW3. Теперь у меня значение от энкодера хранятся в MW3 как передать в PIW300, чтобы запустить процесс остальных функций?
Я не понял: зачем такая принципиальность в СИМУЛЯТОРЕ использовать периферийный адрес?!? :wall: Если это будет любой другой, что от этого изменится? Проверить работу можно в любом варианте, а в реале использовать требуемый источник.
Мне нужно найти инструкцию/функцию которая принимает значение PIW300, в программе я не нашел. Получается если её в программе нет, то могут эти значения записываться сразу в панельку HMI или сначала записывается DB, а потом передается в панель?

POV
Специалист
Сообщения: 127
Зарегистрирован: 04 авг 2016, 16:28
Откуда: Нижний Новгород

Re: Как передать значение из меркерного слова в перефирийное

Сообщение POV »

phantom писал(а):Мне нужно найти инструкцию/функцию которая принимает значение PIW300, в программе я не нашел. Получается если её в программе нет, то могут эти значения записываться сразу в панельку HMI или сначала записывается DB, а потом передается в панель?
Какой ПЛК? Панель? Связь между ними?
Плохо ищите. Может у вас банально включен фильтр на Piw Pqw области в кросс референсе.
Панель обычно читает. Конечно панель может и записать значение, но обычно так не бывает, если энкодер реально нужен в программе.

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

Re: Как передать значение из меркерного слова в перефирийное

Сообщение mr_Frodo »

Если сделано на косвенной адресации, то пока не перелопатите все программу ничего не найдёте.
Вот моя подпись...

phantom
Любитель
Сообщения: 71
Зарегистрирован: 02 дек 2017, 18:56

Re: Как передать значение из меркерного слова в перефирийное

Сообщение phantom »

POV писал(а):
phantom писал(а):Мне нужно найти инструкцию/функцию которая принимает значение PIW300, в программе я не нашел. Получается если её в программе нет, то могут эти значения записываться сразу в панельку HMI или сначала записывается DB, а потом передается в панель?
Какой ПЛК? Панель? Связь между ними?
Плохо ищите. Может у вас банально включен фильтр на Piw Pqw области в кросс референсе.
Панель обычно читает. Конечно панель может и записать значение, но обычно так не бывает, если энкодер реально нужен в программе.
Фильтра точно нет.

phantom
Любитель
Сообщения: 71
Зарегистрирован: 02 дек 2017, 18:56

Re: Как передать значение из меркерного слова в перефирийное

Сообщение phantom »

mr_Frodo писал(а):Если сделано на косвенной адресации, то пока не перелопатите все программу ничего не найдёте.
Помогите определить, скорее всего на косвенной адресации сделано, написано в STL.
Здесь проект https://cloud.mail.ru/public/k7NN/3VC9MhfwF

phantom
Любитель
Сообщения: 71
Зарегистрирован: 02 дек 2017, 18:56

Re: Как передать значение из меркерного слова в перефирийное

Сообщение phantom »

В Hardware энкодеры имеют номера DP-NORM 70, 72, 73 их 3 шт.

POV
Специалист
Сообщения: 127
Зарегистрирован: 04 авг 2016, 16:28
Откуда: Нижний Новгород

Re: Как передать значение из меркерного слова в перефирийное

Сообщение POV »

Энкодеры 72 и 73, адреса PIW320 и PIW324, читаются функцией FC25, цепочка 4, вызывается она из FB411, цепочки 1 и 2.

POV
Специалист
Сообщения: 127
Зарегистрирован: 04 авг 2016, 16:28
Откуда: Нижний Новгород

Re: Как передать значение из меркерного слова в перефирийное

Сообщение POV »

Возможно энкодер 70 читался бы FC24, цепочка 2, запись цепочка 6, но FC24 вроде не вызывается и адреса проверить не получилось.

phantom
Любитель
Сообщения: 71
Зарегистрирован: 02 дек 2017, 18:56

Re: Как передать значение из меркерного слова в перефирийное

Сообщение phantom »

спасибо, да скорее всего 70 энкодер не использовался т.к он крутится не от привода, а от поступления сырья под давлением. "Цепочка" - вы имеете ввиду Нетворк?

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

Re: Как передать значение из меркерного слова в перефирийное

Сообщение mr_Frodo »

phantom писал(а):
mr_Frodo писал(а):Если сделано на косвенной адресации, то пока не перелопатите все программу ничего не найдёте.
Помогите определить, скорее всего на косвенной адресации сделано, написано в STL.
Здесь проект https://cloud.mail.ru/public/k7NN/3VC9MhfwF
Ошибка.
Вот моя подпись...

phantom
Любитель
Сообщения: 71
Зарегистрирован: 02 дек 2017, 18:56

Re: Как передать значение из меркерного слова в перефирийное

Сообщение phantom »

переслал в сообщения

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

Re: Как передать значение из меркерного слова в перефирийное

Сообщение mr_Frodo »

Узел 70 считывается в FB110 - NW8
Вот моя подпись...

phantom
Любитель
Сообщения: 71
Зарегистрирован: 02 дек 2017, 18:56

Re: Как передать значение из меркерного слова в перефирийное

Сообщение phantom »

mr_Frodo писал(а):Узел 70 считывается в FB110 - NW8
да, спасибо.
значит FC24 за другое отвечает.
POV писал(а):Возможно энкодер 70 читался бы FC24, цепочка 2, запись цепочка 6, но FC24 вроде не вызывается и адреса проверить не получилось.

phantom
Любитель
Сообщения: 71
Зарегистрирован: 02 дек 2017, 18:56

Re: Как передать значение из меркерного слова в перефирийное

Сообщение phantom »

Интересно FB411 работает на косвенной адресации, а в OB1 вызывается CALL, а не UC или CC :dontknow:

POV
Специалист
Сообщения: 127
Зарегистрирован: 04 авг 2016, 16:28
Откуда: Нижний Новгород

Re: Как передать значение из меркерного слова в перефирийное

Сообщение POV »

phantom писал(а):Интересно FB411 работает на косвенной адресации, а в OB1 вызывается CALL, а не UC или CC :dontknow:
А при чем тут?

Цитата из хелпа:
If the CALL instruction calls a function block (FB) or a system function block (SFB), an instance data block (DB no.) must be specified in the statement. The use of a variable of the type "BlockFB" or "BlockFC" in conjunction with the CC instruction is not permitted. Since you cannot assign a data block to the call with the CC instruction in the address of the statement, you can only use this instruction fro blocks without block parameters and static local data.Depending on the network you are working with, the Program Editor either generates the UC instruction or the CC instruction during conversion from the Ladder Logic programming language to the Statement List programming language. You should attempt to use the CALL instruction instead to avoid errors occurring in your programs.

Ответить