Русский
Русский
English
Статистика
Реклама

Промышленная автоматизация

Делаем симулятор двухпозиционного регулятора на JavaScript

19.11.2020 16:18:00 | Автор: admin
Суть теории автоматического управления подразумевает построение такой системы, которая поддерживает определенный параметр некоторого объекта в заданном состоянии, например, температуру в печи, или уровень воды в баке. Для лучшего понимания процесса, удобно сразу рассмотреть конкретную модель управления, скажем, управление уровнем воды в баке. Кстати, в учебниках и статьях по ТАУ этот процесс упоминается довольно часто как отсылка к истории, потому что в далеком 1763 году русский изобретатель Ползунов И.И. разработал для своего парового двигателя систему контроля уровня воды. Своего рода классический регулятор, который, кстати, и является по сути двухпозиционным регулятором как на этой картинке (воды нет клапан открыть, вода есть клапан закрыть)

Двухпозиционный он потому, что имеет 2 позиции: открыт (включен) и закрыт (выключен), в англоязычной литературе on-off. Бывают и трех и более позиционные регуляторы, то есть к основным положениям клапан пополнения воды открыт или закрыт, добавляется еще положение приоткрыт. После слива воды в унитазе поплавок опускается, открывая полностью клапан и вода поступает в бак на полном напоре, но ближе к достижению заданного уровня, поплавок поднимается призакрывая клапан и уменьшая поступление воды. И как только текущий уровень воды ( в английском языке PV Process Value Текущее значение) поднимется до заданного (в английском языке SP Set Point Уставка), клапан закроется и уровень воды перестанет расти. В описанном случае регулятор даже более похож на пропорциональный регулирующее воздействие уменьшается при уменьшении рассогласования (ошибка error), то есть разницы между заданным уровнем и уровнем текущим.

Приоткрывая нижнюю трубу на слив воды, можно будет добиться такого состояния, когда клапан будет открыт полностью, а уровень воды не будет уменьшаться (то есть приток воды станет равным истоку) система войдет в состояние равновесия. Но проблема в том, что это состояние очень шаткое любой внешнее возмущающее воздействие может сломать это равновесие скажем мы можем зачерпнуть из бака некоторое количество воды, и тогда может так получиться что вся вода после этого вытечет из бака (засчет изменения давления), либо труба пополнения забьется и поток уменьшится, либо поплавок сломается и вода перельется. В этом и заключается сложность построения систем управления реальные системы довольно сложные и имеют много характеристик, которые нужно учитывать. Есть такая характеристика как инерционность системы если отключить разогретую плиту то она будет оставаться горячей довольно продолжительное время, именно поэтому для управления температурой используют более сложные регуляторы, а именно ПИД пропорционально интегрально дифференциальный. У каждой из составляющих есть свои особенности они все по-разному себя ведут при разных условиях, но в совместном использовании позволяют добиться довольно четкого регулирования. Все эти системы просчитываются по формулам, но в данном случае просто важно понимать, как поведет себя система при изменении коэффициентов ПИД регулятора: при увеличении пропорционального звена начальное воздействие увеличивается и таким образом система сможет быстрее достичь необходимых параметров. Но если переборщить с этим, то возможно появится перерегулирование, что может быть еще хуже чем малое быстродействие системы.

За время существования ТАУ были найдены математические описания многих процессов и теперь мы можем предугадать как поведет себя система при определенных обстоятельствах. Существует множество программ-симуляторов, где можно задать параметры системы, задать параметры регулятора и примерно увидеть что из этого выйдет. Гуляя по просторам интернета наткнулся на сайт Excel для инженеров, и там есть несколько симуляторов регуляторов, благодаря которым можно посмотреть на изменение в процессе при изменении коэффициентов регулирования. Наиболее простой для повторения был, естественно, регулятор ON-OFF, то есть по-русски двухпозиционный регулятор. Напоминаю принцип работы: если текущая величина процесса (Process value = PV) -температура, например ниже уставки (SP), то регулятор включается (OP) запускаются тэны на полную мощность. Как только температура достигает уставки регулятор отключает подачу напряжения на тэны.

Делаем симулятор на JavaScript


Для построения графика буду использовать библиотеку ZingChart пользоваться ей оказалось довольно просто и легко. Есть много примеров в документации по которым можно построить вообще все что угодно. Принцип построения довольно простой есть массив значений, которые автоматически ложатся на график по порядку, и таким образом из пары сотен точек появляется непрерывный график процесса. Кстати в оригинале в экселе все делается точно так же генерируется 300 значений и строится график.

Собственно именно генерация значений и является самым сложным, а именно сложность правильно описать процесс, который правильно реагирует на наши управляющие воздействия включение тэнов температура растет, выключение падает, плюс сюда же нужно заложить инерционность системы. Кроме того среда нагрева может быть разная и некоторые среды быстрее нагреваются и остывают, а некоторые наоборот, а если регулируем уровень, то при одинаковом потоке сверху, уровень подниматься будет выше в том баке, где площадь дна меньше. Это все я веду к тому, что процесс будет зависеть и от коэффициента передачи (усиления). В оригинале в процесс введен еще параметр задержки (ну типа система не сразу реагирует на управляющий сигнал), но я решил от него отказаться достаточно и двух. Зато добавил изменение уставки, хотя по сути получилось что уставка может меняться от нуля до 100, свыше 100 процесс начинает вести себя не так, и судя по всему причина в том что формула процесса универсальная и не описывает частный случай. В общем приступаем:

Создаем 5 полей для ввода параметров, все это помещаем в таблицу, которую выше в css окрашиваем в красивый цвет и помещаем по центру:
<table align="center" oninput="setvalues ();"><tr><td>Process parameters <br>Gain: <input id="gain" type="number" value ="1" ><br>Time Constant: <input id="time" type="number" value ="100" ><br></td><td>Control parameters <br>SetPoint(0-100): <input id="sp" type="number" value ="50"><br>Hysteresis: <input id="hyst" type="number" value ="1">%<br></td><td>Plot parameters <br>Points: <input id="points" type="number" value ="200"><br></td></tr></table>

Как видно при каждом изменении значения полей внутри таблицы будет вызываться функция setvalues(). В ней мы считываем данные из каждого поля в специальные переменные
let gain = document.getElementById('gain').value;let time = document.getElementById('time').value;let sp = document.getElementById('sp').value;let points = document.getElementById('points').value;let hyst = document.getElementById('hyst').value;

Как уже говорилось для построения графика нужны массивы с данными на основании которых и будет строиться график, поэтому создаем кучку массивов:
let pv = []; // массив данных процесса let pv100 = []; //то же но *100let op = []; // управляющий сигнал 1 вкл, 0 выклlet pvp = 0; //предыдущее значение процессаlet low = sp-sp*hyst/100;//нижняя граница гистерезисаlet high = +sp+(sp*hyst/100); // верхняя граница гистерезисаlet st=true; // старт нагрева

Немного поясню за гистерезис. Ситуация такая: когда температура достигает заданного значения, тэны отключаются и сразу же (на самом деле не сразу, т.к. есть инерция) начинается процесс остывания. И остыв на один градус а то и некоторую долю градуса система понимает что уже снова вышла за рамки задания и нужно снова включать тэны. В таком режиме тэны будут включаться и выключаться очень часто, может быть и такое что несколько раз за минуту для оборудования такой режим не очень хороший, и поэтому чтобы исключить такие колебания вводят так называемый гистерезис deadband зона нечувствительности скажем 1 градус выше и ниже уставки мы не будем реагировать, и тогда количество переключений можно значительно сократить. Поэтому в переменной low находится нижняя граница уставки, а в high верхняя. Переменная st отслеживает достижение верхнего уровня и позволяет снизиться процессу до нижнего. Логика всего процесса находится в цикле:
for (var i=0;i<points;i++) {if (pvp<=(low/100)) {st=true;op[i]=1;}//else if (pvp<=(high/100)&& st) op[i] = 1;else { st=false; op[i]=0;}let a = Math.pow(2.71828182845904, -1/time);let b = gain*(1 -a);pv[i] = op[i]*b+pvp*a;pv100[i] = pv[i]*100;pvp = pv[i];}

По итогу мы получаем массив с заданным количеством точек, который отправляем скрипту построения графиков.
scaleX: { zooming: true  },      series: [{ values: op , text: 'OP' },        { values: pv100 , text: 'PV'}      ]    };

Полный код под спойлером
<!DOCTYPE html><html> <head>  <meta charset="utf-8">  <title>График</title>   <script src="http://personeltest.ru/aways/cdn.zingchart.com/zingchart.min.js"></script>  <style>    html,    body,    #myChart {      width: 100%;      height: 100%;    }input {width: 25%;text-align:center;}td {background-color: peachpuff;text-align: center;}  </style></head><body><table align="center" oninput="setvalues ();"><tr><td>Process parameters <br>Gain: <input id="gain" type="number" value ="1" ><br>Time Constant: <input id="time" type="number" value ="100" ><br></td><td>Control parameters <br>SetPoint(0-100): <input id="sp" type="number" value ="50"><br>Hysteresis: <input id="hyst" type="number" value ="2">%<br></td><td>Plot parameters <br>Points: <input id="points" type="number" value ="250"><br>Animation: <input type="checkbox" id="animation"></td></tr></table><script>setTimeout('setvalues ()', 0);function setvalues (){let gain = document.getElementById('gain').value;let time = document.getElementById('time').value;let sp = document.getElementById('sp').value;let points = document.getElementById('points').value;let hyst = document.getElementById('hyst').value;let anim = document.getElementById('animation').checked ? +1 : 0;let pv = []; // массив данных процесса let pv100 = []; //то же но *100let op = []; // управляющий сигнал 1 вкл, 0 выклlet pvp = 0; //предыдущее значение процессаlet low = sp-sp*hyst/100; //нижняя граница гистерезисаlet high = +sp+(sp*hyst/100); //верхняя граница гистерезисаlet st=true; // старт нагреваfor (var i=0;i<points;i++) {if (pvp<=(low/100)) {st=true;op[i]=1;}else if (pvp<=(high/100)&& st) op[i] = 1;else { st=false; op[i]=0;}let a = Math.pow(2.71828182845904, -1/time);let b = gain*(1 -a);pv[i] = op[i]*b+pvp*a;pv100[i] = pv[i]*100;pvp = pv[i];}ZC.LICENSE = ["569d52cefae586f634c54f86dc99e6a9", "b55b025e438fa8a98e32482b5f768ff5"];    var myConfig = {    type: "line",    "plot": {"animation": {          "effect": anim,          "sequence": 2,          "speed": 200,        }},legend: {    layout: "1x2", //row x column    x: "20%",    y: "5%",}, crosshairX:{   plotLabel:{     text: "%v"   } },      "scale-y": {    item: {      fontColor: "#7CA82B"    },    markers: [ {        type: "area",        range: [low, high],        backgroundColor: "#d89108",        alpha: 0.7      },{        type: "line",        range: [sp],        lineColor: "#7CA82B",        lineWidth: 2,  label: { //define label within marker          text: "SP = "+sp,          backgroundColor: "white",          alpha: 0.7,          textAlpha: 1,          offsetX: 60,          offsetY: -5        }      }]},scaleX: {zooming: true},  'scale-y-2': {  values: "0:1"},      series: [{ scales: "scale-x,scale-y-2", values: op , 'legend-text': 'OP' },        { values: pv100 , text: 'PV'}      ]    };     zingchart.render({      id: 'myChart',      data: myConfig,      height: "90%",      width: "100%"    });}</script>  <div id='myChart'></div></body> </html>



Ну а поскольку симулятор готов, самое время заценить как он работает.
Стандартная настройка: усилительное звено 1, постоянная времени 100 секунд, гистерезис 2%

Теперь если задать уставку побольше, например 92, то внезапно процесс сильно замедляется, хотя при этом уставку 50 он набирает за те же 71 секунды, но уже потом кривая начинает приближаться к заданию медленнее по экспоненциальной зависимости, и доходит до уставки лишь за 278 секунд, из-за чего пришлось расширить диапазон построения графика до 300 точек

Данный пример очень показательный, переводя ситуацию на модель с температурой можно сделать такой вывод, что не хватает мощности нагревателя: нагреватель загружен на 100% но при этом температура перестает расти после определенного момента. Решений может быть несколько: поставить второй такой же нагревательный элемент, или подавать напряжение на него в 2 раза больше (но это может повредить тэн), либо поставить нагреватель в 2 раза большей мощности, либо залить в систему более теплопроводящую жидкость если речь идет о нагреве жидкости. Довольно интересно то, что если нужно поддерживать температуру в районе 95-100 градусов, то не нужно даже ставить регулятор поставил такой маломощный нагреватель, врубил его на полную катушку и все через 300 секунд (условные 300 секунд) можно получить желаемые 100 градусов. Проблема такой системы в том что если открыть окно зимой в минус 40, то температура тут же просядет и довольно существенно, да и быстродействие такой системы очень малое.

Давайте увеличим усилительное звено gain в 2 раза это как будто поставить второй такой же нагревательный элемент, или добавить еще одну трубу на пополнение бака.

График получился тоже довольно показательный температура до 51 градуса реально добралась в 2 раза быстрее, а вот до 92 добралось раза в 4 быстрее. Не знаю насколько такой симулятор приближен к реальным процессам, но поскольку заданная в нем зависимость экспоненциальная, то это вполне ожидаемое поведение системы, но вот объяснить с позиции добавления второй трубы и увеличение скорости заполнения в 4 раза я даже не могу предположить. Реакция линейной функции была бы более предсказуемой на увеличение коэффициента, но реальные системы в жизни редко бывают линейными
Подробнее..

Встраиваемый компьютер AntexGate. От прототипа к серийному производству

08.07.2020 14:22:16 | Автор: admin
image

Не так давно мы с командой разработали небольшой встраиваемый компьютер для решения задач IIoT и промышленной автоматизации. Первую статью о нашем устройстве можно посмотреть здесь.

Разрабатывать устройство решили на распространенном и оттестированном модуле Raspberry CM3+, что позволило нам создать компьютер с большими вычислительными способностями, огромным сообществом и простотой его использования. Под катом расскажу по этапам, от чего отталкивались и к чему пришли в итоге.

Муки выбора корпуса


Для устройств даже в промышленной сфере очень важен внешний вид устройства и законченность, таким образом начались долгие поиски корпуса, подходившие под наши требования по размеру. Хотелось максимально много уместить в одну коробку и самые минимальные параметры платы получались 10*10 см.

После того, как мы заказали несколько вариантов корпусов, пришлось большее количество из них выбросить, так как они подходили только для домашних поделок и продавать их людям в таком виде не представлялось возможным. Основным претендентом на тот момент стал алюминиевый корпус с пластиковыми крышками 10*10*5 см (рисунок 1).

image
Рисунок 1 Первый вариант корпуса

Получив этот корпус в руки, было принято решение остановиться на нем. В этот же момент разработка платы подходила к концу и уже можно было по чертежам предварительно оценить, каким образом обрабатывать торцы для выводных разъемов. Однако пластиковые крышки корпуса после механической обработки сделали вид не товарным и мы опять пришли к поделке, а не к законченному коммерческому продукту.

Глянец весь быстро поцарапался и в этой блестящей рамке отверстия выглядели очень асимметрично (рисунок 2). Ожидание и реальность, как говорится.

image
Рисунок 2 Пластиковые крышки корпуса

Однако отказываться от корпуса не пришлось, потому что у производителя был такой же, но с алюминиевыми торцами, мы быстро его заказали и удивились, насколько он идеально выглядел (рисунок 3). Торцы очень красивые, матовые и бонусом была дополнительная помехозащищенность. Стоил такой корпус уже немного дороже, но красота требует жертв.

image
Рисунок 3 Металлический корпус

Вторая попытка обработать торцы была гораздо удачнее. Технологию надписей мы выбрали путём гравировки (рисунок 4), однако были недостатки которые пришлось решать. Самое главное это то, что гравер (сверло) очень маленький и нежный, скорость нанесения гравировки достаточно низкая. Плюс само сверло часто ломается. Из-за всего этого сильно растёт цена из-за потребляемой электроэнергии и трудозатрат. Также внутрь гравировки набивается грязь и постепенно окисляется алюминий, делая надписи менее заметными.

image
Рисунок 4 Гравировка металлического корпус

Эту технологию пробовали менять на лазерную гравировку, но получилось некрасиво. Лазер выжигал краску некорректно, а надписи получались темными.

В итоге мы пришли к шелкографии с запеканием в печи (рисунок 5). Эта технология оказалась самой быстрой и очень крепкой. Всё свелось к тому, чтобы заказать единожды шаблон (фотовывод) и по нему делать партию до 50 штук в день.

image
Рисунок 5 Шелкография корпуса

Исправление недоработок


С корпусом закончили, а вот с платой оставались недоработки. Задумка нашего компьютера в том, чтобы любой пользователь мог спокойно установить дополнительное оборудование в устройство, открутив четыре болта на корпусе, как в свой ноутбук. Я думаю прошли те времена, когда на корпуса клеили наклеечки Не вскрывать, потеря гарантии.

Внутри корпуса есть периферия для прошивки вычислительного модуля, SIM-карта и многое другое. Однако была одна проблема с монтажом платы в корпус, а именно выводные светодиоды на ножках, которые постоянно гнулись у наших клиентов, взявших прототипы на тест (рисунок 6).

image
Рисунок 6 Выводные светодиоды на ножках

В этой связи пришлось поменять диоды на ножках на SMD-светодиоды, которые светят в бок и проблема с установкой платы в корпус решилась, больше ничего не гнулось (рисунок 7).

image
Рисунок 7 SMD-светодиоды

Индикация была глубоко внутри корпуса и чтобы увидеть свет приходилось смотреть под прямым углом на торец. В голову пришла идея световодов из полимерных прозрачных материалов (рисунок 8). Оставалось найти бюджетный, но эстетически красивый вариант. В голову пришел молочный плексиглас с прозрачностью 20% с толщиной листа 3 мм, в первой же фирме лазерной резки подобрали диаметр миниатюрного цилиндра, он был равен диаметру отверстия в корпусе. Особенность в том, что станок при лазерной резке дает небольшой скос нижнего диаметра на 0.1 мм и таким образом мы получили мешок миниатюрных усеченных конусов с нижним диаметром 2,9 мм и верхним 3 мм, а высота была 3 мм как и толщина торцов нашего корпуса. Вставляем конус в отверстие и запрессовка крепко загоняет эти световоды в отверстие, а небольшая капелька клея с обратной стороны фиксирует их намертво.

image
Рисунок 8 Световоды из плексигласа

Итак, устройство получило эстетичный вид при небольших вложениях в корпус, однако этот путь хорош на старте производства и уменьшение издержек планируется путем изготовления подобного корпуса при наращивании производства. Литье из пластика не рассматривается в виду дорогого запуска производства и низких экранирующих способностей по сравнению с металлом.

Итог


image

Спасибо за внимание! Надеемся, что мы вдохновим читателей на переработку Ваших личных проектов в более масштабное производство с коммерческими перспективами. В нашей великой стране на полочках у инициаторов пылятся действительно нужные вещи, которые могут заменять зарубежные производства.

В следующей статье мы расскажем Вам историю тестирования и тонкости настройки mPCIe 3G-модема Huawei и mPCIe LoraWan-модуля MikroTik.
Подробнее..

Встраиваемый компьютер AntexGate 3G-модем. Полезные настройки для более стабильного интернет-соединения

03.08.2020 14:12:05 | Автор: admin
image

В сфере промышленной автоматизации существует негласная парадигма, в которой многие производители промышленного оборудования делают контроллеры отдельно, а модемы отдельно. Как правило, каждое устройство помещается в свой корпус, имеет своё питание, большие габариты и высокую стоимость. Такой вариант разделения функционала имеет свои преимущества и недостатки, но, по нашему мнению, он ведет, скорее, к бльшей коммерциализации, чем обусловлен какими-то объективными причинами. Поэтому мы решили пойти немного по другому пути и сделали универсальное устройство, которое представляет из себя свободно программируемый контроллер на базе Linux с модемом в едином корпусе. Это нам позволило в своих проектах практически совсем отказаться от привычных всем щитов автоматизации и прийти к более мобильным решениям.

Под катом этой статьи мы поделимся с Вами тонкостями настройки модема и несколькими полезными скриптами для более стабильного 3G-соединения.

Предпосылки и решения


При разработке своего устройства мы руководствовались тем, что оно должно выходить в мобильный интернет, чтобы подключаться к облачным платформам. Было два пути: напаивать модем на плату, либо использовать mPCIe-разъемы. Мы остановились на втором варианте и предусмотрели сразу два mPCIe-разъема (рисунок 1), поскольку такой вариант нам показался более интересным и гибким. Ведь установка и замена модема занимает считанные секунды, плюс для пользователя появляется необходимая вариативность и он может использовать такие комбинации mPCIe-модулей, которые ему необходимы под конкретный проект. Кроме 3G-модема это может быть LoraWan или Wi-Fi модули. Плюс ко всему mPCIe-решения зарекомендовали себя как достаточно надежные и качественные.

image
Рисунок 1 mPCIe-разъемы

В качестве основного 3G-модуля для нашего устройства мы рассматривали следующие варианты:

  • MikroTik R11e-LTE6
  • Quectel EC25-E
  • YUGA CLM920 TE5
  • HUAWEI MU709s-2p

Однако после проведения тестов наиболее предпочтительным для нас в плане надежности и соотношения цена-качество оказался модем фирмы HUAWEI (рисунок 2). Мы взяли его за основу и устанавливаем опционально в наши устройства. Поэтому в дальнейшем мы будем рассматривать настройку и скрипты относительного модема этой модели. Возможно, этот скрипт будет универсальным и будет полезен для других модемов, однако стабильность работы с другими моделями не гарантируется. Для Rasbian Buster и HUAWEI MU709s-2p всё работает отлично.

image
Рисунок 2 Модем HUAWEI MU709s-2p, установленный на плату устройства

Использование скрипта для перезагрузки 3G-модема


Для более устойчивой и безотказной работы мы написали скрипт, который будет пинговать заданный IP-адрес, а если же определенное в настройках количество пингов не прошло, то GSM-модем перезагрузится, тем самым восстанавливая зависшее сетевое соединение. Стоит отметить, что модем определяется в системе как сетевая карта lan1.

Архив со всеми необходимыми файлами можно скачать по этой ссылке. Также текст самих скриптов представим ниже.

Файл check_inet.sh необходим для проверки наличия интернет соединения. Если заданный IP-адрес не пингуется, то мы дергаем 19 ногу и перезапускаем модем по питанию. Код из себя представляет следующий вид:
#!/bin/bash#count=0;#echo "Start script"#echo 19 > '/sys/class/gpio/export'while [ true ]; do# sleep 30. /home/pi/igate.conf#echo $usb_port#echo 'AT^NDISDUP=1,1,''"'$apn'"''\r\n' #echo 'AT^NDISDUP=1,1,"internet.mts.ru"\r\n' flag=0for ((i = 1; i <= $ping_count; i++)); do#for i in {1..$ping_count}; do #делаем 5 пингов до сервера#ping -I eth1 -c 1 8.8.8.8 > /dev/null || flag=$(($flag+1))ping -I $interface -c 1 $ping_ip || flag=$(($flag+1))sleep 1doneif [ "$flag" -ge "$ping_error" ]; then #если потерь пакетов больше 3х#echo "рестарт модема - начало"#count=$((count+1))#echo $count#рестарт модемаsudo ifconfig eth1 downecho 19 > '/sys/class/gpio/export'echo out > '/sys/class/gpio/gpio19/direction'echo 0 > '/sys/class/gpio/gpio19/value'sleep 1echo 1 > '/sys/class/gpio/gpio19/value'sleep 15sudo ifconfig eth1 upsleep 1#echo -en 'AT^NDISDUP=1,1,"internet.mts.ru"\r\n' > /dev/ttyUSB3#АТ команда для записи настроек точки доступа APNecho -en 'AT^NDISDUP=1,1,''"'$apn'"''\r\n' > $usb_port#echo "рестарт модема - конец"fisleep $timeoutdone 

Файл start_inet.sh запускает check_inet.sh после перезагрузки устройства:
#!/bin/bash### BEGIN INIT INFO# Provides:          start_inet# Required-Start:    $remote_fs $syslog# Required-Stop:     $remote_fs $syslog# Default-Start:     2 3 4 5# Default-Stop:      0 1 6# Short-Description: Example initscript# Description:       This service is used to manage a servo### END INIT INFOcase "$1" in     start)        echo "Starting check_inet"        sudo /home/pi/check_inet.sh > /dev/null 2>&1 &        #/home/pi/check_inet.sh        ;;    stop)        echo "Stopping check_inet"        #killall servod        sudo kill -USR1 $(ps ax | grep 'check_inet' | awk '{print $1}')        ;;    *)        echo "Usage: /etc/init.d/check_inet start|stop"        exit 1        ;;esacexit 0

Также в архиве находится файл конфигурации igate.conf

Последовательность настройки:
1. Добавьте правило соответствия физического подключения COM-порта модема к концентратору USB. Для этого поправьте файл по следующему пути:
sudo nano /etc/udev/rules.d/99-com.rules

2. Добавьте в файл следующую строку:
KERNEL==ttyUSB*, KERNELS==1-1.5:2.4, SYMLINK+=GSM

3. Сохраните правила и перезагрузите устройство. Теперь порт Вашего модема будут определять по удобному псевдониму /dev/GSM;
4. Скачайте архив по предложенной выше ссылки, либо самостоятельно создайте файлы check_inet.sh, start_inet.sh и igate.conf;
5. Скопируйте файл check_inet.sh в папку:
/home/pi/

6. Сделайте файл check_inet.sh исполняемым:
sudo chmod +x /home/pi/check_inet.sh

7. Скопируйте файл start_inet.sh в папку:
/etc/init.d/

8. Сделайте файл start_inet.sh исполняемым:
sudo chmod +x /etc/init.d/start_inet.sh

9. Обновите конфигурацию автозагрузки выполнив команду:
sudo update-rc.d start_inet.sh defaults

10. Скопируйте файл igate.conf в папку:
/home/pi/

11. Настройте файл конфигурации. Ниже представлен файл конфигурации с комментариями:
#ip-адрес пинга. Скрипт будет пытаться пинговать этот ip-адрес, если определенное в параметре [ping_error] количество пингов не прошло, скрипт будет перезагружать GSM-модем, тем самым восстанавливая зависшее сетевое соединение.ping_ip=8.8.8.8#точка доступа APN. Это адрес точки доступа Вашего интернет-провайдера, он выдается вместе с сим-картой.apn=internet.mts.ru#период проверки соединения 3G (период пинга). Период выполнения скрипта. Каждые 30 секунд будет осуществляться проверка пингов.timeout=30#количество пингов. Общее количество пингов.ping_count=5#количество неуспешных пингов для рестарта модема. Количество неуспешных пингов, после которых необходимо выполнять перезагрузку модема. Не может быть больше чем [ping_count]. Процент потерянных пакетов нужно подбирать индивидуально в зависимости от качества покрытия сети.ping_error=3#LAN интерфейс модема. Сетевой интерфейс модема, обычно на устройстве AntexGate определяется как [eth1], посмотреть название можно выполнив команду ifconfiginterface=eth1#USB порт модема. Физический USB порт к которому подключена сетевая карта, обычно на устройстве AntexGate определяется как [ttyUSB4]usb_port=/dev/GSM


Управление скриптом


Запуск в фоновом режиме файла скрипта check_inet.sh:
/etc/init.d/start_inet.sh start

Остановить check_inet.sh:
/etc/init.d/start_inet.sh stop

Скрипт также автоматически запускается после перезагрузки устройства.

Варианты применения устройства


Рассмотрим основные задачи, под которые можно использовать устройство:
  1. Контроллер с выходом в интернет для передачи данных в облако;
  2. 3G-роутер для задач в поле;
  3. Контроллер для умного дома с резервирующим каналом 3G. То есть можно использовать LAN-порт как основной канал связи, а 3G в качестве резервного, чтобы всегда был доступ к устройству;
  4. Базовая станция LoRaWAN, то есть опрос устройств по LoRaWAN и передача данных в облако через сеть 3G или LTE;
  5. Устройство для мониторинга транспорта (подключение по CAN и стыковка с различными сервисами)

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

Конвейер уникальная система мониторинга и управления для конвейерного производства

31.03.2021 14:23:38 | Автор: admin

Продуктовая компания Академпарка Сибирь Телематика получила поддержку по одному из самых крупных конкурсов Фонда содействия инновациям Развитие-Цифровые технологии в размере 10 млн рублей. Средства пошли на разработку и создание программно-аппаратного комплекса мониторинга и управления технологическими процессами конвейерного производства.

Компания Сибирь Телематика с 2017 года ведет научно-исследовательские и опытно-конструкторские работы по созданию технологической платформы программно-аппаратного комплекса Конвейер. Решение призвано эффективного управлять непрерывными конвейерными производствами, используя технологии Индустрия 4.0.

В 2019 году разработку поддержал Фонд содействия инновациям в рамках конкурса Развитие-ЦТ. Благодаря этому команда создала и запустила платформу, объединяющую автономно управляемые технологические участки конвейерного производства в единую систему. Кроме того, грантовая поддержка позволила существенно расширить штат разработчиков и создать уникальное, с точки зрения технической архитектуры, решение, не имеющие аналогов в мире.

Так, Конвейер обеспечивает непрерывный сбор данных с производственного оборудования, отвечает на вопросы в режиме реального времени: когда, где и почему происходят потери, производится дефектная продукция, и что делать для устранения причин, а также помогает оптимизировать производственный план. Также ведется прямой обмен данных между оборудованием и системами управленческого и бухгалтерского учета, что исключает человеческий фактор.

На сегодняшний день все большую значимость приобретают решения в области цифровизации производственных процессов в различных отраслях промышленности, в первую очередь в сфере обрабатывающих производств. Особенно актуальными являются задачи по снижению себестоимости выпускаемой продукции, уменьшению объема потерь и брака при производстве. Мы, как компания, которая изначально занималась решением индивидуальных заказных задач, направленных на оптимизацию производственных процессов, искали возможности для масштабирования создания коробочного продукта. Благодаря Фонду содействия инновациям и его представительству в Академпарке, у нас это получилось, отметил Иван Корсуков, директор компании Сибирь Телематика.

Экономическую эффективность разработанного решения команда подтвердила, внедрив технологию на крупнейшем в России заводе по производству полых стеклянных изделий ООО Сибирское стекло.

За счет внедрения новых технических решений, в том числе, программного-аппаратного комплекса Конвейер от ООО Сибирь Телематика, производство стеклотары в сравнении с аналогичным периодом прошлого года выросло: на 6% в тоннах со 133,2 тысяч до 141,7 тысяч, и на 10% в штуках с 437 млн до 480 млн, отметил исполняющий обязанности генерального директора ООО Сибирское стекло Антон Мор.

Кроме того, Сибирь Телематика стала профильной организацией в ассоциации заводов-производителей стекла СтеклоСоюз России и в течении ближайших трех лет планирует внедрить ПАК Конвейер на шести крупных стекольных заводах России, Белоруссии и Казахстана. Общая сумма будущих контрактов составит около 350 млн рублей.

На сегодняшний день наша разработка показала высокий спрос в сфере обрабатывающих производств, поэтому мы планируем развивать производственные мощности для серийного выпуска аппаратной части ПАК Конвейер. Также важным аспектом является правовая охрана созданного решения на ключевых зарубежных рынках: странах Евросоюза, Китая и США. Поэтому мы решили снова принять участие в конкурсе Фонда содействия инновациям по программе Коммерциализация, который дает возможность в сжатые сроки решить задачи дальнейшего динамичного развития проекта, добавил Иван Корсуков.

Справка:

Фонд содействия инновациям государственная некоммерческая организация, оказывающая поддержку малым инновационным предприятиям и способствующая повышению эффективности их взаимодействия с крупными промышленными компаниями. С 2012 году на базе Фонда Технопарк Академгородка находится новосибирское представительство Фонда содействия инновациям, которое оказывает консультационную поддержку заявителям.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru