Показано с 1 по 6 из 6

Тема: СП307 и МУ110-224.8Р

  1. #1

    По умолчанию СП307 и МУ110-224.8Р

    Здравствуйте. Прошу помочь с написанием макроса сигнализации. К панели подключен модуль МУ110, включающий сигнальную лампу в случае превышения уставки. Используется макрос
    WORD A=3;
    if (PSW[256]>=A)
    {
    Write(PLC, 2, MODBUS_RTU_REG_4X, 50, 0, TYPE_BIT, 1);
    }
    else
    {
    Write(PLC, 2, MODBUS_RTU_REG_4X, 50, 0, TYPE_BIT, 0);
    }
    Если при помощи функциональной области включить PWF 36.2, то все работает. Но к панели еще подключены несколько частотников, для которых используется команда х06. Подскажите как при помощи макроса управлять МУ не трогая PWF 36.2?

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

    По умолчанию

    Цитата Сообщение от Anchar Посмотреть сообщение
    Здравствуйте. Прошу помочь с написанием макроса сигнализации. К панели подключен модуль МУ110, включающий сигнальную лампу в случае превышения уставки. Используется макрос
    WORD A=3;
    if (PSW[256]>=A)
    {
    Write(PLC, 2, MODBUS_RTU_REG_4X, 50, 0, TYPE_BIT, 1);
    }
    else
    {
    Write(PLC, 2, MODBUS_RTU_REG_4X, 50, 0, TYPE_BIT, 0);
    }
    Если при помощи функциональной области включить PWF 36.2, то все работает. Но к панели еще подключены несколько частотников, для которых используется команда х06. Подскажите как при помощи макроса управлять МУ не трогая PWF 36.2?
    Сформировать в макросе команду "0х10" модбас вместо стандартной функции Write()

    ЗЫ.
    Делал когда-то для СП270 и МУ
    Код:
    //В примере адрес устройства равен 176
    //Данные с маской выхoдов  МУ в регистре PSW300
    //*************************************************
    BYTE snd[11]={0xB0,0x10,0x00,0x32,0x00,0x01,0x02};//буфер для посылки команды slave
    //[0]-адрес устройства(0xB0) 176
    //[1]-Код функции ModbusRTU 0x10 -запись нескольких регистров
    //[2]-ст.байт адреса начального регистра(0x00)
    //[3]-мл.байт адреса начального регистра(0x32) 50
    //[4]-ст.байт количества регистров(0x00)
    //[5]-мл.байт количества регистров(0x01)
    //[6]-количество байтов(0x02)
    //[7]-ст.байт значения в регистре(Определим ниже)
    //[8]-мл.байт значения в регистре(Определим ниже)
    //[9]-ст.байт CRC(Определим ниже)
    //[10]-мл.байт CRC(Определим ниже)
    
    BYTE rcv[8];//буфер для приема ответа от slave
    //[0]-адрес устройства
    //[1]-Код функции ModbusRTU-чтение нескольких регистров 0x10
    //[2]-ст.байт адреса начального регистра(0x00)
    //[3]-мл.байт адреса начального регистра(0x32)
    //[4]-ст.байт количества регистров(0x00)
    //[5]-мл.байт количества регистров(0x01)
    //[6]-ст.байт CRC
    //[7]-мл.байт CRC
    
    snd[7]=HIBYTE(PSW[300]);
    snd[8]=LOBYTE(PSW[300]);
    snd[9]=HIBYTE(Crc(snd,9));//дополнить команду CRC, сначала Hi
    snd[10]=LOBYTE(Crc(snd,9));//затем Lo
    //Crc() -внутренняя функция, ее писать не надо
    
    Enter(PLC);//Захватить порт PLC
    Send(PLC,snd,11);//Отправить команду
    Receive(PLC,rcv,8,1000,6);//Получить ответ (тайм-аут 1000мс)
    Leave(PLC);//Освободить порт
    Последний раз редактировалось petera; 22.04.2022 в 09:35.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #3

    По умолчанию

    К сожалению, я не программист. Не могли бы Вы пояснить как сформировать такую команду при помощи макроса.

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

    По умолчанию

    Цитата Сообщение от Anchar Посмотреть сообщение
    К сожалению, я не программист. Не могли бы Вы пояснить как сформировать такую команду при помощи макроса.

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

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

    По умолчанию

    Ниже полный код макроса для модуля МУ110, включающий сигнальную лампу в случае превышения уставки.


    Код:
    // (c) PeterA
    //В примере адрес устройства равен 2
    //*************************************************
    BYTE snd[11]={0x02,0x10,0x00,0x32,0x00,0x01,0x02};//буфер для посылки команды slave
    //[0]-адрес устройства(0x02) 2
    //[1]-Код функции ModbusRTU 0x10 -запись нескольких регистров
    //[2]-ст.байт адреса начального регистра(0x00)
    //[3]-мл.байт адреса начального регистра(0x32) 50
    //[4]-ст.байт количества регистров(0x00)
    //[5]-мл.байт количества регистров(0x01)
    //[6]-количество байтов(0x02)
    //[7]-ст.байт значения в регистре(Определим ниже)
    //[8]-мл.байт значения в регистре(Определим ниже)
    //[9]-ст.байт CRC(Определим ниже)
    //[10]-мл.байт CRC(Определим ниже)
    
    BYTE rcv[8];//буфер для приема ответа от slave
    //[0]-адрес устройства
    //[1]-Код функции ModbusRTU-чтение нескольких регистров 0x10
    //[2]-ст.байт адреса начального регистра(0x00)
    //[3]-мл.байт адреса начального регистра(0x32)
    //[4]-ст.байт количества регистров(0x00)
    //[5]-мл.байт количества регистров(0x01)
    //[6]-ст.байт CRC
    //[7]-мл.байт CRC
    
    WORD A=3;
    
    //Тут начало алгоритма
    snd[7]= 0;	//ст.байт маски
    if (PSW[256]>=A)	{
    	snd[8]= 1;		//мл.байт маски 
    	snd[9]=HIBYTE(Crc(snd,9));//дополнить команду CRC, сначала Hi
    	snd[10]=LOBYTE(Crc(snd,9));//затем Lo
    //Crc() -внутренняя функция, ее писать не надо
    }
    else	{
    	snd[8]= 0;		//мл.байт маски 
    	snd[9]=HIBYTE(Crc(snd,9));//дополнить команду CRC, сначала Hi
    	snd[10]=LOBYTE(Crc(snd,9));//затем Lo
    //Crc() -внутренняя функция, ее писать не надо
    }
    Enter(PLC);//Захватить порт PLC
    Send(PLC,snd,11);//Отправить команду
    Receive(PLC,rcv,8,1000,6);//Получить ответ (тайм-аут 1000мс)
    Leave(PLC);//Освободить порт
    Последний раз редактировалось petera; 22.04.2022 в 10:06.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  6. #6

    По умолчанию

    Огромное спасибо. Все работает!

Похожие темы

  1. ПЛК110-60 + МВ110-32ДН+МУ110-16Р+МУ110-8И Проблема Modbus RTU
    от Diesel_spb в разделе ПЛК (среда MasterSCADA 4D)
    Ответов: 11
    Последнее сообщение: 14.12.2021, 05:24
  2. ПЛК 150-И-М +СП307-Б
    от Виталий Попович в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 23.03.2018, 11:03
  3. Ответов: 43
    Последнее сообщение: 19.06.2017, 07:29
  4. СП307+ПЧВ
    от pedro93 в разделе Панели оператора (HMI)
    Ответов: 35
    Последнее сообщение: 31.07.2016, 22:02
  5. Ответов: 5
    Последнее сообщение: 29.06.2013, 23:04

Ваши права

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