Необходима помощь в написании правил для WB7 и WBIO-DI-WD-14

Добрый день! Т.к. совсем не дружу с JS необходима помощь в написании правила для WB7.
Суть задачи простейшая. К WB7 подключен модуль WBIO-DI-14 по RS485 через WB-MIO-E v.2. Но при стандартной настройке счетчики на нем считают сингалы по переднему и заднему фронту.

  1. Необходимо правило, которое переводит все счетчики на работу по переднему фронту.
    И второй момент, когда счетчик набирает количество в 65535, то он обнуляется. Видимо это связано с типом данных переменной в которую пишет счетчик.
  2. Необходимо правило, которое не даст счетчику обнуляться.
    Заранее благодарю за помощь!

Один из концептуальных вариантов:

  1. Создать перменную хранящую данные после обесточивания контроллера.
  2. При не обходимости разово присваиваете начальное значение.
  3. Наращиваете значение переменной при изменении необходимого топика.
  4. Выводите значение переменной куда хотите.

Пример:
// п.1
var psWM = new PersistentStorage(“water_meters”, {global: false});
// п.2
psWM[“HVS_big”] = 3870; // Закоментировать после определения начального значения
// п.3
defineRule(“water_meter_1”, {
whenChanged: “MWAC1/S1 Counter”, //Заменить на свой топик
then: function(newValue, devName, cellName) {
psWM[“HVS_big”]++; //Инкримент переменной
}
});

Не припомню у WBIO-DI-14 настройки фронтов (передний/задний)

Благодарю, будем пробовать. По поводу фронтов, если подключить модуль не по rs485, а по внутренней шине, то при настройке счетчиков появляется возможность выбрать на какие фронты считать.

Пока не получилось:( А по фронтам есть варианты?

Добрый день.
Правильно ли я понимаю, что вы используете WBIO-DI-WD-14?

Про какие счетчики вы имеете ввиду?

Данный функционал появляется при настройке входа в качестве счетчика. И там можно выбрать фронт срабатывания счетчика импульсов.

Опишите подробнее, что делаете и что хотите получить. Так совсем не понимаю.

Речь о каком счетчике?

  1. Да мы используем WBIO-DI-WD-14 (Подключен он у нас не напрямую к WB а через WB-MIO-E v.2 по rs485. Адрес 41)

  2. Мы имеем в виду счётчики которые автоматически появляются при подключении WD-14 по RS485 (Фото во вложении)

  3. Да, совершенно верно данный функционал появляется, но только в случае прямого подключения модуля к WB, а не по RS485.


  4. Нам нужно считать дискретные сигналы с контактов на станке. Соответственно одно срабатывание по переднему фронту = одна обработанная деталь, а он у нас считает по обоим фронтам, поэтому приходится делить на 2:)

  5. И есть еще одна проблема. Т.к. станок обрабатывает в минуту около 50 заготовок, то за незначительное время набирается большое число на счетчике. И когда оно достигает 65535, то счетчик начинает считать с нуля. Мы бы хотели что бы он продолжал считать дальше.

В случае работы через шлюз, я думаю, принципиально не получится реализовать правило для счетчика по переднему или заднему фронту, т.к. эти самые фронты через Modbus точно будут не все. А вот работа по счетчику самое то. Для этого его и реализовали. Ваш вариант деления на 2 тоже рабочий.

В карте регистров на шлюз указано, что счетчик может принимать значения от 0 до 65535.