Segnetics

Вернуться   Segnetics > Форум Segnetics > SMLogix

SMLogix Вопросы о работе в среде SMLogix и о FBD-программировании

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2021, 19:08   #1
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛК SMH4)

Здравствуйте!

Столкнулся с проблемой подсчета моточасов и пусков и записью их в энергонезависимую память. При перезагрузке ПЛК счетчик самопроизвольно увеличивается на единицу, хотя разрешающего сигнала на входе нет. Пробовал через блок EEPROM. Подскажите как решить эту проблему? ПО приложил. В ПО сам подсчет без записи в EEPROM, не дает загрузить программу всю. Может быть кто подскажет как правильно это делается?

Последний раз редактировалось Arsie, 10.06.2021 в 16:13 Причина: Удалил вложения за ненужностью
PKO вне форума   Ответить с цитированием
Старый 09.06.2021, 19:14   #2
Ilya J.
Сотрудник Сегнетикс
 
Аватара для Ilya J.
 
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 331
Благодарил(а): 0 раз(а)
Поблагодарили: 255 раз(а) в 251 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

А можете на картинке в конкретном месте показать, что вы ожидали увидеть и что увидели?


__________________
Если ничто другое не помогает, прочтите, наконец, инструкцию
Ilya J. вне форума   Ответить с цитированием
Старый 10.06.2021, 11:23   #3
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Вот на картинке то, как это реализована в программе. И в этом варианте он при перезагрузке питания произвольно увеличивает на единицу счетчик. Может кто готов поделить готовым решением по подсчету?
Изображения
Тип файла: png EEPROM.png (20.0 Кбайт, 109 просмотров)
PKO вне форума   Ответить с цитированием
Старый 10.06.2021, 11:25   #4
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Цитата:
Сообщение от PKO Посмотреть сообщение
Вот на картинке то, как это реализована в программе. И в этом варианте он при перезагрузке питания произвольно увеличивает на единицу счетчик. Может кто готов поделить готовым решением по подсчету?
У вас ф1 активным становится при включении контроллера. Тут любое готовое решение будет неправильно работать.

Блоки используйте лучше Array().


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 10.06.2021, 11:36   #5
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

То есть при инициализации контроллера, он присваивает переменной true всегда, даже если по условиям программы она false? Или этого можно как то избежать? Блок ARRAY разве позволяет сохранять в энергонезависимой памяти ПЛК?


Добавлено через 4 минуты


Или я что-то кардинально не так делают? И для сохранения данных, надо реализовать как то по другому?
PKO вне форума   Ответить с цитированием
Старый 10.06.2021, 11:44   #6
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Вот как реализован у меня передний фронт включения записи блока EEPROM.
Изображения
Тип файла: png Ф1.png (5.9 Кбайт, 69 просмотров)
PKO вне форума   Ответить с цитированием
Старый 10.06.2021, 11:51   #7
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Цитата:
Сообщение от PKO Посмотреть сообщение
То есть при инициализации контроллера, он присваивает переменной true всегда, даже если по условиям программы она false?
Нет, это вы накосячили где-то в программе. По картинкам я не гадаю, поэтому жду от вас проект с указанием, куда смотреть.



Цитата:
Сообщение от PKO Посмотреть сообщение
Или этого можно как то избежать? Блок ARRAY разве позволяет сохранять в энергонезависимой памяти ПЛК?
Обратитесь к справке, пожалуйста.


Добавлено через 57 секунд


Цитата:
Сообщение от PKO Посмотреть сообщение
Вот как реализован у меня передний фронт включения записи блока EEPROM.
Объясните пожалуйста ваше представление, как это должно работать. Желательно после объяснения прочтите справку на использованные блоки (включая блок EEPROM()) и напишите объяснение повторно, возможно вы увидите ошибку самостоятельно.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 10.06.2021, 11:57   #8
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Я предполагал что при изменении значения моточасов, одно значение будет сразу поступать на блок сравнения, а второе с некоторой задержкой. После сравнивания двух значений блок будет выдавать true, а дальше триггер переднего фронта. Скорее всего при инициализации, он сравнивает два значения и выдает true (так как они одинаковые), тут то и происходит изменение на 1.


Добавлено через 2 минуты


Я бы отправил, да ограничение по объему файла мешает. Подскажите пожалуйста, а как сделать тогда запись по изменению числа, контроллер для меня новый, первый мой проект на нем.
PKO вне форума   Ответить с цитированием
Старый 10.06.2021, 12:09   #9
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Цитата:
Сообщение от PKO Посмотреть сообщение
Я предполагал что при изменении значения моточасов, одно значение будет сразу поступать на блок сравнения, а второе с некоторой задержкой. После сравнивания двух значений блок будет выдавать true, а дальше триггер переднего фронта. Скорее всего при инициализации, он сравнивает два значения и выдает true (так как они одинаковые), тут то и происходит изменение на 1.
А теперь по результату прочтения справки. Чтоы не терять время, прочтите только справку по работе с памятью и справку на SPDelay - этого достаточно.



Цитата:
Сообщение от PKO Посмотреть сообщение
Я бы отправил, да ограничение по объему файла мешает. Подскажите пожалуйста, а как сделать тогда запись по изменению числа, контроллер для меня новый, первый мой проект на нем.
Научить вас пользоваться архиваторами?



Цитата:
Сообщение от PKO Посмотреть сообщение
Подскажите пожалуйста, а как сделать тогда запись по изменению числа, контроллер для меня новый, первый мой проект на нем.
Я этим и занимаюсь. Пытаюсь вас научить. В любом деле сначала придумывают алгоритм,. а придумывают его не "от балды", а по результату исследования. В данном случае вы пропустили исследование справки и пропустили исследование нашей библиотеки макросов. Вы начните, а я вас буду поправлять и направлять в нужную сторону.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 10.06.2021, 12:26   #10
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Совсем забыл про архиватор
Что удалось извлечь из справки.
Инициализация
При старте программы после включения питания или окончания загрузки все блоки сохранения проходят инициализацию.
· Блок EEPROM() читает последнее записанное значение
· Блок ARRAY() с единичной длиной также читает читает последнее записанное значение
То есть тут они идентичны. хотя что значит с единичной длиной (чего?) не совсем понятно.
Ожидание
После фазы инициализации блоки сохранения находятся в состоянии ожидании команды за запись или чтение.
Тут блоки из описания ARRAY и EEPROM тоже идентичны.
Запись
Операция записи нового значения начинается после получения фронта на входе start_wr.
Очевидно что на этом этапе происходит косяк, поскольку он получает передний фронт. Тут блоки из описания ARRAY и EEPROM тоже идентичны.
Описание EEPROM
Блок организует в памяти стек по принципу FIFO ("первый вошел, первый вышел").
Запись возможна только в ячейку с адресом 0. При записи все ранее записанные значения сдвигаются на одну ячейку как показано на рисунке. Значение, которое было записано раньше всех (ячейка N) теряется. Данный блок сделан для облегчения реализации журнала событий.
На входе deep устанавливается количество записей, которые могут быть сохранены в этом блоке:
· Если deep = 1, то записанное число сразу же передается на выход блока
Я считал, до сего моента, что этот блок в целом подходит для меня, поскольку параметр deep я настроил на 1, и он сразу выдает переменную на выход

]В описании блока ARRAY непонятен для меня два момент:
wr_addr - адрес элемента, в который будет осуществлена запись
rd_addr - адрес элемента, из которого будет осуществлена чтение
1.)Могу ли я не трогать их адреса и оставить их по умолчанию (например просто 0 или 1)?
2.) Могут ли срабатывать по одному триггеру start_wr и start_rd блока ARRAY. Будет ли в этом случае значение попадать на выход или нужна временная задержка на start_rd?
PKO вне форума   Ответить с цитированием
Старый 10.06.2021, 12:27   #11
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

ВОт ПО

Последний раз редактировалось Arsie, 10.06.2021 в 16:13 Причина: Удалил вложения за ненужностью
PKO вне форума   Ответить с цитированием
Старый 10.06.2021, 12:52   #12
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Цитата:
Сообщение от PKO Посмотреть сообщение
При старте программы после включения питания или окончания загрузки все блоки сохранения проходят инициализацию.
· Блок EEPROM() читает последнее записанное значение
· Блок ARRAY() с единичной длиной также читает читает последнее записанное значение
То есть тут они идентичны. хотя что значит с единичной длиной (чего?) не совсем понятно.
Слово ARRAY, если загнать его в переводчик, переводится как "МАССИВ".



Цитата:
Сообщение от PKO Посмотреть сообщение
Операция записи нового значения начинается после получения фронта на входе start_wr.
Очевидно что на этом этапе происходит косяк, поскольку он получает передний фронт. Тут блоки из описания ARRAY и EEPROM тоже идентичны.
Всё верно. А откуда у вас приходит фронт?




Цитата:
Сообщение от PKO Посмотреть сообщение
Если deep = 1, то записанное число сразу же передается на выход блока
Я считал, до сего моента, что этот блок в целом подходит для меня, поскольку параметр deep я настроил на 1, и он сразу выдает переменную на выход
По формальным признакам да, подходит. И работает идентично ARRAY() с единичной длиной. Но более корректно использовать именно ARRAY().



Цитата:
Сообщение от PKO Посмотреть сообщение
]В описании блока ARRAY непонятен для меня два момент:
wr_addr - адрес элемента, в который будет осуществлена запись
rd_addr - адрес элемента, из которого будет осуществлена чтение
1.)Могу ли я не трогать их адреса и оставить их по умолчанию (например просто 0 или 1)?
2.) Могут ли срабатывать по одному триггеру start_wr и start_rd блока ARRAY. Будет ли в этом случае значение попадать на выход или нужна временная задержка на start_rd?
Зачем это вам в контексте вашей задачи?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 10.06.2021, 13:33   #13
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Вторая фотография в треде, переменная ф1, является передним фронтов для записи.
Я хочу понять как мне правильно использовать блок ARRAY, поскольку мне же надо выводить данные на панель, вот я и хотел уточнить. Если я одновременно подам на wr_addr и на rd_addr передний фронт, произойдет запись числа поданного на вход в ячейку паями, а на выходе появится число которое лежало до этого в ячейке памяти (до момента записи) или уже обновленное, которое записалось командой wr_addr


Добавлено через 1 минуту


Можете в программе посмотреть, внизу программы, если захотите.
PKO вне форума   Ответить с цитированием
Старый 10.06.2021, 14:00   #14
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Цитата:
Сообщение от PKO Посмотреть сообщение
Вторая фотография в треде, переменная ф1,
А откуда берётся она?



Цитата:
Сообщение от PKO Посмотреть сообщение
является передним фронтов для записи.
Не бывает задних фронтов, это называется спадом. Фронт/спад. А не перед/зад. Оставьте заднеприводность нашим европейским коллегам - там это модно


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 10.06.2021, 14:42   #15
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Цитата:
Сообщение от Arsie Посмотреть сообщение
А откуда берётся она?

Из сравнения двух одинаковых величин. Вторая переменная подключается к блоку сравнения с выдержкой времени, для создания фронта, при изменении числа.
PKO вне форума   Ответить с цитированием
Старый 10.06.2021, 14:49   #16
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Цитата:
Сообщение от PKO Посмотреть сообщение
Цитата:
Сообщение от Arsie Посмотреть сообщение
А откуда берётся она?

Из сравнения двух одинаковых величин. Вторая переменная подключается к блоку сравнения с выдержкой времени, для создания фронта, при изменении числа.
Поговорим о блоке сравнения.

Откуда берётся верхнее число и чему оно равно в момент старта программы?

Откуда берётся нижнее число и чему оно равно в момент старта программы?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Ilya J., 10.06.2021 в 15:23
Arsie вне форума   Ответить с цитированием
Старый 10.06.2021, 15:35   #17
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Я же говорю, тут я разобрался. В момент старта программы оба числа одинаковые, соответственно при сравнении блок выдает true.
PKO вне форума   Ответить с цитированием
Старый 10.06.2021, 15:39   #18
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Цитата:
Сообщение от PKO Посмотреть сообщение
Я же говорю, тут я разобрался. В момент старта программы оба числа одинаковые, соответственно при сравнении блок выдает true.
А разобрались, почему числа одинаковые?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 10.06.2021, 16:05   #19
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Да, потому что я изначально зачем-то усложнил себе жизнь. Я таким образов хотел сделать срабатывание блока сравнения для формирования фронта. Оба значения одинаковые, но при его изменении, второе поменяется с выдержкой времени (специально поставил), соответственно блок сравнения сначала выключиться а потом включиться, так я получал фронт.

По прежнему не смог разобраться с этим вопросом:
Я хочу понять как мне правильно использовать блок ARRAY, поскольку мне же надо выводить данные на панель, вот я и хотел уточнить. Если я одновременно подам на wr_addr и на rd_addr передний фронт, произойдет запись числа поданного на вход в ячейку памяти, а на выходе появится число которое лежало до этого в ячейке памяти (до момента записи) или уже обновленное, которое записалось командой wr_addr?
PKO вне форума   Ответить с цитированием
Старый 10.06.2021, 16:12   #20
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Цитата:
Сообщение от PKO Посмотреть сообщение
Если я одновременно подам на wr_addr и на rd_addr передний фронт
Зачем? В описании блока разве не сказано, что "rd" - это лишняя операция в вашем случае?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 10.06.2021, 16:26   #21
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Прошу прощения не то скопировал, я имел ввиду start_rd.

Еще появился вопрос по карте памяти регистров ModBus. В приложенном файле мы видим название банка Input Register, возможно ли изменить адресацию банка на Holding Register в новой карте, или программа автоматически выбирают в какую область памяти записывать? В старой карте можно поменять дислокацию переменной на другой банк памяти с помощью адреса или программа автоматически выбирает банк памяти? мне нужно чтобы был доступ 3,16, 23 функцией модбас, чтение, запись, чтение/запись регистров хранения.
Изображения
Тип файла: png карта памяти.png (40.6 Кбайт, 11 просмотров)
PKO вне форума   Ответить с цитированием
Старый 10.06.2021, 16:40   #22
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Цитата:
Сообщение от PKO Посмотреть сообщение
Прошу прощения не то скопировал, я имел ввиду start_rd.

Еще появился вопрос по карте памяти регистров ModBus. В приложенном файле мы видим название банка Input Register, возможно ли изменить адресацию банка на Holding Register в новой карте, или программа автоматически выбирают в какую область памяти записывать? В старой карте можно поменять дислокацию переменной на другой банк памяти с помощью адреса или программа автоматически выбирает банк памяти? мне нужно чтобы был доступ 3,16, 23 функцией модбас, чтение, запись, чтение/запись регистров хранения.
https://dl.segnetics.com/WebHelp/SML...h_invertor.htm

Шаг 6, врезка.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 10.06.2021, 17:12   #23
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

То есть чтобы реализовать 23 функцию модбас придется поизвращаться?
PKO вне форума   Ответить с цитированием
Старый 10.06.2021, 17:17   #24
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Подскажите пожалуйста по настройкам портов и связи. Сейчас у меня настроены порты COM1 и COM2 как слейв. то есть чисто теоретически вбив нужный адрес плк, скорость, четность и использовав 4 функцию модбас я должен без проблем прочитать карту регистров?
Изображения
Тип файла: png настройки плк.png (9.9 Кбайт, 4 просмотров)
PKO вне форума   Ответить с цитированием
Старый 10.06.2021, 17:17   #25
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Цитата:
Сообщение от PKO Посмотреть сообщение
То есть чтобы реализовать 23 функцию модбас придется поизвращаться?
23? Только через написание собственного драйвера.


Добавлено через 3 минуты


Цитата:
Сообщение от PKO Посмотреть сообщение
Подскажите пожалуйста по настройкам портов и связи. Сейчас у меня настроены порты COM1 и COM2 как слейв. то есть чисто теоретически вбив нужный адрес плк, скорость, четность и использовав 4 функцию модбас я должен без проблем прочитать карту регистров?
Сами регистры, а не их карту)


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 10.06.2021, 17:28   #26
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Можно ли как-то еще организовать запись в энергонезависимую память переменной типа bool, помимо array или eeprom. Суть в чем, мне надо чтобы он запоминал выбранный режим, при сбросе питания, или только через вышеуказанные блоки?
PKO вне форума   Ответить с цитированием
Старый 10.06.2021, 17:33   #27
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Цитата:
Сообщение от PKO Посмотреть сообщение
Можно ли как-то еще организовать запись в энергонезависимую память переменной типа bool, помимо array или eeprom. Суть в чем, мне надо чтобы он запоминал выбранный режим, при сбросе питания, или только через вышеуказанные блоки?
Блоки array() предназначены для сохранения произвольной информации. EEPROM() - ведения журналов.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 10.06.2021, 17:35   #28
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Есть еще проблема. Если управление идёт со скады, то в программе же нужно будет обнулять слово управления, как это сделать, если переменная может быть только вход или выход?
PKO вне форума   Ответить с цитированием
Старый 10.06.2021, 17:37   #29
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

Цитата:
Сообщение от PKO Посмотреть сообщение
Есть еще проблема. Если управление идёт со скады, то в программе же нужно будет обнулять слово управления, как это сделать, если переменная может быть только вход или выход?
Вы сказали какой-то набор слов, мало что значащий для меня. "Как можно использовать энергию солнца, если оно светит только в одну сторону" - примерно так я вижу ваш вопрос.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 10.06.2021, 17:45   #30
PKO
Новичок
 
Регистрация: Jun 2021
Сообщения: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как сделать чтобы при перезагрузке ПЛК счетчик не увеличивался (ПО SMLogix, ПЛ

У меня есть переменная типа int. Первый бит этого слова включает насос. С внешней системы пришла запись первого бита, переменная стала равна 2 (физически переменная типа int стала равняться 2), далее мне надо обнулить эту переменную, так как переменная же сохранила свое состояние, она самопроизвольно ее не поменяла. Как это можно реализовать?
PKO вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 23:15.


Версия vBulletin: 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2024