На индикатор СМИ2 мне необходимо вывести поочередно сообщение, затем значение переменной. Все находится в string. После связи с ПЛК-150 и СМИ2 на индикаторе слова и цифры отображаются наоборот - с права на лева. Помогите разобраться.
Вид для печати
На индикатор СМИ2 мне необходимо вывести поочередно сообщение, затем значение переменной. Все находится в string. После связи с ПЛК-150 и СМИ2 на индикаторе слова и цифры отображаются наоборот - с права на лева. Помогите разобраться.
Доброго времени суток! Неужели никто не сталкивался с этой проблемой? Я начинающий, для меня это актуально. Может поделитесь простым примером отображение слов на СМИ2 ?
ПЛК110 + СМИ2 такая же проблема вывожу 'Err ' а выходи на экран 'rE' при перестановке по принципу (Байты ПЛК/СМИ2 - 1234/2143)
вывожу 'rE' а выходит 'Er' .. тупик
не очень понял вопрос.. chr2 это переменная сконфигурированная в настройках проекта codesys как 29 регистр устройства universal Modbus Device->string output module (точное название не припомню но где то так)
Не очень понял вопрос.. chr2 это переменная сконфигирированная в проекте codesys как 29 регистр СМИ2 universal modbus device-string output module ( не припомню точное название пишу с телефона но где то так
2 переменных использовал потому что если записывать в одну всю строку например chr1:='abcd' то ничего путного не получается выходит что то типа 'ba -' или типа того пробовал разные комбинации.. а вот если записать так chr1:='ba';chr2:='dc'; то тогда выходит на экран 'abcd'
Для корректной передачи строки необходимо менять местами не регистры, а байты. Создаете строковую переменную из 8 байт, привязываете к 29-ому регистру, в программе меняете местами байты в этой переменной перед отправкой на панель.
байты
ПЛК - СМИ
0 - 1
1 - 0
2 - 3
3 - 2
4 - 5
5 - 4
6 - 7
7 - 6
покажите на примере ST, что с порядком байтов что то надо делать я понял, а как это сделать в ST не знаю
как-то так:
VAR
p_str:POINTER TO ARRAY [0..7] OF BYTE;
p_str1:POINTER TO ARRAY [0..7] OF BYTE;
END_VAR
--------------------------------------------------------
p_str:=ADR(str);
p_str1:=ADR(str1);
p_str1^[0]:=p_str^[1];
p_str1^[1]:=p_str^[0];
p_str1^[2]:=p_str^[3];
p_str1^[3]:=p_str^[2];
p_str1^[4]:=p_str^[5];
p_str1^[5]:=p_str^[4];
p_str1^[6]:=p_str^[7];
p_str1^[7]:=p_str^[6];
как-то так:
VAR
p_str:POINTER TO ARRAY [0..3] OF WORD;
END_VAR
--------------------------------------------------------
p_str:=ADR(str);
p_str^[0]:=ROL(p_str^[0],8);
p_str^[1]:=ROL(p_str^[1],8);
p_str^[2]:=ROL(p_str^[2],8);
p_str^[3]:=ROL(p_str^[3],8);
за исключением проверки на четность строки