Показано с 1 по 10 из 21

Тема: ПР200 и весовой индикатор CAS CI-1560A

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

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

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Попытка подключить CAS CI-1560A к ПРке с помощью панели СП3хх
    Идея заключается в том, что
    - CAS CI-1560A подключен к порту панели Download
    - ПР200 подключено к порту панели PLC

    в панели работает макрос на Си, который по запросу получает из CAS CI-1560A 22 байта следующего формата
    Захват-6.png

    байты 1, 2 - символы US или ST или OL
    байт 3 - символ ","
    байты 4, 5 - GS или NT
    байт 6 - символ ","
    байт 7 - номер устройства
    байт 8 - состояние ламп на панели CAS1560
    байт 9 - символ ","
    байты 10, 11, 12, 13, 14, 15, 16, 17 - ascii коды цифр веса
    байт 18 - символ "пробел"
    байт 19 - символ "К"
    байт 20 - символ "G"
    байт 21 - символ CR
    байт 22 - символ LF
    Макрос ищет в строке байты 10, 11, 12, 13, 14, 15, 16, 17, преобразовывает эту подстроку в число и отправляет его в ПР по модбасу
    в байте 10 - знак числа, а в 11, 12, 13, 14, 15, 16, 17 цифры

    Теперь сам проект
    Захват-7.png
    Два дисплея PSW500 и PSW501 нужны только для отладки - число полученных байт и число повторов чтения из CAS1560.

    Весы подключены к порту Download, параметры порта в проекте 19200, 8, нет, 1. Сделать для весов такие же настройки.
    ПР200 подключается к порту PLC, 115200, 8, нет, 1

    Сам макрос вызывается ф.областью, ГЛОБАЛЬНОЙ, условие запуска - непрерывно.
    Режим выполнения макроса - параллельный!
    Захват-1.png
    Выделенные части нужны только для демонстрации работы макроса их можно удалить.
    Макрос посылает запрос в CAS1560 на передачу данных (посылается один байт с номером, который присвоен CAS1560) , читает 22 байта ответа. Если CAS1560 не отвечает (тайм-аут сделан 1сек), то делается еще две попытки чтения. Если ответа нет - устанавливается флаг ошибки, через 3 сек флаг сбрасывается и чтение выполняется заново.
    Флаг ошибки можно использовать в алгоритме ПР, для остановки процесса дозирования.
    У меня от этого флага срабатывает сигнальное окно.
    Из полученной строки выделяются семь символов веса и преобразовываются в число со знаком, формат short int.
    Допустимый диапазон веса получается от - 32768 до +32767 кг. Надеюсь, что 32 тонны достаточно?
    Макрос:
    Код:
    #define Alarm		300			// Number PSB from error flag
    #define NumCAS		1			//ID device
    #define adrPR		16			// Addres PR200
    #define adrRegPR	512			// Addres register "Weight"
    
    WORD timeOut;
    WORD status = 0;
    BYTE ID[1];
    BYTE byArr[22] = {' '};
    char *strWeight = "      0";
    int i = 0;
    short int Weight = 0;
    //---- change timeout port of PLC (only for ModBus)
    Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 38, 0, TYPE_WORD, &timeOut);
    if(timeOut == 1000) Write(HMI_LOCAL_MCH, 0, TYPE_PFW, 38, 0, TYPE_WORD, 200);
    
    //-----send a request for data from the CAS1560
    Enter(DOWNLOAD);	// open port DOWNLOAD
    ID[0] = NumCAS;
    Send(DOWNLOAD, ID, 1);	//send ID device
    
    //----- Get string (22 bytes) from CAS1560
    while(status != 22 && i < 3) {
    	status = Receive(DOWNLOAD, byArr, 22, 1000, 18);
        i++;					//next try
        PSW[500] = status;		//debug only !!
        PSW[501] = i;			//debug only !!
    }
    //----
    	memcpy(strWeight, byArr +10, 7);	//extract string weight
    	Weight = atoi(strWeight);	//convert string to number
    	if (byArr[9] == '-') Weight = Weight * (-1);
        
    //----
    	PSW[314] = Weight;			//debug only !!
    	memcpy(&PSW[300], byArr, 22);	//debug only !!
        
    //--- if three attempts were unsuccessful, set error flag for three seconds
    if (i == 3 && status != 22) {
        SetPSB(Alarm);
        Delay(3000);
        ResetPSB(Alarm);
    }
    Leave(DOWNLOAD);	//close port DOWNLOAD
    //Delay(100);
    //--- write weight in the register PR200
    Write(PLC, adrPR, MODBUS_RTU_REG_4X, adrRegPR, 0, TYPE_WORD, Weight);

    параметры работы макроса задаются в секции #define
    Код:
    #define Alarm		300			// Number PSB from error flag
    #define NumCAS		1			//ID device
    #define adrPR		16			// Addres PR200
    #define adrRegPR	512			// Addres register "Weight"
    Тут, что и зачем вроде понятно
    секция
    Код:
    //---- change timeout port of PLC (only for ModBus)
    Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 38, 0, TYPE_WORD, &timeOut);
    if(timeOut == 1000) Write(HMI_LOCAL_MCH, 0, TYPE_PFW, 38, 0, TYPE_WORD, 200);
    Фактически срабатывает только один раз после загрузки в панель
    Ее назначение не связанно с CAS1560, цель уменьшить тайм аут обмена для порта PLC с 1000 мс до 200. Это способ убрать тормоза при обрыве связи со слейвом http://www.owen.ru/forum/showthread.php?t=22915&p=293618&viewfull=1#post293 618

    Т.к. число передаваемое в ПР будет 16битным целым со знаком, а ПР не умеет делать арифметику с такими числами, то полученное число нужно преобразовать в число с плавающей запятой.
    Захват-4.png
    У меня здесь такой макрос
    Захват-5.png
    Дороговатый преобразователь получился
    С уважением, Ревака Юрий.
    Инженер группы технической поддержки компании "ОВЕН"
    e-mail: yu.revaka@owen.ru

    Шаблон описания ошибки ПР или OL http://ftp-ow.owen.ru/softupdate/OWE...s/Shablon.docx
    Видео уроки по ПР200 и OWEN Logic http://edu.owen.ru/series/pr200_rev/
    Другие видеоролики по тематике ПР https://www.youtube.com/channel/UCj4...H5H3d_t6iDlQOQ

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

    По умолчанию

    Цитата Сообщение от Ревака Юрий Посмотреть сообщение
    Дороговатый преобразователь получился
    Панель в проекте присутствует изначально, для ввода рецептов, слежения за процессом и пр.
    по этому мой макрос на цену всего изделия не влияет
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Похожие темы

  1. Весовой терминал на МВ110-224.1ТД+2 шт. СМИ-1+ ПЛК100
    от KRUPSKIY в разделе Подбор Оборудования
    Ответов: 10
    Последнее сообщение: 26.04.2021, 07:56
  2. Весовой индикатор WE2110 и MasterSCADA
    от Юрий Бабушкин в разделе Подбор Оборудования
    Ответов: 2
    Последнее сообщение: 20.01.2015, 09:04
  3. Весовой индикатор!!!
    от sergeykrylov в разделе Разработки
    Ответов: 8
    Последнее сообщение: 04.08.2011, 02:04
  4. ПЛК-154 - ВЕСОВОЙ ИЗМЕРТЕЛЬ E-NOD-RS485
    от Максим_Фалалеев в разделе Сетевые технологии
    Ответов: 0
    Последнее сообщение: 15.11.2008, 16:59
  5. Подобрать весовой контроллер
    от Максим_Фалалеев в разделе Подбор Оборудования
    Ответов: 3
    Последнее сообщение: 25.09.2008, 16:56

Ваши права

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