Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 18 из 18

Тема: СП307+МВ210-101+NTC Помогите пожалуйста

  1. #11
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,585

    По умолчанию

    capzap ну я возможно ошибся в названиях FB, так если поправите, на какие блоки в CodeSys посмотреть автору, он найдет быстрее. Я же написал, что код делал именно из кода CodeSys а не придумывал его из головы. Просто переписал на C# для использования в Scada.

    Gi0 просто в CodeSys есть различный функционал, который уже давно и кем то реализован, просто код ST нужно адаптировать под тот язык, который вы используете. Так несколько сокращается время вместо изобретения велосипедов....

    код, который я привел на C#, он как раз делает масштабирование сигнала с одновременным отсеканием значения выхода за диапазоны для индикации значений.
    Вывести надпись больше, меньше либо отдельно, либо там же, если панель позволяет.

    Ну и на Си, я не работал в Овеновскими панелями, если там есть возможность выводить текст на экран, то скриптом вы можете преобразовывать значения в текст и выводить как текст и в случае выхода за диапазон не фиксировать значения а как раз написать нужное вам БОЛЬШЕ или МЕНЬШЕ....
    Последний раз редактировалось melky; 11.05.2020 в 13:14.

  2. #12
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,225

    По умолчанию

    я не специализируюсь на СП3хх, на других панелях еще меньше работы, но я бы написал такие функции мне бы хватило

    ЗЫ
    не могу записать данные из модуля в панель
    в справке есть работа с флоат, может поможет
    Изображения Изображения
    • Тип файла: png owen.png (22.0 Кб, Просмотров: 16)
    Последний раз редактировалось capzap; 11.05.2020 в 13:41.
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  3. #13

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    я не специализируюсь на СП3хх, на других панелях еще меньше работы, но я бы написал такие функции мне бы хватило

    ЗЫв справке есть работа с флоат, может поможет
    спасибо большое

  4. #14
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,225

    По умолчанию

    чтоб не связываться с флоатами, где многое зависит от последовательности байт, я бы читал целочисленные регистры начиная с 4064, кажется. насчет вычислений разницы не будет с чем работать с интом или флоатом
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  5. #15
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,825

    По умолчанию

    Цитата Сообщение от Gi0 Посмотреть сообщение
    Далее стоит задача перенести значения сопротивлений из регистров модулей в регистры панели. Для этого использовал глобальный макрос:
    Read(NET_0, 1, MODBUS_TCP_REG_4X, 4000, 0, TYPE_DWORD, &PSW[300]);

    Использовал помощник встроенный в конфигуратор панели(т.е. Read( а затем указал регистры внутренней памяти в которые хочу записать данные &PSW[300]). Повторно вывел "Цифровой дисплей" с параметрами регистр PSW[300], значение Dword, дисплей/формат float. В итоге ничего не получилось: в цифровом дисплее для отображения регистров панели значение 0, при этом в цифровом дисплее для отображения регистров модуля по прежнему нормальные значения сопротивлений.
    1. Глобальный макрос не для этого!
    В глобальном макросе Вы создаете свои функции в дополнение к стандартным
    Например
    Захват-1.png Захват-4.png

    Затем такие "свои" функции" можно использовать в любых своих макросах
    Например
    Захват-2.png

    2. Все свои функции типа
    Read(NET_0, 1, MODBUS_TCP_REG_4X, 4000, 0, TYPE_DWORD, &PSW[300]);
    вы должны писать в простых макросах

    3. Чтобы результат работы макроса был виден на экране, сам макрос нужно вызывать функциональной областью или ф.кнопкой
    Захват-5.png
    Вложения Вложения
    Последний раз редактировалось petera; 11.05.2020 в 19:28.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  6. #16

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    1. Глобальный макрос не для этого!
    В глобальном макросе Вы создаете свои функции в дополнение к стандартным
    Например
    Захват-1.png Захват-4.png

    Затем такие "свои" функции" можно использовать в любых своих макросах
    Например
    Захват-2.png

    2. Все свои функции типа
    Read(NET_0, 1, MODBUS_TCP_REG_4X, 4000, 0, TYPE_DWORD, &PSW[300]);
    вы должны писать в простых макросах

    3. Чтобы результат работы макроса был виден на экране, сам макрос нужно вызывать функциональной областью или ф.кнопкой
    Захват-5.png
    Спасибо, действительно помогло записать в свой макрос и запустить ф. областью.
    Теперь могу считать и вывести в цифровом дисплее значение PSW[300].

    Чтобы производить математические операции со значением сопротивления в регистре PSW[300] я так понимаю должен перевести в float? затем выполнить математические операции по моей формуле, а затем конвертировать снова в dword и записать в новый регистр, который и хочу вывести на дисплей?
    Например вот так:

    float fT1; // задаю переменные
    float fT11;
    Read(NET_0, 1, MODBUS_TCP_REG_4X, 4000, 0, TYPE_DWORD, &PSW[300]); // считываю дворд в 200 регистр внутренней памяти
    fT1=(*(float*)&(PSW[300])); //конвертирую дворд в число с плавающей точкой
    fT11=fT1+555; //математические вычисления с числами
    PSW[400]=(*(DWORD*)&(fT11)); //обратно конвертирую число с плавающей точкой в дворд

    На графическом дисплее создаю цифровой дисплей и вывожу PSW[400] с отображением значения в формате float.
    В результате на цифровом дисплее "0".
    Последний раз редактировалось Gi0; 12.05.2020 в 11:19.

  7. #17
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,825

    По умолчанию

    Цитата Сообщение от Gi0 Посмотреть сообщение
    Спасибо, действительно помогло записать в свой макрос и запустить ф. областью.
    Теперь могу считать и вывести в цифровом дисплее значение PSW[300].

    Чтобы производить математические операции со значением сопротивления в регистре PSW[300] я так понимаю должен перевести в float? затем выполнить математические операции по моей формуле, а затем конвертировать снова в dword и записать в новый регистр, который и хочу вывести на дисплей?
    Например вот так:

    float fT1; // задаю переменные
    float fT11;
    Read(NET_0, 1, MODBUS_TCP_REG_4X, 4000, 0, TYPE_DWORD, &PSW[300]); // считываю дворд в 200 регистр внутренней памяти
    fT1=(*(float*)&(PSW[300])); //конвертирую дворд в число с плавающей точкой
    fT11=fT1+555; //математические вычисления с числами
    PSW[400]=(*(DWORD*)&(fT11)); //обратно конвертирую число с плавающей точкой в дворд

    На графическом дисплее создаю цифровой дисплей и вывожу PSW[400] с отображением значения в формате float.
    В результате на цифровом дисплее "0".
    Код:
    float fT1, fT11;
    Read(NET_0, 1, MODBUS_TCP_REG_4X, 4000, 0, TYPE_DWORD, &fT1); //Читаем сразу в переменную
    //Уж если хочется увидить на экране
    *(float*)(PSW+300) = fT1; //то делаем так
    //естественно, что для дисплея в настройках Регистра нужен Dword PSW300
    // Захват-1.png
    
    //и формат данных - float
    //Захват-2.png
    
    fT11=fT1+555; //математические вычисления с числами
    *(float*)(PSW+400) = fT11; // результат на экран. НАСТРОЙКИ дисплея - аналогичные
    Последний раз редактировалось petera; 12.05.2020 в 14:42.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  8. #18

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Код:
    float fT1, fT11;
    Read(NET_0, 1, MODBUS_TCP_REG_4X, 4000, 0, TYPE_DWORD, &fT1); //Читаем сразу в переменную
    //Уж если хочется увидить на экране
    *(float*)(PSW+300) = fT1; //то делаем так
    //естественно, что для дисплея в настройках Регистра нужен Dword PSW300
    // Захват-1.png
    
    //и формат данных - float
    //Захват-2.png
    
    fT11=fT1+555; //математические вычисления с числами
    *(float*)(PSW+400) = fT11; // результат на экран. НАСТРОЙКИ дисплея - аналогичные
    Спасибо огромное!
    Ваши рекомендации помогли мне реализовать проект, всё работает и считает как надо.
    У меня действительно в синтаксисе были ошибки и сразу в переменную тоже логично.

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Ответов: 12
    Последнее сообщение: 14.06.2019, 17:50
  2. МВ210-204 - помогите настроить MasterOPC
    от Бубнов Александр в разделе Мх210
    Ответов: 3
    Последнее сообщение: 03.05.2019, 15:01
  3. Помогите пожалуйста
    от Мердан в разделе Подбор Оборудования
    Ответов: 5
    Последнее сообщение: 15.07.2016, 10:57
  4. помогите,пожалуйста!!!
    от Studentik в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 03.06.2010, 10:39
  5. Помогите пожалуйста!!!
    от timursan в разделе ПЛК1хх
    Ответов: 28
    Последнее сообщение: 26.04.2009, 00:48

Ваши права

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