Работа ПЛК Wecon с модулем расширения LX3V-4AD | ПЛК и АСУТП

Я уже рассказывал про железо и программирование ПЛК производства китайской компании Wecon. Недавно я написал небольшую программку для системы из ПЛК Wecon LX3V-1208, подключенному к нему модулю расширения аналогового ввода Wecon LX3V-4AD и сенсорной панели PI8070 производства этой же компании.

Работу выполнял по интернету, для другого полушария. ПЛК Wecon LX3V (правда, модели LX3V-0806) у меня имелся свой, а модуль расширения LX3V-4AD и сенсорную панель PI8070 видел только по скайпу. Тем не менее, все получилось.

 

Железо Wecon LX3V-4AD

1. LX3V-4AD это модуль аналогового ввода, работает с ПЛК Wecon LX3V по его внутренней шине.
Выглядит он так:
Wecon-LX3V-4AD

Краткие характеристики модуля:

  • 4 дифференциальных канала аналогового ввода
  • Три диапазона измерения: -10…+10В, -20…+20мА и 4…20 мА
  • АЦП 16 бит

2. Работа модуля возможна только с ПЛК Wecon серии LX3V начиная с модели LX3V-1208. То есть с теми, что имеют разъем для подключения модулей расширения. Мой самый простой и дешевый LX3V-0806 такого разъема не имеет, а потому к нему нельзя подключить LX3V-4AD.

3. Подключение сигналов разных типов к модулю осуществляется по разному, например:

LX3V-4AD подключение

Тут к каналу CH1 подключен аналоговый сигнал, а к CH3 вольтовый.

4. При наладке программы, которая использует аналоговые сигналы, нужно использовать прибор-задатчик тока. Пока программа не написана и не отлажена, подключать сразу реальный прибор смысла нет. Допустим, программа должна принимать данные от датчика давления 4..20 мА. Подключил реальный датчик и видишь, что давление атмосферное. Классно, и что? Нужно прогнать работу программы по всей шкале датчика, посмотреть, как отрабатывается алгоритм. В таком случае без задатчика тока никак.

Если задатчика нет( как у меня, например) то можно самому спаять некоторое его подобие из зарядки от старого мобильника и нескольких простых элементов:

Такой самодельный девайс успешно поможет сымитировать реальный датчик с токовым выходным сигналом- крутишь ручку потенциометра и меняешь значение на аналоговом входе модуля.

 

Программирование Wecon LX3V-4AD

Программирование модуля LX3V-4AD расписано в 10-страничном документе «USER’S MANUAL LX3V-4AD extend module». Там ничего сложного нет, но лучше прокомментировать ряд моментов.

1. Показания аналоговых входов модуля LX3V-4AD и его настройки хранятся в так называемой буферной памяти(buffer memory), расположенные там регистры называются BFM. BFM регистры являются 16-битными числами и соответствуют регистрам данных D, только доступ к BFM осуществляется командами FROM и TOP.
FROM — прочитать данные из BFM.
TOP- записать данные в BFM.

2. LX3V-4AD имеет 31 регистр BFM:

BFM#0
Задает тип каналов, число в формате HEX  из 4 разрядов. Каждый разряд содержит настройку одного из 4-х каналов.

Разряды BFM#0 Analog input Digital output Resolution Offset/Gain Constant
0 -10V~10V -2000~2000 5Mv 0/5000 1000
1 4Ma~20mA 0~1000 16μA 4000/20000 1000
2 -20mA~20mA -1000~1000 20μA 0/20000 1000
3 Disable / / / /
4 -10V~10V -10000~10000 1mV 0/5000 10000
5 4Ma~20mA 0~10000 16μA 4000/20000 10000
6 -20mA~20mA -10000~10000 20μA 0/20000 10000

Например
H3110: CH4 отключен, CH3 и CH2 4…20 мA, CH1 -10…+10 V.
H0031: CH4 и CH3 -10…+10 V, CH2 отключен, CH1 4…20 мA.

BFM#1…BFM#4
Количество выборок для усреднения значений каждого канала. Например, при BFM#3= 5 в средние значения канала CH3 будет записано число из усреднения пяти выборок текущих значений CH3.

BFM#5…BFM#8
Усредненные значения по каждому каналу. Например, усредненное значение CH4 находится в BFM#8.

BFM#9…BFM#12
Текущие значения по каждому каналу, без усреднения.

BFM#15  Скорость преобразования. 0/1 =  нормально/быстро.

BFM#16…BFM#19  Резерв, не используются.

BFM#20  Сброс настроек в настройки по умолчанию.

BFM#21   B01/B10 = разрешить/запретить  внесение данных в смещение(offset) и усиление (gain).

BFM#22   0/1 = отключить/включить смещение(offset) и усиление (gain).

BFM#23   Смещение (offset)

BFM#24   Усиление (gain)

Смещение(offset) и усиление(gain) позволяют преобразовывать входящий на канал электрический сигнал в число с заданным интервалом. При значениях по умолчанию, когда смещение и усиление отключено, измеренный сигнал на канале преобразуется в число от 0 до 1000 (разряды в BFM#0 = 0, 1 или 2 ) или в число от 0 до 10000 (разряды в BFM#0 = 4, 5 или 6) .
Но если включить и задать смещение= 4000, а усиление= 20000, то входной сигнал 4…20 мА преобразуется в число от 4000 до 20000. То есть число в текущем значении канала(BFM#9…BFM#12) будет соответствовать микроамперам входного токового сигнала.
Идея с усилением и смещением хороша и понятна, но у меня что-то не сложилось- я и выставлял, и включал offset с gain’ом, но на результатах измерения это никак не сказывалось. Не знаю, что я делал не так, времени разобраться не было, да и заказчика устраивало преобразование по умолчанию, без смещений и усилений, пока оставили так.

BFM#25…BFM#28   Резерв, не используются.

BFM#29
Ошибки измерения. BFM#29=0 ошибок нет, BFM#29>0 какая-либо ошибка при измерении. Значения ошибок указаны в документации.
Важно понимать, что в регистре ошибок не отмечается, на каком из каналов CH1…CH4 произошла ошибка. Это очень неудобно. Если все четыре канала включены и на одном из них, к примеру на CH2, сигнал вышел за заданный диапазон, то по коду можно понять только, что ошибка произошла на одном из включенных каналов, а на каком именно, неясно.

BFM#30   Идентификационный код модели. Я так понял, было две модификации модуля: с 12-битным АЦП(код 2010) и 16-битным АЦП(код 2011).

BFM#31   Версия железа(Hardware version). Что-то значит, а что, непонятно. Понятно только то, что практического значения это не имеет.

 

Разбор примера программы из «USER’S MANUAL LX3V-4AD extend module»

В документации на модуль приведена простая программка, показывающая, как работает LX3V-4AD:

Wecon LX3V-4AD программа
1. При старте программы (M8002 = 1) в регистр D4 записывается значение BFM#30, это идентификационный код модуля. Если модуль 16-битный, то BFM#30 = 2011. Как отмечалось выше, чтение данных из BFM осуществляется инструкцией FROM, запись в BFM- инструкцией TOP.

2. Инструкцией CMP сравнивается значение в D4(туда мы записали идентификационный код из BFM#30) c с числом 2011. Т.е. определяем, действительно ли модуль расширения является Wecon LX3V-4AD. Если D4 = 2011, то M1 станет равен 1.

3. Если M1 = true (см. шаг 2), то выполняются шаги 3…6. В BFM#0 записывается число 3300(hex). Это настройка каналов: CH1 и CH2 -10…+10 V, CH3 и CH4 отключены. Если бы мы хотели настроить все четыре аналоговых входа на токовый сигнал 4…20 мА, то нужно было в BFM#0 записать число 1111(hex):
TOP K0 K0 H1111 K1.
Почему эту настройку канала в тестовом примере делают каждый цикл программы, мне неясно. Логично проводить это один раз при старте программы (M8002=1), как в своем проекте сделал я.

4. В BFM#1  и BFM#2 пишется число 4. Командой TOP можно записать не один регистр, а несколько. За количество записей отвечает последний операнд инструкции. В данном случае K2 в инструкции «TOP K0 K1 K4 K2» означает «записать число 4 в буферную память по двум следующим друг за другом адресам начиная с адреса BFM#1». Тем самым мы будем усреднять значения CH1 и CH2 из 4 выборок текущих значений.
В своем проекте этот шаг, как и предыдущий, я тоже делаю один раз при старте программы  (M8002=1) а не постоянно, как в тестовом примере.

5. Записываем биты из регистра ошибок BFM#29 в битовые регистры по адресам от М10 до М25.

6. Если M10 = false и М20 = false, значит ошибок измерений не было. Тогда читаем средние значения каналов CH1 и CH2 из BFM#5 и BFM#6  и записываем их в D0 и D1 соответственно.

Что касается ошибок, может возникнуть вопрос: почему мы смотрим только значения M10 и M20, а не всех c M10 до M25, куда разложили регистр ошибок?

lx3v-4ad-prog-err

Все дело в структуре BFM#29, там все хитро.

В BFM#29 биты номер 1, 2, 3, 10, 11, 12 означают какую-то конкретную ошибку измерения. Итого, отслеживается 6 разных ошибок. Если какой-либо бит номер 1, 2 или 3 равен true, то бит номер 0 выставляется тоже в true (BFM#29.0 = BFM#29.1 or BFM#29.2 or BFM#29.3 ). Остальные биты не используются.

В шаге 5 мы записали нулевой бит BFM#29 в М10. Значит, если M10 будет равен true, то произошла одна из трех ошибок измерения.

Ну а в регистр M20 в шаге 5 мы записали бит номер 10 из BFM#29, это выход за границы измерения(Digital range error).  Если M20 = true, то вышли за допустимое значение сигнала. Например, при диапазоне 4…20 мА, BFM#29.10 = true при токовом сигнале больше 20.4 мА.

Ок, четыре ошибки отслеживаем, а с остальными двумя как быть?
BFM#29.11 выставляется при неправильном числе усреднения, если BFM#1…BFM#4 больше 4097 или меньше 0.
BFM#29.12 выставляется при запрете смещения и усиления, если BFM#21 = B10.

BFM#29.11 и BFM#29.12 в шаге 5 записываются по адресам M21 и М22 соответственно.

Так как в тестовом примере в  шаге 4 правильно выставлено количество усреднения, а запрет смещения в программе не выставлялся, то и соответствующие ошибки не проверяются.

Добавить комментарий

Ваш e-mail не будет опубликован.

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой:
Confirm that you are not a bot - select a man with raised hand:

Подпишитесь на нашу рассылку


Copyright © 2016. Перцух Алексей

Индекс цитирования