Здравствуйте!
Работаю с панелью ОВЕН СП307, и есть у меня несколько вопросов, на которые мне интересно получить ответ:
1. Когда я читал карту регистров Modbus для этой железки то нашел там такой параметр как "Пульсирующий бит 50/500/30/150 мс" в регистрах PSB, и я хотел бы узнать, а что это собственно за параметр, для чего он нужен и в каких случаях он может быть true или false?
2. Интересует вот такой момент: когда мы только подключаем панель, стоит ли галочка "Авторазмещение" в настройках регистров PFW? И если ее выключить то что будет с данными - они переместятся на ячейки, которые в карте регистров Modbus расписаны или на том же месте останутся?
Проще было вывести эти биты на индикаторы и посмотреть. Они просто мигают с заявленным периодом. PSB4 (500 ms) например, можно использовать как секундные импульсы.
Авторазмещение ставится не само, а при добавлении например Тренда, соответственно записываться тренд будет начиная с PFW4096 и далее в зависимости от глубины (длительности записи).
Всё что от PFW256 до PFW4095 можете спокойно использовать, ничего не сместится. Только не делайте запись часто. Не чаще нескольких раз в день.
Для трендов, желательно делать записи глубиной от недели до нескольких месяцев, для продления ресурса памяти.
Последний раз редактировалось kondor3000; 14.05.2023 в 11:25.
Хорошо, я вас услышал, единственное что я бы вот хотел уточнить:
Вот у меня есть программа на C#, там я работаю со всеми регистрами, PSB, PSW, c PSB я взаимодействую через ReadCoils, а с PSW и PFW - с ReadHoldingRegisters, и, если я правильно понимаю то регистры PSW и PFW имеют одну общую область, и у меня сейчас такая проблема, что с PSB и PSW все в порядке, а вот с PFW - все грустнее, данные выводятся, но это не то вообще, и вот отсюда вопрос: можно ли каким-то образом посмотреть и понять, что в какой ячейке лежит? Можно ли это сделать через конфигуратор?
Здравствуйте.
Пишу макрос для СП310
static WORD ArrValueDW[2];
static float RegFloat;
WORD Temp1;
if (GetPSBStatus(318)==1) {//1
if (Reads(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 2, &ArrValueDW)) {//2
RegFloat=*(float*)(ArrValueDW);//float
*(float*)(PSW+318)=RegFloat;//PSW[318] DWord float
RegFloat=RegFloat*10.0;
Temp1=(WORD)RegFloat;
PSW[320]=Temp1;//PSW[320] Word Dec
if (Write(PLC, 82, MODBUS_RTU_REG_4X, 186, 0, TYPE_WORD, Temp1)) {//Wr adr 0x0080+58=186
ResetPSB(318);
} //Wr
}//2
}//1
При вводе данных в PFW[300] устанавливается бит PSB[318] и панель сразу зависает ( не реагирует на нажатия)...что я делаю не так?
Здравствуйте, Kondor. Подскажите поподробней по поводу глубины записи для трендов. Т.е. делать максимальное количество срезов? Я не совсем понимаю как на самом деле происходит запись. Разве не все равно - вроде ячейка счетчика адреса (или как-то так - циклический буфер,..) будет постоянно перезаписываться, следовательно регистры где хранятся данные будут практически не меняться, а эти ячейки также ушатаются? Или я не прав? Моя конкретная задача писать 10-20 переменных флоат раз в секунду - это реально?
Энергонезависимая память в панели PFW, заявлено на 70 000 циклов перезаписи.
Если вы выделите 20 регистров, и пишите циклическим буфером раз в секунду, то можете их убить за 2-3 недели, если сделаете глубину один день, посчитав сколько надо регистров, то регистры перезапишутся раз в день.
Глубина на месяц, уменьшит количество перезаписей, до раза в месяц, и продлит работу памяти до более 100 лет (можете сами посчитать).
Одна запись это например, 12 Float (по 2 регистра)=24 + 6 регистров метка времени =30 регистров, умножаете на кол-во секунд в день ( неделю или месяц)+ 4 регистра циклический буфер + 1 запись сверху.
Пример подсчёта регистров https://owen.ru/forum/showthread.php...&page=158#1573
Последний раз редактировалось kondor3000; 17.01.2024 в 16:26.
Спасибо за ответ. Про глубину понял. А вот регистры метки времени и циклического буфера - это PFW? Не будет ли износ именно этих регистров или они тоже как-то распределенно пишутся?