Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 3303

Тема: Панели оператора СП3xx. Вопросы и ответы

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от a86ndrew Посмотреть сообщение
    Хорошо, я вас услышал, единственное что я бы вот хотел уточнить:
    Вот у меня есть программа на C#, там я работаю со всеми регистрами, PSB, PSW, c PSB я взаимодействую через ReadCoils, а с PSW и PFW - с ReadHoldingRegisters, и, если я правильно понимаю то регистры PSW и PFW имеют одну общую область, и у меня сейчас такая проблема, что с PSB и PSW все в порядке, а вот с PFW - все грустнее, данные выводятся, но это не то вообще, и вот отсюда вопрос: можно ли каким-то образом посмотреть и понять, что в какой ячейке лежит? Можно ли это сделать через конфигуратор?
    Область одна, а адреса регистров PFW +10 000, то есть адрес PFW256 будет 10256
    Последний раз редактировалось kondor3000; 14.05.2023 в 13:07.

  2. #2

    По умолчанию

    Здравствуйте.
    Пишу макрос для СП310
    static WORD ArrValueDW[2];
    static float RegFloat;
    WORD Temp1;

    if (GetPSBStatus(318)==1) {//1
    if (Reads(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 2, &ArrValueDW)) {//2
    RegFloat=*(float*)(ArrValueDW);//float
    *(float*)(PSW+318)=RegFloat;//PSW[318] DWord float
    RegFloat=RegFloat*10.0;
    Temp1=(WORD)RegFloat;
    PSW[320]=Temp1;//PSW[320] Word Dec
    if (Write(PLC, 82, MODBUS_RTU_REG_4X, 186, 0, TYPE_WORD, Temp1)) {//Wr adr 0x0080+58=186
    ResetPSB(318);
    } //Wr
    }//2
    }//1
    При вводе данных в PFW[300] устанавливается бит PSB[318] и панель сразу зависает ( не реагирует на нажатия)...что я делаю не так?

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

    По умолчанию

    Цитата Сообщение от GIGSatellite Посмотреть сообщение
    Здравствуйте.
    Пишу макрос для СП310
    static WORD ArrValueDW[2];
    static float RegFloat;
    WORD Temp1;

    if (GetPSBStatus(318)==1) {//1
    if (Reads(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 2, &ArrValueDW)) {//2
    RegFloat=*(float*)(ArrValueDW);//float
    *(float*)(PSW+318)=RegFloat;//PSW[318] DWord float
    RegFloat=RegFloat*10.0;
    Temp1=(WORD)RegFloat;
    PSW[320]=Temp1;//PSW[320] Word Dec
    if (Write(PLC, 82, MODBUS_RTU_REG_4X, 186, 0, TYPE_WORD, Temp1)) {//Wr adr 0x0080+58=186
    ResetPSB(318);
    } //Wr
    }//2
    }//1
    При вводе данных в PFW[300] устанавливается бит PSB[318] и панель сразу зависает ( не реагирует на нажатия)...что я делаю не так?
    Если РЕАЛЬНЫЙ ПЛК к панели не подключен,то
    виснет когда пытается записать в ПЛК здесь
    if (Write(PLC, 82, MODBUS_RTU_REG_4X, 186, 0, TYPE_WORD, Temp1)) {//Wr adr 0x0080+58=186

    Закомментируй этот Write и посмотри результат
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  4. #4

    По умолчанию

    if (GetPSBStatus(318)) {//1
    ResetPSB(318);
    SetPSB(400);
    Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_DWORD, &ArrValueDW);

    /* RegFloat= *(float*)(ArrValueDW);//float
    //RegFloat=12.3;
    *(float*)(PSW+318)=RegFloat;
    RegFloat=RegFloat*10.0;
    Temp1=(WORD)RegFloat;
    PSW[320]=Temp1;*/
    // if (Write(PLC, 82, MODBUS_RTU_REG_4X, 186, 0, TYPE_WORD, Temp1)) {//Wr adr 0x0080+58=186
    // ResetPSB(318);
    // } //Wr
    }//1
    при вводе значения в PFW[300] виснет

  5. #5

    По умолчанию

    Цитата Сообщение от GIGSatellite Посмотреть сообщение
    if (GetPSBStatus(318)) {//1
    ResetPSB(318);
    SetPSB(400);
    Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_DWORD, &ArrValueDW);

    /* RegFloat= *(float*)(ArrValueDW);//float
    //RegFloat=12.3;
    *(float*)(PSW+318)=RegFloat;
    RegFloat=RegFloat*10.0;
    Temp1=(WORD)RegFloat;
    PSW[320]=Temp1;*/
    // if (Write(PLC, 82, MODBUS_RTU_REG_4X, 186, 0, TYPE_WORD, Temp1)) {//Wr adr 0x0080+58=186
    // ResetPSB(318);
    // } //Wr
    }//1
    при вводе значения в PFW[300] виснет
    может надо еще добавить в макрос условие читать reads только в том случае, когда в данный текущий момент времени не идет запись в PFW.......

  6. #6

    По умолчанию

    а как определить что идет запись в PFW?

  7. #7

    По умолчанию

    Цитата Сообщение от GIGSatellite Посмотреть сообщение
    а как определить что идет запись в PFW?
    Как вы записываете ? Вводите значение в PFW ? Если вводите, нужный бит включится 1 Бит уведомления.jpg
    Последний раз редактировалось kondor3000; 17.05.2023 в 15:12.

  8. #8

    По умолчанию

    не понял про 318....PSB318 это бит уведомления о изменении параметра(может быть любого номера)
    а PSW[318] Dword =4 байта(т.е. регистры 318 и 319)
    Последний раз редактировалось GIGSatellite; 17.05.2023 в 11:22.

  9. #9

    По умолчанию

    это как то совсем не научно ((( а других ошибок в коде нет?

  10. #10

    По умолчанию

    у Вас есть пример работы с PFW?

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Экспорт CSV в панели СП3xx и порядок квитирования событий
    от theoretician в разделе Панели оператора (HMI)
    Ответов: 30
    Последнее сообщение: 24.08.2021, 16:17
  2. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  3. Сенсорные панели оператора ОВЕН СП3ХХ
    от Боднар Олег Миколайович в разделе Подбор Оборудования
    Ответов: 7
    Последнее сообщение: 17.12.2015, 09:09
  4. СПК 107 в качестве панели оператора
    от Леонид в разделе СПК1хх
    Ответов: 15
    Последнее сообщение: 20.11.2015, 08:17

Ваши права

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