Страница 7 из 7 ПерваяПервая ... 567
Показано с 61 по 67 из 67

Тема: Работа с рецептами СП310 и ПЛК110[M02]

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

    По умолчанию

    Кнопки ЗАПОМНИТЬ на экранах этапов - ПОЛНЫЙ БРЕД!
    Извините конечно, но Вы понимаете что будет при нажатии на эту кнопку?
    Захват-06.png
    Куда Вы собрались запоминать?
    Ведь Вы работаете СРАЗУ с нужными регистрами PFW через индексную адресацию (PSW40) сразу редактируете правильные регистры выбранной детали и выбранного этапа

    Захват-07.png Захват-08.png
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  2. #62

    По умолчанию

    А я думал, что я так запоминаю в рецепт.
    Значит они вообще ненужный элемент? Редактирую сразу регистр, ну да, понял, спасибо.

    А как все-таки маску побитно отправить на флешку, чтобы файл читаемый был?
    Про макросы я не понял.

    Спасибо.

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

    По умолчанию

    Цитата Сообщение от Iv_Str_NDT Посмотреть сообщение
    А я думал, что я так запоминаю в рецепт.
    Значит они вообще ненужный элемент? Редактирую сразу регистр, ну да, понял, спасибо.

    А как все-таки маску побитно отправить на флешку, чтобы файл читаемый был?
    Про макросы я не понял.

    Спасибо.
    Кнопки (или функции ф.облостей и ф.кнопок) нужны ТОЛЬКО для копирования выбранного (PSW40) рецепта из области памяти рецептов из PFW в ПЛК, или в обратную сторону.

    Макросы..
    В панели можно использовать макросы написанные на Си, в том числе и для работы с файлами на флешке
    Например,
    Дамп файла по секторам на экране панели
    Захват-01.png
    Вложения Вложения
    Последний раз редактировалось petera; 09.02.2022 в 13:39.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

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

    По умолчанию

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

  5. #65

    По умолчанию

    Спасибо. Разбираюсь.

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

    По умолчанию

    Победил я запись в файл битовой маски по битам.
    Видео:

    Полученный файл имеет такой вид
    Захват-01.png
    Включенные биты маски в файле отмечаются символом "Х", выключенные биты - " "

    Макрос экспорта рецептов в файл
    Захват-02.png

    Для вывода сообщений типа этих
    Код:
    //display a message box about this  
    	PRINT(30,"%s",
    			"    \xcd\xe0\xea\xee\xef\xe8\xf2\xe5\xeb\xfc\x20\x55\x53\x42\x20\xee\xf2\xf1\xf3\xf2\xf1\xf2\xe2\xf3\xe5\xf2\n\n"
                "    \xcd\xe0\xe6\xec\xe8\x20\xf7\xf2\xee\xe1\xfb\x20\xe7\xe0\xea\xf0\xfb\xf2\xfc\x20\xee\xea\xed\xee");
    В глобальном макросе используется макро определение
    #define PRINT(...) realdprintf(__VA_ARGS__)

    и "самописная" функция
    void realdprintf (unsigned delay, char const *format, ...)

    Скрытый текст:
    Код:
    /* 
     *
     * Copyright 2022 Petr Artyukov (PeterA). All rights reserved.
     *
     */
    #include <stdarg.h>
    #define PRINT(...) realdprintf(__VA_ARGS__)
    void realdprintf (unsigned delay, char const *format, ...)
    {
    #define winNo       5000       //Debug window number
    #define HidwNo      6000       //Hidden Window number
    #define LTOTAL      4          //Number of lines in the debug window
    #define CTOTAL      40         //Number of characters in one line of the debug window
    #define INPUT       PSW[136]   //Window control buttons
    #define SCRADDR     PSW[139]   //Initial address of the screen buffer
    #define TIC         (*(DWORD*) (PSW + 38))  //System timer
    #define TABS        8
    #define OK          0       
    #define KbdStatus(bitno)   ((INPUT) & (1 << (bitno)))
    
    
    char *pBuffScr;
    char *pBuffPrint = Malloc((LTOTAL -1) * CTOTAL);
    BYTE *saveREGS = Malloc(LTOTAL * CTOTAL);
    WORD saveREG1, saveREG2;
    static int Xpos, Ypos;
    register int t, len2;
    int len1, len3, dir;
    unsigned long tm;
    va_list arg;
    
    Xpos = 237;
    Ypos = 205;
    
    /* Save working registers */
    saveREG1 = INPUT;
    saveREG2 = SCRADDR;
    /* Calculate the initial address of the screen buffer */
    SCRADDR = PSW[10] - LTOTAL * CTOTAL/2;	//
    pBuffScr = (char*) &PSW[SCRADDR];
    /* Save the registers of the screen buffer area  */
    memcpy(saveREGS, pBuffScr, LTOTAL * CTOTAL);
    /* Clear screen buffer  */
    memset(pBuffScr, ' ', LTOTAL * CTOTAL);
    
    /* Print to screen line #1 */
    
    len1 = sprintf(pBuffScr, "         >>>>> DEBUG <<<<<< ");
    len2 = CTOTAL + Max(0, len1-CTOTAL);
    
    /* remaining print lines in the buffer */
    va_start(arg, format);
    len3 = vsnprintf (pBuffPrint, LTOTAL * CTOTAL - len2 - 1, format, arg);
    va_end(arg);
    pBuffPrint[len3] = '\0';
    
    /* Display buffer on screen */
    t= 0;
    do {
        switch(pBuffPrint[t]) {
            case '\a':		//Bell
                Beep();
                break;
            case '\t':		//Tab    
                len2 = len2 - len2 % TABS + TABS;
                break;
            case '\n':		//LF    
                len2 = len2 - len2 % CTOTAL + CTOTAL;
                break;            
            default:
                pBuffScr[len2] = pBuffPrint[t];
                len2++;
        }
        t++;
    } while (pBuffPrint[t] !=0 && len2 < (LTOTAL * CTOTAL));
    
    /* Call the debug window and control its position */
    tm = TIC;
    while(!(KbdStatus(OK) || (delay !=0 && (TIC-tm) >= delay*10)) ) {
    
    
        OpenWindow(winNo, Xpos, Ypos);
        INPUT = 0;
        Delay(10);
    }
    CloseWindow(winNo);		// Close Window
    CloseWindow(HidwNo);		// Close hidden Window
    
    /* Restore working registers */
    memcpy(pBuffScr, saveREGS, LTOTAL * CTOTAL);
    INPUT = saveREG1;
    SCRADDR = saveREG2;
    /* Deallocate memory blocks */
    Free(pBuffPrint);
    Free(saveREGS);
    }

    Для "печати" используются стандартные символьные дисплей с привязкой к регистрам PSW, расположенным в самом конце доступной памяти выделенной под PSW
    При этом,ни один регистр PSW не пострадает, т.к. ВСЕ используемые в функции регистры в начале ее работы сохраняются, а после ее завершения - восстанавливаются с прежним содержимым.
    Вложения Вложения
    Последний раз редактировалось petera; 13.02.2022 в 17:02.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  7. #67
    Пользователь
    Регистрация
    04.09.2012
    Адрес
    Омск
    Сообщений
    224

    По умолчанию

    Просмотрел видео, прочитал тему - вот наверное почему я не использую панели овен. В том же w***ke, создать похожее, без таких ухищрений можно без проблем.
    "Petera" можно считать экспертом по панелям серии СП, однако я понимаю даже он тут вспотел, изобретая это.

Страница 7 из 7 ПерваяПервая ... 567

Похожие темы

  1. СП310 и блокировка кнопки паролем. работа с календарем.
    от Дмитрий Александрович в разделе Панели оператора (HMI)
    Ответов: 12
    Последнее сообщение: 11.10.2021, 18:46
  2. СП310 и ступенчатое задание переменной. Работа с паролями.
    от Дмитрий Александрович в разделе Панели оператора (HMI)
    Ответов: 2
    Последнее сообщение: 06.08.2021, 17:14
  3. работа с рецептами в MasterSCADA4D
    от niklud19511 в разделе Master SCADA 4D
    Ответов: 1
    Последнее сообщение: 10.05.2018, 19:03
  4. ПЛК100 и ИП320 работа с рецептами
    от xaron в разделе ПЛК1хх
    Ответов: 22
    Последнее сообщение: 24.03.2014, 16:38
  5. Работа с рецептами
    от Aleksandr в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 23.01.2012, 13:36

Ваши права

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