Страница 1 из 2

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 01 июн 2019, 21:06
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, а потом передается в панель?

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

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

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

Добавлено: 01 июн 2019, 22:13
mr_Frodo
Если сделано на косвенной адресации, то пока не перелопатите все программу ничего не найдёте.

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

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

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

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

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

Добавлено: 02 июн 2019, 09:09
phantom
В Hardware энкодеры имеют номера DP-NORM 70, 72, 73 их 3 шт.

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

Добавлено: 02 июн 2019, 12:16
POV
Энкодеры 72 и 73, адреса PIW320 и PIW324, читаются функцией FC25, цепочка 4, вызывается она из FB411, цепочки 1 и 2.

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

Добавлено: 02 июн 2019, 12:19
POV
Возможно энкодер 70 читался бы FC24, цепочка 2, запись цепочка 6, но FC24 вроде не вызывается и адреса проверить не получилось.

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

Добавлено: 02 июн 2019, 19:18
phantom
спасибо, да скорее всего 70 энкодер не использовался т.к он крутится не от привода, а от поступления сырья под давлением. "Цепочка" - вы имеете ввиду Нетворк?

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

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

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

Добавлено: 03 июн 2019, 11:23
phantom
переслал в сообщения

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

Добавлено: 03 июн 2019, 13:42
mr_Frodo
Узел 70 считывается в FB110 - NW8

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

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

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

Добавлено: 03 июн 2019, 17:43
phantom
Интересно FB411 работает на косвенной адресации, а в OB1 вызывается CALL, а не UC или CC :dontknow:

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

Добавлено: 03 июн 2019, 18:38
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.