Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | личка на форуме - не подходит
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | личка на форуме - не подходит
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Здравствуйте. Панель СП307 (Master) работает с реле ПР200 (Slave). Подскажите пожалуйста, как реализовать остановку выполнения программы ПР200 при ошибке (потери) связи или отключении питания панели СП307. Может с помощью функциональной области с непрерывной передачей (присвоением значения) системного бита панели PSB51 или как-то ещё? То есть, чтобы при отключении панели, неисправности панели или потери связи панели с реле, программа в ПР200 прекращала выполнение.
Последний раз редактировалось yupa; 13.11.2019 в 16:48.
ЗЫ
Проверил через монитор порта
Эмулятор переключение функции через PFW36.2 не поддерживает.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
petera, спасибо за ответ и за эксперименты. Про перезагрузку панели не знал, думал, что биты PFW26.2 и PFW36.2 можно менять на лету. Т.е., ежели у меня кроме ТРМов на панель навешены другие слейвы, писать в них функцией 0х06 не получится?
Кста, бит PFW26.2 потому что ТРМ я прикрутил к порту download. Бит PFW36.2 -- для порта PLC.
Использовать 0х10 функцию записи без PFW26.2/36.2 только для ТРМов можно если использовать макрос низкоуровневого формирования команды 0х10
Делал когда-то для СП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; 19.11.2019 в 13:52.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
petera, благодарю за макрос. Как подправить, чтобы писал в регистр 4х4, дотумкаю. Но в любом случае для изменения уставок ТРМ придётся ждать живой панели. Эмулятор не поддерживает макросы.
BYTE snd[11]={0x01,0x10,0x00,0x04,0x00,0x01,0x02};//буфер для посылки команды slave
//[0]-адрес устройства(0x01) 1
//[1]-Код функции ModbusRTU 0x10 -запись нескольких регистров
//[2]-ст.байт адреса начального регистра(0x00)
//[3]-мл.байт адреса начального регистра(0x04) 4x4
//[4]-ст.байт количества регистров(0x00)
//[5]-мл.байт количества регистров(0x01)
//[6]-количество байтов(0x02)
//[7]-ст.байт значения в регистре(Определим ниже)
//[8]-мл.байт значения в регистре(Определим ниже)
//[9]-ст.байт CRC(Определим ниже)
//[10]-мл.байт CRC(Определим ниже)
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
В функциональной области математическая операция деления на "0" что даст? Мне нужно делить на содержание переменной и там может быть "0". Переменные целочисленные.