|
Вопросы о программировании Вопросы, касающиеся программирования на FBD |
|
Опции темы | Поиск в этой теме |
28.04.2021, 08:27 | #1 |
Новичок
Регистрация: Apr 2021
Сообщения: 2
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Предотвращение сброса переменных в ноль Modbus (нет проблемы)
Здравствуйте, столкнулся с проблемой, что при включении панели Trim 5 в переменные Modbus с типом R/W записывается 0. Обычно использовал скриптовые языки, поэтому в FBD не особо силен. Пример, исходя из начального значения в регистре по кнопкам увеличивать или уменьшать его же значение. При перезапуске панели записывается 0 в регистр...
Screenshot_1.png |
28.04.2021, 09:09 | #2 | |
Senior Member
Регистрация: Dec 2018
Адрес: Tomsk
Сообщения: 431
Благодарил(а): 10 раз(а)
Поблагодарили:
4 раз(а) в 4 сообщениях
|
Ответ: Предотвращение сброса переменных в ноль Modbus
Цитата:
Последний раз редактировалось RomanIst, 28.04.2021 в 09:38 |
|
Благодарность от: |
28.04.2021, 09:30 | #3 |
Senior Member
Регистрация: May 2010
Адрес: Москва
Сообщения: 863
Благодарил(а): 4 раз(а)
Поблагодарили:
86 раз(а) в 67 сообщениях
|
Ответ: Предотвращение сброса переменных в ноль Modbus
Во-первых, вы используете блок записи с цикличным опросом.
В карте памяти слейва для этого блока указан период отличный от 0 (по умолчанию стоит 100 мсек). Таким образом, периодически туда идет запрос на запись значения, которое у вас на выходе блока ADD. Вам лучше бы использовать блок записи с нецикличным опросом (поставить период опроса = 0). Тогда на этом блоке появится дополнительный вход для отправки запроса. Во-вторых, вы берете текущее значение параметра с выхода этого же блока. Однако, какое либо значение отличное от 0 там появляется только после записи по этому адресу нового значения (с последующим чтением, которое производится автоматически). То есть, при запуске контроллера значение на этом выходе = 0. Оно приходит на блок ADD, на котором ещё два входа = 0. Сумма на выходе = 0. А так как производится циклический запрос на запись, то через установленное в карте памяти время в регистр запишется 0. Если вы хотите организовать такой функционал, то для этого Holding регистра в карте памяти заведите 2 переменных: - с направлением R (out) и цикличным опросом (период >0) - так вы будете постоянно получать текущее значение регистра; - с направлением R/W (out) и нецикличным опросом (период = 0) - для записи нового значения, но уже по необходимости. Также рекомендую после кнопок ставить блоки Rise, чтобы изменения уставок происходило по событию "нажатие", но не срабатывало при дальнейшем удержании. |
Благодарность от: |
28.04.2021, 11:19 | #4 | |
Сотрудник Сегнетикс
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 341
Благодарил(а): 0 раз(а)
Поблагодарили:
255 раз(а) в 251 сообщениях
|
Ответ: Предотвращение сброса переменных в ноль Modbus
Цитата:
__________________ Если ничто другое не помогает, прочтите, наконец, инструкцию |
|
28.04.2021, 11:42 | #5 |
Новичок
Регистрация: Apr 2021
Сообщения: 2
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Предотвращение сброса переменных в ноль Modbus
|