Автоматизация Баз Данных с Database Connectivity Toolkit State Machine Global Variable Feedback

Show video

Всем привет! В этом выпуске мы продолжаем  совершенствовать нашу программу MES   (Manufacturing Execution Software) или  CRM (Customer Relationship Management).   Мы рассмотрим создание структуры State  Machine, обратную связь Global Variable   и несколько функций по работе с базами  данных, такие как Database Refresh List   и Database Refresh Table. Мой проект уже открыт.  В папке проекта копируем VI Database Provider 2   и переименовываем его в Database  Provider 3. Перетягиваем в проект,   сохраняем (Save All This Project), открываем. Вот так у нас выглядело выглядит front панель  

с прошлого выпуска. Так выглядит  блок диаграмма, здесь мы видим SubVI,   который мы создали в том выпуске. Если вы ещё не  видели тот самый выпуск, вы можете его посмотреть,   пройдя по ссылке в описании. На Time  Out Event открываем SubVI. Заходим в  

Window - Show Block Diagram и здесь нам нужно  заменить название таблицы на, string константы   на control - change to control и переименовать  в Table from Test Station, сохраняем,   находим его на лицевой панели SubVI и нам нужно  его подсоединить к терминалу. Для этого - Add   Terminal - мы его будем здесь  подсоединять вот наверх,   таким образом, и ещё у нас здесь data  и Array стояли рядом, я просто сейчас   дату подвину левой, ой, правой кнопкой мыши,  значит, Disconnect This Terminal и подвину   поближе, таким образом, сохраню. Теперь  у нас неактивная SubVI иконка, мы делаем   Relink to SubVI и здесь у нас внизу data и  Array автоматически подвинулись и вот здесь   образовалось место да для соединения. Что мы сюда  подключаем? Мы подключаем глобальную переменную   Database Table, так. И теперь на  лицевой панели, на front панели,  

мы делаем Visible Items - Show Tabs, заходим  на Search Tab, из NXG Style - String выбираем   String Indicator, переименовываем его в  Table ordered by Test Station, расширяем.   Возвращаемся на блок диаграмму и этот Table  ordered by Test Station нам нужно подсоединить   тоже к Database Table глобальной переменной  и ещё раз скопируем глобальную переменную On,   меняем - Change to Write, создаём константу -  False. Глобальная переменная On и константа False   осуществляет обратную связь, то есть выключает  Global Variable On со стороны Database провайдера,   то есть мы включаем Global Variable On со стороны  Test Station и, после того как, Test Station   программы, и после того как команда выполнена  эта глобальная переменная выключается со стороны   Database провайдера. Это нужно для того, чтобы мы  не записывали одни и те же данные множество раз,   только один раз. Теперь на лицевой панели нам  нужно её открыть на полную, здесь расширим  

и сделаем изменения. Значит, тут у меня  Table Table. А это всё переносим в Search   Tab и переносим Table с вкладки Database  DB, далее на вкладку Test Station заходим,   подвигаем оператора, приносим сюда Table ordered  by Test Station и Tables, и также таблицу,   которую мы только что скопировали, перенесли  с вкладки Database. Теперь этот же Table   мы хотим скопировать, будет Table 2, мы его  поставим обратно на вкладку Database, но уже под   другим именем, это новый Table и мы с ним будем  работать, здесь ещё немножко расширимся сразу,   так и переименую Table 2 в  DB Table - Database Table,   сохраним, расширим, чтобы  нам было видно здесь всё.   Так, теперь на блок диаграмме  находим DB Table и сейчас нам   нужно создать Enum. Заходим в  Numeric, берём Enum Constant,  

нажимаем в меню выбираем Edit Items, Insert  - первый будет у нас наименование Initialize,   второе - Wait For Event, Move Down, OK.   И делаем этот Enum default - Make Type  default. Расширим While Loop, Event Structure,   потому что мы сейчас будем  добавлять Case структуру.   Добавляем из Structures - Case Structure   и подключаем Enum к While Loop сначала, здесь же  меняем - Replace with Shift Register, ставим его   второй на противоположную сторону, протягиваем  дальше до, так до Case селектора Case Structure.   Вот, и у нас сразу поменялось здесь  вместо True стало Wait For Event и   второй кейс называется Initialize. Здесь дальше  на Initialize мы создаём, нам нужно добавить,  

в Enum ещё два кейса, для этого мы делаем Open  Type Definition, ой Open Type default. Заходим   в лицевую панель Enum а, нажимаем Edit Items  - Insert, Move down, это у нас будет Variables   и ещё один Global ON. В таком порядке: Initialize,  Variables, Wait for Event и Global ON. Нажимаем   OK, Save. И сейчас нам предложат сохранить, мы  сохраняем как контроль, нижнее подчеркивание, 1   в папке SubVI нашего проекта, закрываем,  Save. И, далее, нам нужно скопировать Enum,   ставим внутрь Case структуры на Initialize Case,  меняем здесь на Variables, подсоединяем. Теперь   после Initialize нам нужно создать Case, выбираем  из меню Add Case After. Variables Case создался  

автоматически, снова здесь протягиваем шину  ошибки, копируем Enum и Wait For Event выбираем.   Теперь попадаем на Wait For Event и  здесь нам нужно переделать Timeout Event,   сначала убираем соединение  и эту всю комбинацию SubVI   и Global Variable On выносим за While Loop,  Case структуру удаляем, шину ошибки соединяем,   протягиваем через весь Event, и здесь у нас  будет комбинация из двух Enum constant. Так,   выбираем первый будет Global ON. А дальше  Global Variable On и второй Enum будет  

Wait For Event, и здесь нам понадобится  из Comparison выбираем функцию Select,   подключаем и, да, посмотрим, что это такое  в Context Help. Значит, Select returns the   value wired to the t input or f input, depending  on the value of s. If s is TRUE, this function   returns the value wired to t - TRUE. If s is  FALSE, this function returns the value wired to   f - FALSE. И здесь вот нарисовано очень  понятно. На True мы подсоединили Global ON Enum,   на Select Global Variable On и на False у  нас Wait For Event. Context Help я закрыла и   теперь подсоединяю, функцию протягиваю а через  все структуры. Так, у нас на Timeout сделано,  

теперь нам нужно создать четвертый кейс в Case  структуре, вот после Wait For Event у нас будет   Add Case After и получается называется  он автоматический Global On, копируем   сюда снова Enum constant, выбираем  Wait For Event и протягиваем здесь,   а здесь мы привносим всю вот эту комбинацию  из функций сюда SubVI и соединяем,   так. Да, то есть у нас вот получился Case  Initialize, здесь переходит на Variables и   после Variables переходит на Wait For Event и  на Wait For Event у нас Event structure Timeout,   Global ON и On глобальная переменная и Wait For  Event Enum работает, и дальше следующий у нас   Event - это Radio buttons, и теперь, и третий у  нас Power, да. Но пока, сейчас мы будем расширять   Event структуру, вот здесь у нас ещё, на кнопка  стоп нам нужно use default If unwired, не хватает.   Это сохраним, перейдём на Variables, и  сейчас будем добавлять новые кнопки. На   лицевой панели у меня уже заготовлены  кнопки. Я просто их добавляю, копирую,   так, ой что-то за mess у нас получился. Ещё  раз. Просто копирую получилось не очень просто,  

так вот что же это такое-то, вот да,  вот у нас получились новые кнопки здесь:   DB Table List, DB Refresh List, DB Refresh  Table, а с ними мы будем работать сегодня,   а в следующих выпусках мы будем работать  с Autosize, DB Search, DB Table Columns,   DB Sort Num, DB Search, Save DB Table,  Index ID, Delete, DB Rows, DB Columns.   Так сейчас я хочу, у меня съехала  куда-то таблица, точнее всё съехало,   выровняю это всё. Теперь эти все кнопки находим  на блок диаграмме, открываем на полную и нам   все их нужно занести в Variables, кроме DB.  Кроме тех, с чем мы будем сейчас работать,  

это вот DB Table List, DB Refresh List, DB  Refresh Table, это мы всё заносим на Variables,   выравниваем по левому краю и Vertical Compress,  да. Таким образом, у нас они все здесь,   должно быть 10, да. Переходим на Wait  For Event, здесь после Radio Buttons мы   будем сейчас создавать новый Event - Add  Event Case, выбираем выбираем DB Refresh List,   Окей. Так, здесь это сокращаем сразу, поднимаем  повыше, ставим Enum обязательно Wait For Event  

и значит здесь нам понадобится комбинация  тоже из функций. А мы её возьмём из SubVI,   зайдём в block diagram SubVI. Нам нужен путь  к Database и функция DB Tools Open Connection,   далее нужна функция List Tables и DB Close  Connection, это всё мы берём и переносим на   нашу блок диаграмму, так, а отсюда мы удаляем,  сохраняем, закрываем. Теперь переходим на Wait For   Event на Case структуре DB Refresh List, который  мы только что создали Event, и копируем вот эти   функции сюда, нам нужно соединить теперь  всё это по шине ошибки и выровнять,   соединить между собой, и DB Table List нам нужно  будет создать Property Node - Create Property   Node - Strings, добавляем сюда. Strings  Node мы значит меняем Change to Write и   подключаем к List Tables, таким образом, и это  у нас DB Refresh List boolean, заносим сюда и   оставляем его здесь, дальше нам нужно создать  еще один Event - Add Event Case, выбираем DB   Refresh Table, нажимаем Окей. Здесь всё тоже  самое, а копируем Enum - Wait For Event и   здесь нам понадобится DB Tools Open Connection  функция с путём к Database MS Access, дальше   это нам List Tables уже не нужно, то есть вот у  нас мы взяли из SubVI DB Tools Open Connection,   DB Tools Close Connection, сейчас между ними  мы поставим тоже уже известную нам связку из   Connectivity выбираем Database DB Tools Select  Data и там же в Connectivity - Database - Database   Variant to Data, так. И ещё нам понадобится снова  Property Node от DB Table List, создаём Property  

Node - Value в этот раз, подключаем к шине ошибки,  к DB Tools Open Connection, Select, Database   Variant to Data, DB Tools Close Connection. Так,  теперь всё это выровняем, соединим между собой,   и здесь, значит, DB Table List Property Node  мы соединяем с table Select Select Data функцию   на output type мы создаем Array constant, мы  это тоже уже делали в предыдущих выпусках,   string constant, сюда её добавляем,  расширяем до 2D array и подключаем к   Type на Database Variant to Data, и  здесь нам ещё понадобится DB Table,   мы его меняем на индикатор, соединяем с Database  Variant to data, таким образом. А да и boolean DB   Refresh Table тоже сюда заносим, вот здесь  у нас тоже теперь всё готово, возвращаем   на Variables DB Table List, нам ещё пригодится  далее. И сейчас мы проверим, сейчас мы проверим  

как это всё у нас работает на данном этапе,  сохраняем блок диаграмму, сохраню так по размеру,   что-то по размеру, сохраню, могу закрыть  и открываю Test Station 2 запускаем, да   запускаем Test Station, запускаем DB  Provider на этой вкладке специально,   чтобы увидеть куда у нас приходят ли  данные, как это всё работает вместе,   на Test Station устанавливаем  количество Records, measure measure,   заносим таблицу, мы сейчас набираем данные и  отправляем данные на каждую таблицу, таким образом   таблица автоматически создаётся, и туда эти данные  сразу записываются через программу DB Provider,   то есть вот мы посылаем данные, подтверждаем  Окей, здесь мы видим сразу отображается,   что мы послали данные на Test Station 1 и вот они  пришли и Table вот такой создался, такая таблица   создалась с номером Test Station 1. Дальше мы  ещё набираем данные, посылаем на Test Station 2,   подтверждаем, получаем, Test Station 2 создался  и данные туда вот записались. А сделаем на третий   Table два раза можем послать данные, да видим что  индекс меняется, данные приходят, table создался,   здесь дальше на четвёртый сделаем, например,  сделаем большее количество, посылаем, видим, что   здесь много данных и на пятый Table мы, например,  по 3 сделаем, measure-measure, пошлём и ещё новые   данные, снова отправим, и ещё и снова отправим, и  здесь у нас вот мы видим все данные а поступили на   таблицу Test Station номер 5, все таблицы созданы.  И теперь мы ещё можем на вкладке DB перейти Table   перейти сюда и здесь у нас вот DB Table List, мы  нажимаем DB Refresh list, открываем и получается,   что у нас все созданные таблицы у нас здесь в  списке. Мы выбираем таблицу один. нажимаем кнопку  

DB Refresh Table, который ,над чем мы сейчас  работали в этом выпуске, и у нас все данные здесь   тоже показываются сразу, а всё что мы записали,  выбираем Test Station 2, DB Refresh Table,   тоже все данные, которые занесены в эту таблицу  показаны, Test Station 3 - Refresh, тоже все   пришли, Test Station 4 мы видим, что здесь у нас  было 70 Records, по-моему, и да они все здесь,   и Test Station 5 - Вот пожалуйста Index 1,2,3  мы три раза отправили данные всё это вот так,   таким образом, взаимодействует. В след выпуске  мы продолжим совершенствовать State Machine   и подключать все новые кнопки, используя новые  функции Database Connectivity Toolkit. Напоминаю,   что Source Code программы этого выпуска вы  можете найти в описании под видео. Спасибо,   что подключились к Laplanda Project  Bank. Если у вас появились вопросы,   задавайте их, пожалуйста, в комментариях.  Если вы узнали для себя что-то новое,  

ставьте лайк и подписывайтесь,  чтобы увидеть дальнейшие выпуски.

2025-03-19

Show video