может ли плк, являясь мастером модбаса, делать групповое чтение/запись регистров? если да, то подскажите как это настроить. чтение/запись строки - не годится.
Вид для печати
может ли плк, являясь мастером модбаса, делать групповое чтение/запись регистров? если да, то подскажите как это настроить. чтение/запись строки - не годится.
это почему не годится? это и есть групповое чтение/запись
Насколько я понял, он работает только со строками.
Например, через 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 ?
Каким образом это делается?
Если взять указатель на строку (POINTER TO BYTE) и работать побайтно - можете записать любые значения. Единственно они не будут корректно отображаться в CoDeSys.
К сожалению, в конфигурации нельзя использовать массивы.
да, действительно так всё работает. спасибо.
И ещё вопрос в догонку:
Например, имеем ПЛК и МВУ. ПЛК, используя String output module записывает в МВУ значение выходов. Все восемь выходов сразу в одной посылке. В проекте ПЛК идёт расчёт значений для выходов и запись их через указатели в строку для String output module.
Проект в ПЛК и Modbus-мастер - задачи асинхронные. Значит возможна ситуация, когда в посылке будет часть значений последнего цикла и часть из предпоследнего.
Как сделать так, чтобы пока проект не заполнит всю строку новыми значениями, она не отсылалась в МВУ?
Как засинхронизировать модбас-мастер и проект в ПЛК, чтобы в посылке к МВУ содержались только последние расчёты?
Можно ли из проекта управлять работой модбас-мастера? Если да, то как?