Благодарю за поддержку, однако с указателями в ST дел пока не имел, слишком неочевидно для меня использование указателей в ST.
Первый момент :
После беглого поиска по форуму, встречал пример
сapzap, и переделанный под мои нужды он выглядит так :
Код:
VAR
mv110_1_H : WORD;
mv110_1_L : WORD;
MV_110 : DWORD;
mv_pt : POINTER TO DWORD;
END_VAR
mv_pt:=ADR(MV_110);
mv_pt^:=SHL(WORD_TO_DWORD(mv110_1_H),16) OR WORD_TO_DWORD(mv110_1_L);
Источник - http://www.owen.ru/forum/showthread....ll=1#post87066
Код мне понятен, за исключением применения POINTER - хоть кол о голову чеши, не понимаю, зачем указывать область памяти на переменную, когда в этом примере можно использовать оператор присваивания? В чем преимущества?
Вот следующий код, мне как Си программисту - понятен :
Код:
MV_110 := SHL(WORD_TO_DWORD(mv110_1_H),16) OR WORD_TO_DWORD(mv110_1_L);
Результат работы в ПЛК - такой же.
К чему тогда в этом коротком примере использование указателей?
Основная литература которую использую, это книга Павлова, то тема указателей - там не развернута (возможно потому что их нет в МЭК).
-------------
Второй вопрос - целесообразно ли в ST объявлять промежуточные переменные типа WORD, служащие для формирования DWORD, или можно делать вот так :
Код:
MV_110 := SHL(WORD_TO_DWORD(%IW0),16) OR WORD_TO_DWORD(%IW1);
Убирая тем самым избыточный код?