Вопрос: работает ли PFW26.2 в эмуляторе? Панели на руках нет, пытаюсь поменять уставку на ТРМ202 через эмулятор, не получается.
Вид для печати
1. Правильный бит - PFW36.2
2. Насколько я помню панель нужно перезагрузить (Выключить и включить).
Если запускать каждый раз эмуляцию онлайн из конфигуратора, то это эквивалентно загрузке нового проекта в панель, а нужно после включения PFW36.2 выключить и включить панель с одним и тем же проектом.
ЗЫ
Повторное включение эмулятора
Найдите папку AutoWin там где установлен конфигуратор и запускайте AutoWin.exe
Эмулятор загрузит последнюю эмуляцию и с сохраненным состоянием регистров PWF.
А будет ли эффект для 0x10 функции не знаю.
ЗЫ
Проверил через монитор порта
Эмулятор переключение функции через PFW36.2 не поддерживает.
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, благодарю за макрос. Как подправить, чтобы писал в регистр 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(Определим ниже)
Добрый день.
Правильно ли я понимаю, что макрос можно вызывать не чаще одного раза в секунду ?
Что означает вызов макроса без первой паузы ?
Речь идет о ф.области с условием "Циклическая"?
Условие "Циклическая" использует внутренний счетчик, который считает заданное количество импульсов от системного бита PSB4 - меандр с периодом 1с, т.е. 500 мс "0", 500 мс "1".
По этому и ограничение в 1 с - меньше одного импульса посчитать нельзя.
Однако если использовать режим от Бита управления, то можно в качестве таких бит взять системные биты PSB3(импульсы с периодом 100 мс) или PSB6(импульсы с периодом 300 мс) и получить вызовы макроса каждые 100 мс или 300 мс.
По второму вопросу.
Если включена галка "Без первой паузы", то цикл начинается с вызова функций, например макроса, затем пауза.
Если галка "Без первой паузы" выключена, то цикл начинается с паузы, затем вызов, например макроса.
Эта настройка в основном нужна, когда в дополнение к циклическому выполнению используется бит разрешения
Вложение 45932
Т.е. если бит разрешения установлен, то от момента установки бита разрешения
ЗЫ,Цитата:
Если включена галка "Без первой паузы", цикл начинается с вызова функций, например макроса.
Если галка "Без первой паузы" выключена, цикл начинается с паузы, затем вызов, например макроса.
Чуть не забыл
Можно вызывать макрос "Максимально часто" - с периодом сканирования экрана, если использовать режим непрерывно!
Вложение 45933
Здесь тоже можно управлять вызовом через бит разрешения.