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

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

  1. #1

    По умолчанию ПР200 и весовой индикатор CAS CI-1560A

    Всем доброго дня. Стоит задача - нужно снять значение массы с весового индикатора CAS CI1560a в ПР200. На индикаторе RS232, на ПР200 RS485, ставим между ними преобразователь интерфейса. Настройку индикатора выставляем так: Использование последовательного порта - Подключение к компьютеру или удаленному дисплею, Номер устройства - 01 (написано в мануале, что это номер необходим для формирования сигнала при посл. передаче данных), Скорость - 9600, Установка для передачи данных - Непрерывная.
    Настройка прибора в ПР200 согласно мануалу индикатора - скорость совпадает, биты данных 8, стоповый бит 1, проверка четности нет, кодировка ASCII.
    На этом форуме подсмотрел программку Просто весы, на ее основе сваял свою - не работает. Кто может - помогите пожалуйста. Что я сделал не так?
    Изображения Изображения
    Вложения Вложения

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

    По умолчанию

    Цитата Сообщение от po525 Посмотреть сообщение
    Всем доброго дня. Стоит задача - нужно снять значение массы с весового индикатора CAS CI1560a в ПР200. На индикаторе RS232, на ПР200 RS485, ставим между ними преобразователь интерфейса. Настройку индикатора выставляем так: Использование последовательного порта - Подключение к компьютеру или удаленному дисплею, Номер устройства - 01 (написано в мануале, что это номер необходим для формирования сигнала при посл. передаче данных), Скорость - 9600, Установка для передачи данных - Непрерывная.
    Настройка прибора в ПР200 согласно мануалу индикатора - скорость совпадает, биты данных 8, стоповый бит 1, проверка четности нет, кодировка ASCII.
    На этом форуме подсмотрел программку Просто весы, на ее основе сваял свою - не работает. Кто может - помогите пожалуйста. Что я сделал не так?

    ПР умеет только по протоколу ModBus работать. https://sites.google.com/site/fieldb...odbuseducation

    А у терминала свой, символьный, протокол. Ничего общего с ModBus!
    Не судьба...
    Последний раз редактировалось petera; 22.11.2018 в 18:03.
    26 лет деятельности в области промышленной безопасности

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

    По умолчанию

    Установка для передачи данных - Непрерывная. - похоже это означает, что весы сами всегда шлют данные а ПК их должен обрабатывать.
    Тогда при чем тут ПР ? он так не умеет

  4. #4

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Установка для передачи данных - Непрерывная. - похоже это означает, что весы сами всегда шлют данные а ПК их должен обрабатывать.
    Тогда при чем тут ПР ? он так не умеет
    На выбор еще есть:
    Передача в установившемся состоянии
    Передача по запросу
    Выбирать По запросу?
    А что насчет протокола? Это на самом деле так - все может не работать из-за протокола?
    Если не работает из-за протокола - может тогда нужно поставить МВ110 и поставить переключатель чтобы при необходимости можно было перейти на весовой индикатор?

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

    По умолчанию

    да, должно быть выполнено 2 условия, как заметили выше протокол тоже важен.
    ПР для данных весов не подходит из-за протокола. Если читать при помощи ПК или ПЛК то надо выставить "По запросу"

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

    По умолчанию

    Могу подключить CAS CI-1560A к панели СП270 или СП3хх, если надо.

    ЗЫ
    А уж из СП270 в ПРку - как два пальца..
    26 лет деятельности в области промышленной безопасности

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

    По умолчанию

    Попытка подключить 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
    Вложения Вложения
    Последний раз редактировалось petera; 12.12.2018 в 16:12.
    26 лет деятельности в области промышленной безопасности

  8. #8

    По умолчанию

    Цитата Сообщение от 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

    Обновленная справка по OWENLogic http://ftp-ow.owen.ru/softupdate/OWE..._HELP_1.13.chm
    Шаблон описания ошибки ПР или 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

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

    По умолчанию

    Цитата Сообщение от Ревака Юрий Посмотреть сообщение
    Дороговатый преобразователь получился
    Панель в проекте присутствует изначально, для ввода рецептов, слежения за процессом и пр.
    по этому мой макрос на цену всего изделия не влияет
    26 лет деятельности в области промышленной безопасности

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

    По умолчанию

    Я ставил raspberry pi для 6 весов CAS, весы настроены были на отдачу веса по ID, и по одной линии rs485 опрашивал все 6 весов.
    Преобразователь получался с БД и web через node-red по цене 4 т.р. Работало не плохо.

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

Похожие темы

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

Ваши права

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