а вот определение в программе...Первая же команда PRU_FB_GetParameter(pru_num:=0, index:=28, value:=ADR(TMP)) уводит ПЛК в перезагрузку.
PRU_FB_GetParameter(pru_num:=0, index:=29, value:=ADR(QUANTITY_LEFT));
#define in_reg R29
#define out_reg R28
Вы пытаетесь писать в регистр для чтения... а регистр можно использовать для обмена либо в одну, либо в другую сторону...
кстати, за один проход цикла PRU считывается и записывается по одному регистру, надеюсь в вашем модуле данные поступят в блок синхронизированным пакетом?