Увеличение количества входов

masterkuka
Posts: 12
Joined: Thu Apr 04, 2019 5:15 pm

Re: Увеличение количества входов

Post by masterkuka »

Хорошо,
У меня достаточно входов
,только кабель протянуть,
Я сделаю это и избавлюсь от одного модуля Modbus

недостаточно выходoф
поэтому я оставлю Modbus на 32 выхода.

с записью все ясно, Могу зажечь любой выход 1-32.

хочу узнать текущее состояние выхода
вопрос о команде 60039
Нигде не найду примера

мне нужно отправить команду 20 01 00 00 00 20 crc16
получить ответ: 20 01 04 1c 2c 3c 4c crc16
1c=1-8
2c=9-16
3c=17-24
4c=25-32

где записываются ответы 1c 2c 3c 4c ?,
здесь ? 60060 ,60061,60062,60063 ?

masterkuka
Posts: 12
Joined: Thu Apr 04, 2019 5:15 pm

Re: Увеличение количества входов

Post by masterkuka »

Здравствуйте,
очень жду ответа на этот вопрос:

вопрос о команде 60039
Нигде не найду примера

мне нужно отправить команду 20 01 00 00 00 20 crc16
получить ответ: 20 01 04 1c 2c 3c 4c crc16
1c=1-8
2c=9-16
3c=17-24
4c=25-32

где записываются ответы 1c 2c 3c 4c ?,
здесь ? 60060 ,60061,60062,60063 ?

mycnc
Posts: 1027
Joined: Thu May 10, 2018 2:42 pm
Location: Ottawa, Canada
Contact:

Re: Увеличение количества входов

Post by mycnc »

masterkuka wrote:
Wed Jan 13, 2021 6:59 am
вопрос о команде 60039
Нигде не найду примера
Пример использования 60039 есть в документации-

http://docs.pv-automation.com/plc/plc_m ... ?s[]=60039

Судя по примеру, надо записать в 60020 адрес регистра, который мы хотим прочитать.
Затем, чтение 60039 инициирует команду Modbus чтения устройства, ожидание ответа и возврат ответа в качестве результата операции.

Code: Select all

  read_address=0;
  gvarset(60020,read_address); //read register address
  in=gvarget(60039); //read multiple coils
Надо иметь ввиду, что эта операция будет выполняться дольше, чем обычно, так как на команде чтения 60039
PLC засыпает до момента получения ответа из Modbus.

masterkuka
Posts: 12
Joined: Thu Apr 04, 2019 5:15 pm

Re: Увеличение количества входов

Post by masterkuka »

Я наверное потерялся в логике чтения.
на мой взгляд инструкция неполная, нигде не написано,
что gvarget (60039) будет работать с командой 02 (0x02) (Read Input Status)

в таблице записано следующее:
60039 Read multiple coils. This will request the address of the first coil to read and the number of coils to read. The Modbus device will respond with the number of bytes to follow and the coil input values 1

в таблице нету Function code 2 ???
при использовании gvarget (60039) на выход получаем 20 02 ....

а мне нужно 01, я хочу читать из модуля DOUT (Read Coil Status)
Устройство Modbus отсутствует в вашем списке, я стремлюсь понять команды, а затем адаптироваться к этому конкретному модулю .

как я уже писал, мне нужно послать именно такую ​​команду: 20 01 00 00 00 20 3B 63
только с этим можно узнать состояние DOUT.

gvarset(60039,0x1234)
на выход : 20 01 12 34 00 00 7E 0D
каким методом можно заменить 00 00 -> 00 20
это только половина проблемы.

ответ, который придет каким методом поместит 4 байта в переменные, тогда математически все будет ясно, какой выход активен.


надеюсь на помощь, всего наилучшего.

mycnc
Posts: 1027
Joined: Thu May 10, 2018 2:42 pm
Location: Ottawa, Canada
Contact:

Re: Увеличение количества входов

Post by mycnc »

Команда чтение состояния выходов не реализована в нашем протоколе.
Предполагается, что устройство с выходами работает повторителем, управляется только от контроллера (софта), запись портов идет периодически и нет необходимости читать это состояние.

Кроме того, команды работают с 16 битными регистрами. Если вам надо записать-прочитать 4 байта, то сейчас это можно сделать за 2 этапа.

Посмотрим насколько сложно добавить новые команды.

masterkuka
Posts: 12
Joined: Thu Apr 04, 2019 5:15 pm

Re: Увеличение количества входов

Post by masterkuka »

понял, Буду очень ждать решения проблемы.

mycnc
Posts: 1027
Joined: Thu May 10, 2018 2:42 pm
Location: Ottawa, Canada
Contact:

Re: Увеличение количества входов

Post by mycnc »

Я не увидел проблемы.
Мы реализовали те функции, которые были необходимы для решения текущих задач - расширение портов ввода-вывода, общение с частотными преобразователями и источниками плазменной резки.

Востребованность данных функций не высока, вычислительные ресурчы контроллера ограничены. У нас реализованы команды чтения-записи регистров. Я пока не уверен, имеет ли смысл расширять протокол дальше. Изучим этот вопрос.

Post Reply