И снова возникает вопрос, недостаточно ясно описанный в документации.
Имеем:
HMI NB7W-TW01B
PLC CP1H XA-40DT-D
С панелькой работаем в NB Designer. Для панельки можно писать некоторые макросы. Возможностей, правда, не так много:
http://www.myomron.com/index.php?action=kb&article=1544В Programming Manual написано ещё кое-что, но в целом всё равно остаётся вопрос:
А как, собственно, макросом считать область данных из ПЛК (и записать, собственно)? По идее, можно не обратить внимание на то, что функции называются "Local", и воспользоваться ReadLocal + WriteLocal. Например, так:
Код:
#define RESULT_HEAD_LEN 14
int MacroEntry()
{
unsigned short head[RESULT_HEAD_LEN];
int res = 0;
res = ReadLocal("D",100,RESULT_HEAD_LEN,(void*)head,0);
WriteLocal("LW",100,1,(void*)res,0);
res = WriteLocal("FRW",100,RESULT_HEAD_LEN,(void*)head,0);
WriteLocal("LW",101,1,(void*)res,0);
return 0;
}
Т.е. я хочу взять массивчик из области D ПЛК, и закинуть его в просторнейшую флешку на HMI. Результат операции копирования вывожу в локальные регистры HMI. Что при этом происходит: в указанных областях FRW появляется что-то, но абсолютно не то, что было в копируемой области D, в LW100 и 101 остаются нули, а HMI впадает в ступор, от которого спасает только перезагрузка. Что я не так делаю?
Макрос инициирую установкой бита LB0 в единицу. К слову, не понял, зачем в примерах не только инициируют макрос записью бита/слова, но и потом тоже самое прописывают в "уведомлении"?