PDA

Просмотр полной версии : ПЛК как modbus-master



Slev
08.10.2009, 09:22
может ли плк, являясь мастером модбаса, делать групповое чтение/запись регистров? если да, то подскажите как это настроить. чтение/запись строки - не годится.

Филоненко Владислав
08.10.2009, 10:01
это почему не годится? это и есть групповое чтение/запись

Slev
08.10.2009, 10:56
Насколько я понял, он работает только со строками.

Например, через String output module (AT Str_Out %QB9.8.1.0: STRING[79]) я хочу записать сразу два регистра.
Но Str_Out имеет тип строковый и подсунуть ему я могу только строку.

Str_Out := '1234';

Тогда в регистры попадёт 0х3132 и 0х3334

А если мне нужно в регистры записать 0х0012 и 0х0034 ?

Каким образом это делается?

Филоненко Владислав
08.10.2009, 13:59
Если взять указатель на строку (POINTER TO BYTE) и работать побайтно - можете записать любые значения. Единственно они не будут корректно отображаться в CoDeSys.
К сожалению, в конфигурации нельзя использовать массивы.

Slev
08.10.2009, 17:39
да, действительно так всё работает. спасибо.

Slev
13.10.2009, 20:51
И ещё вопрос в догонку:
Например, имеем ПЛК и МВУ. ПЛК, используя String output module записывает в МВУ значение выходов. Все восемь выходов сразу в одной посылке. В проекте ПЛК идёт расчёт значений для выходов и запись их через указатели в строку для String output module.

Проект в ПЛК и Modbus-мастер - задачи асинхронные. Значит возможна ситуация, когда в посылке будет часть значений последнего цикла и часть из предпоследнего.

Как сделать так, чтобы пока проект не заполнит всю строку новыми значениями, она не отсылалась в МВУ?

Как засинхронизировать модбас-мастер и проект в ПЛК, чтобы в посылке к МВУ содержались только последние расчёты?

Можно ли из проекта управлять работой модбас-мастера? Если да, то как?