1. Правильный бит - PFW36.2
2. Насколько я помню панель нужно перезагрузить (Выключить и включить).
Если запускать каждый раз эмуляцию онлайн из конфигуратора, то это эквивалентно загрузке нового проекта в панель, а нужно после включения PFW36.2 выключить и включить панель с одним и тем же проектом.
ЗЫ
Повторное включение эмулятора
Найдите папку AutoWin там где установлен конфигуратор и запускайте AutoWin.exe
Эмулятор загрузит последнюю эмуляцию и с сохраненным состоянием регистров PWF.
А будет ли эффект для 0x10 функции не знаю.
Последний раз редактировалось petera; 18.11.2019 в 15:40.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
ЗЫ
Проверил через монитор порта
Эмулятор переключение функции через PFW36.2 не поддерживает.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП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/ПетрАртюков
Библиотека ГМ для СП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/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Добрый день.
Правильно ли я понимаю, что макрос можно вызывать не чаще одного раза в секунду ?
Что означает вызов макроса без первой паузы ?
Речь идет о ф.области с условием "Циклическая"?
Условие "Циклическая" использует внутренний счетчик, который считает заданное количество импульсов от системного бита PSB4 - меандр с периодом 1с, т.е. 500 мс "0", 500 мс "1".
По этому и ограничение в 1 с - меньше одного импульса посчитать нельзя.
Однако если использовать режим от Бита управления, то можно в качестве таких бит взять системные биты PSB3(импульсы с периодом 100 мс) или PSB6(импульсы с периодом 300 мс) и получить вызовы макроса каждые 100 мс или 300 мс.
По второму вопросу.
Если включена галка "Без первой паузы", то цикл начинается с вызова функций, например макроса, затем пауза.
Если галка "Без первой паузы" выключена, то цикл начинается с паузы, затем вызов, например макроса.
Эта настройка в основном нужна, когда в дополнение к циклическому выполнению используется бит разрешения
Захват-1.png
Т.е. если бит разрешения установлен, то от момента установки бита разрешения
ЗЫ,Если включена галка "Без первой паузы", цикл начинается с вызова функций, например макроса.
Если галка "Без первой паузы" выключена, цикл начинается с паузы, затем вызов, например макроса.
Чуть не забыл
Можно вызывать макрос "Максимально часто" - с периодом сканирования экрана, если использовать режим непрерывно!
Захват-2.png
Здесь тоже можно управлять вызовом через бит разрешения.
Последний раз редактировалось petera; 03.12.2019 в 14:21.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg