Просмотр полной версии : ПЛК73 МB мастер
Здравствуйте!
На ПЛК 73 хочу прикрутить слейв устройство на 2й RS485
Темы смежные почитал, доки покурил.
Столкнулся со следующим вопросом:
Мне нужно посылать на прибор 6 переменных типа UINT по 6ти разным адресам резистров,
а так же читать из прибора 9 переменных типа UINT по 9ти разным адресам резистров.
Если бы мне нужно было только читать или писать в прибор, то примеров и информации вроде бы достаточно,
но как организовать последовательность Send/recive правильно?
Если у меня на запись и чтение будет организовано два PRG send_PRG и recive_PRG, то это допустимо?
функции чтения записи же не одновременно работают, как организовать последовательность чтения и записи в прибор, чтобы не было ошибок и конфликтов?
PS не хочу грузить PLC_PRG межсетевым обменом и писать туда портянку с текстом
kondor3000
13.03.2024, 12:55
Здравствуйте!
На ПЛК 73 хочу прикрутить слейв устройство на 2й RS485
Темы смежные почитал, доки покурил.
Столкнулся со следующим вопросом:
Мне нужно посылать на прибор 6 переменных типа UINT по 6ти разным адресам резистров,
а так же читать из прибора 9 переменных типа UINT по 9ти разным адресам резистров.
Если бы мне нужно было только читать или писать в прибор, то примеров и информации вроде бы достаточно,
но как организовать последовательность Send/recive правильно?
Если у меня на запись и чтение будет организовано два PRG send_PRG и recive_PRG, то это допустимо?
функции чтения записи же не одновременно работают, как организовать последовательность чтения и записи в прибор, чтобы не было ошибок и конфликтов?
PS не хочу грузить PLC_PRG межсетевым обменом и писать туда портянку с текстом
В примерах есть использование автомата состояний CASE, для чтения и записи, делаете например сначала открытие порта, потом чтение 1 -2 шага, потом запись 1-2 шага. Достаточно одной программы или ФБ.
Сделать можно и в одной программе или ФБ, а можно и в 2 программах или ФБ, но это лишнее уже.
В примерах есть использование автомата состояний CASE, для чтения и записи, делаете например сначала открытие порта, потом чтение 1 -2 шага, потом запись 1-2 шага. Достаточно одной программы или ФБ.
Сделать можно и в одной программе или ФБ, а можно и в 2 программах или ФБ, но это лишнее уже.
Спасибо, стало понятнее.
Но хотелось бы небольшое уточнение на примере записи\чтения 2х переменных (val_1 и Val_2) типа int
То есть я могу действовать так:
1. Устанавливаю настройки com порта
2. Открываю соm порт
3. Проверяю открытие
4. Далее с помощью функции MB_WR_SNG_REG
CASE 1 записываю val_1
5. Жду завершения и перехожу к CASE 2
6. С помощью функции MB_RD_HOLD_REGS
считываю val_1
7. Жду завершения и перехожу к CASE 3
8. CASE 1 с помощью функции MB_WR_SNG_REG записываю val_2
9. Жду завершения и перехожу к CASE 4
10. С помощью функции MB_RD_HOLD_REGS
считываю val_2
11. Жду завершения и возвращаюсь к СASE 1
Так примерно, да?
А обязательно ли делать обработку ошибок?
А если произойдет обрыв связи, например у мастер или слейв случится ресет по питанию,
возобновится ли обмен или нужно что то еще руками писать?
А в примерах запись переменной напрямую, а чтение через буфер, это зачем?
kondor3000
13.03.2024, 14:53
Спасибо, стало понятнее.
Но хотелось бы небольшое уточнение на примере записи\чтения 2х переменных (val_1 и Val_2) типа int
То есть я могу действовать так:
А если произойдет обрыв связи, например у мастер или слейв случится ресет по питанию,
возобновится ли обмен или нужно что то еще руками писать?
А в примерах запись переменной напрямую, а чтение через буфер, это зачем?
Примерно так, вам ничего не надо выдумывать, копируете что надо из чтения, далее из записи, расставляете шаги и в конце проверка.
Через буфер удобнее делать, если вам надо читать, записывать по несколько переменных с адресами подряд,
например начальный адрес 0, длина 10 регистров, и в буфере получаете 10 регистров подряд, с 0 по 9 адрес
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot