Показано с 1 по 6 из 6

Тема: Счетчики СЭТ-4TM.02

  1. #1

    По умолчанию Счетчики СЭТ-4TM.02

    Помогите, пожалуйста.
    Имеется выше упомянутый счетчик. Отправляю с ПЛК-100 запросы, получаю ответы в десятеричной форме. Никак не могу сообразить как их опять вернуть в шестнадцатеричный формат для последующей трансляции в web сервер. Полный ступор.

  2. #2

    По умолчанию

    Не совсем понятно что именно нужно сделать? Если сконвертировать бинарное в 16 -ичную строку
    ну примерно так
    ss:STRING:='0000';
    ptr : pointer to byte;
    value:WORD:=16#12AB;

    ptr:=adr(ss);
    for i:=0 to 3 do
    value:=SHR(value,i*4);
    if ((value and 16#F)<10) then
    ptr^:=16#30+(value and 16#F); (*16#30 - код '0'*)
    else
    ptr^:=16#41+(value and 16#F)-16#A; (*16#41 - код 'A'*)
    end_if
    ptr:=ptr+1;
    end_for
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

  3. #3

    По умолчанию

    Обмен между счетчиком и контроллером происходит в шестнадцатеричном формате.
    Ну, например:
    Запрос:
    C0 04 00 73 3C
    Ответ:
    C0 23 21 08 01 01 08 11 00 99 1C
    Отправляю ответ на web страничку, а там ответ представляется уже в десятичном виде. В общем хотелось чтобы полученный ответ: C0 23 21 08 01 01 08 11 00 99 1C отразился без изменений на web страничке. Ну вот такой кавардак!

  4. #4

    По умолчанию

    Помогите решить проблему!

  5. #5

    По умолчанию

    PROGRAM PLC_PRG
    VAR
    data: ARRAY [1..11] OF BYTE:=16#C0,16#23,16#21,16#08,16#01,16#01,16#08,16 #11,16#00,16#99,16#1C;
    data_input:POINTER TO BYTE;
    input_sz:BYTE:=11;
    str_res:STRING(255);
    ptr : POINTER TO BYTE;

    i: INT;
    END_VAR

    data_input:=ADR(data[1]);
    ptr:=ADR(str_res);
    FOR i:=1 TO input_sz DO

    IF ((SHR(data_input^,4) AND 16#F)<10) THEN
    ptr^:=16#30+(SHR(data_input^,4) AND 16#F); (*16#30 - ??? '0'*)
    ELSE
    ptr^:=16#41+(SHR(data_input^,4) AND 16#F)-16#A; (*16#41 - ??? 'A'*)
    END_IF
    ptr:=ptr+1;

    IF ((data_input^ AND 16#F)<10) THEN
    ptr^:=16#30+(data_input^ AND 16#F); (*16#30 - ??? '0'*)
    ELSE
    ptr^:=16#41+(data_input^ AND 16#F)-16#A; (*16#41 - ??? 'A'*)
    END_IF
    ptr:=ptr+1;


    ptr^:=32;
    ptr:=ptr+1;
    data_input:=data_input+1;

    END_FOR
    ptr^:=0;
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

  6. #6

    По умолчанию

    большое спасибо!

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •