PDA

Просмотр полной версии : СП315Р и PFW



KIB52
03.05.2023, 16:52
Добрый день. Подскажите каким образом считывать и записывать значения в PFW регистры при написании макроса? В руководстве указано, что через использование функций Read и Write, но примеров нет.

petera
03.05.2023, 17:50
Добрый день. Подскажите каким образом считывать и записывать значения в PFW регистры при написании макроса? В руководстве указано, что через использование функций Read и Write, но примеров нет.

Набирай по смволам
Read(
после ввода скобки откроется окно мастера выбора операндов функции. там все понятно интуитивно.

ЗЫ
Читаем значение регистра PFW256
https://owen.ru/forum/attachment.php?attachmentid=67690&d=1683125705

ЗЫ
Копируем регистр PSW300 в регистр PFW500. Т.е. запись в регистр PFW500
https://owen.ru/forum/attachment.php?attachmentid=67691&d=1683126264

KIB52
04.05.2023, 09:29
Класс. Спасибо большое.

kondor3000
04.05.2023, 09:59
Класс. Спасибо большое.

Так вы дырку в памяти за 2-3 недели протрёте, нельзя часто в PFW записывать, да ещё в один и тот же регистр.
Лучше это делать по биту, не чаще нескольких раз (2-4 раза) в день. Ссылку уже давал в другой теме.

GIGSatellite
17.05.2023, 10:10
Здравствуйте.
Пишу макрос для СП310
static WORD ArrValueDW[2];
static float RegFloat;
WORD Temp1;

if (GetPSBStatus(318)==1) {//1
if (Reads(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 2, &ArrValueDW)) {//2
RegFloat=*(float*)(ArrValueDW);//float
*(float*)(PSW+318)=RegFloat;//PSW[318] DWord float
RegFloat=RegFloat*10.0;
Temp1=(WORD)RegFloat;
PSW[320]=Temp1;//PSW[320] Word Dec
if (Write(PLC, 82, MODBUS_RTU_REG_4X, 186, 0, TYPE_WORD, Temp1)) {//Wr adr 0x0080+58=186
ResetPSB(318);
} //Wr
}//2
}//1
При вводе данных в PFW[300] устанавливается бит PSB[318] и панель сразу зависает ( не реагирует на нажатия)...что я делаю не так?