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

Тема: MasterSCADA 4D INT_TO_BITS

  1. #1

    По умолчанию MasterSCADA 4D INT_TO_BITS

    Всем привет, нужно сделать преобразование INT в 16 BITS, т.е. блок должен быть типа INT_TO_BITS, в сигнетикс есть такой блок, и человек что делал программу для шкафа его успешно использовал и теперь мне нужно в скаде как то это обратно разложить, но такого блока как INT_TO_BITS нет, есть только BYTE_TO_BITS, так же есть на форуме не рабочая ссылка на DWORD_TO_BITS.
    Я могу это сделать через C#, как пример
    Код:
    int val = 1;
    string binary = Convert.ToString(val, 2); 
    Console.WriteLine(binary);
    но я на выходе получу 11111111111111111111111111111111, т.е. как мне потом из этого выковыривать статус, это какойто обработчик нужен будет.
    Можно и так попробывать
    Код:
    int number;
    byte[] bytes = BitConverter.GetBytes(number);
    if (BitConverter.IsLittleEndian)
    Array.Reverse(bytes);
    Из массива проверять значение.
    Может есть какие то другие варианты, свою программу чел переделывать не будет.
    Изображения Изображения
    Последний раз редактировалось nikolay861; 19.12.2023 в 16:58.

  2. #2

    По умолчанию

    Цитата Сообщение от nikolay861 Посмотреть сообщение
    Всем привет, нужно сделать преобразование INT в 16 BITS, т.е. блок должен быть типа INT_TO_BITS, в сигнетикс есть такой блок, и человек что делал программу для шкафа его успешно использовал и теперь мне нужно в скаде как то это обратно разложить, но такого блока как INT_TO_BITS нет, есть только BYTE_TO_BITS, так же есть на форуме не рабочая ссылка на DWORD_TO_BITS.
    Я могу это сделать через C#, как пример
    Код:
    int val = 1;
    string binary = Convert.ToString(val, 2); 
    Console.WriteLine(binary);
    но я на выходе получу 11111111111111111111111111111111, т.е. как мне потом из этого выковыривать статус, это какойто обработчик нужен будет.
    Можно и так попробывать
    Код:
    int number;
    byte[] bytes = BitConverter.GetBytes(number);
    if (BitConverter.IsLittleEndian)
    Array.Reverse(bytes);
    Из массива проверять значение.
    Может есть какие то другие варианты, свою программу чел переделывать не будет.
    Посмотрите блок GetBit или вообще напишите свой блок на ST, читая биты входного слова через точку: bBit0 := wIn.0; и т.д.

  3. #3

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Посмотрите блок GetBit или вообще напишите свой блок на ST, читая биты входного слова через точку: bBit0 := wIn.0; и т.д.
    Если честно, я ST вообще не понимаю, c# я просто хорошо знаю, и был очень рад что в мастерскаде он есть, а то мне было бы совсем плохо, так же я и фбд юзаю конечно же, потому что как и лд, все контролеры на них программируются, но в мастерскаде фбд очень ущербный.

  4. #4

    По умолчанию

    Цитата Сообщение от nikolay861 Посмотреть сообщение
    Если честно, я ST вообще не понимаю, c# я просто хорошо знаю, и был очень рад что в мастерскаде он есть, а то мне было бы совсем плохо, так же я и фбд юзаю конечно же, потому что как и лд, все контролеры на них программируются, но в мастерскаде фбд очень ущербный.
    Там знать нечего, например есть переменная типа WORD (UINT) с именем Mask, чтобы распаковать 0 бит (типа BOOL) пишите b0:=Mask.0;
    бит 1 пишите b1:=Mask.1;
    бит 2- пишите b2:=Mask.2; и т. д. до бит 15

    Можно писать в одну строку
    b0:=Mask.0; b1:=Mask.1; b2:=Mask.2; b3:=Mask.3; ....... b15:=Mask.15;
    Последний раз редактировалось kondor3000; 19.12.2023 в 22:11.

  5. #5

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Там знать нечего, например есть переменная типа WORD (UINT) с именем Mask, чтобы распаковать 0 бит (типа BOOL) пишите b0:=Mask.0;
    бит 1 пишите b1:=Mask.1;
    бит 2- пишите b2:=Mask.2; и т. д. до бит 15

    Можно писать в одну строку
    b0:=Mask.0; b1:=Mask.1; b2:=Mask.2; b3:=Mask.3; ....... b15:=Mask.15;
    Хорошо, спасибо, попробую.

Похожие темы

  1. MasterScada 4D
    от Fart123 в разделе Master SCADA 3
    Ответов: 2
    Последнее сообщение: 21.06.2018, 10:47
  2. MasterSCADA 4D и ST
    от Эдуард_Н в разделе Master SCADA 3
    Ответов: 8
    Последнее сообщение: 18.05.2017, 18:19
  3. MasterScada 3.2
    от ~Sergey~ в разделе Master SCADA 3
    Ответов: 43
    Последнее сообщение: 29.09.2015, 16:49
  4. конвертация проекта из Masterscada 3.5 в Masterscada 3.4
    от Сергей_SPB в разделе Master SCADA 3
    Ответов: 2
    Последнее сообщение: 01.04.2013, 17:56
  5. MasterSCADA и ШД
    от sgm в разделе Трёп (Курилка)
    Ответов: 6
    Последнее сообщение: 05.08.2009, 06:33

Ваши права

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