Слайд 2
Цель:
Повышение эффективности работы операторов, контролирующих процесс вулканизации автомобильных шин.
Поставленные задачи:
Учитывать количество автопокрышек и регистрировать вулканизованные без отклонений от режима вулканизации.
Регистрировать суммарно одинаковые размеры и модели за смену, сутки, месяц. Производить суммирование всех размеров и моделей за смену, сутки, месяц.
Учитывать количество автопокрышек и регистрировать вулканизованные с отклонением от режима вулканизации.
Учитывать и регистрировать время простоя форматоров-вулканизаторов.
Контроль за технологическими параметрами форматоров-вулканизаторов.
Слайд 3
Тех процесс
Слайд 4
Архитектура
Слайд 5 основная процедура
События по таймеру:
синхронизация времени каждый час
обновление контролов каждую сек
UpdateParams();
UpdateInterface();
проверяем число строк в таблице форматоры каждую минуту
опрос com
Программа сбора данных работает следующим образом. С каждого форматора запрашиваются данные регистрации (хранятся в контроллере, время хранения примерно 15-19 суток), каждая запись этих данных имеет метку времени. Все форматоры, подключенные к одному СОМ порту, опрашиваются последовательно (в порядке увеличения адреса). Все последовательные порты, на которые назначен хотя бы один форматор, опрашиваются программой сбора параллельно и независимо.
Слайд 6 Диаграмма классов
//описание форматора
class CFormator
//список форматоров на порт
class PortIdle : public CCommAsync
class DBConnect операции с БД
HRESULT Connect();//соединение с базой
HRESULT Disconnect();//отсоединение
//работа с записями
HRESULT OpenRecordset(_bstr_t request, _RecordsetPtr & ptr);//выполнение запроса на получение записей
HRESULT CloseRecordset(_RecordsetPtr & ptr);//закрыть тек. запись
HRESULT NextRecord(_RecordsetPtr & ptr);//след. запись
LONG GetRecordCount(_RecordsetPtr & ptr);//кол-во записей
_variant_t GetItem(TCHAR * fieldname, _RecordsetPtr & ptr);//получить значение поля
BOOL EndOfRecord(_RecordsetPtr & ptr);//есть записи?
//
HRESULT Exec(_bstr_t cmd);//выполнить команду SQL
class CAnalyze
long FormatorId;//Id данного форматора
BYTE Port, Addr;//порт и адрес формтора
void Process( DataStr newstr );//процесс анализа для форматора
int CalcCookState();//определяем текущее состояние
void NewCookToBuf();//новая варка - в буфер
void WriteOldCookToDb();//старая варка - в БД
//
bool fRead; //если установлен - значит данные уже прочитаны
int ReadShiftIntervals();//читаем интервалы смен из таблицы
int ReadShiftDiagram();//проверяем график смен на наличие строк
//анализ качества
int ReadMode();//чтение режима из базы
void GetCookTime();//получение текущего времени варки
int CheckOutOfRange();//проверить выход параметра за пределы
class CMainDlg
void InitParams();//иницилизация контролов отображения
void UpdateParams();//их обновление из БД
int InitServ();//инициализация программы сервера
void ReadProcess();//в обработчике чтение портов
слайд 7
блок-схема работы с COM портом
слайд 8
Для чтения архивов из FLASH-памяти (8 Мб) контроллера нужно применять следующий алгоритм, исключающий потерю данных при обрывах связи. Алгоритм состоит из следующих шагов:
1) Активация чтения; на этом шаге производится запись единицы в регистр Modbus 0x1008; это указание контроллеру получить из архива очередную запись и положить значения записи в соответствующие регистры;
2) Ожидание активации; для того, чтобы убедиться, что контроллер выполнил команду, необходимо опрашивать регистр 0x1028 пока он не станет равным 1 (если максимально разрешенное число запросов превышено, а регистр=0, нужно перейти к шагу 1). Это будет означать, что чтение активировано и в регистрах 0x1011-0x1027 появилась запись из архива.
3) Считывание данных из регистров 0x1011-0x1027 (аналоговые каналы 1-8, флаги);
4) Деактивация чтения; на этом шаге нужно записать в регистр 0x1009 единицу; это сигнал контроллеру переключиться на следующую запись в архиве;
5) Ожидание деактивации; на этом шаге нужно опрашивать регистр 0x1028 до тех пор, пока он не станет равным нулю (если максимально разрешенное число запросов превышено, а регистр=1, нужно перейти к шагу 4).
Слайд 9
БД
Слайд 10
Окно программы сбора данных
Эта окно является единственным окном этой программы. Окно разделено на несколько областей.
1. В поле Расширитель портов показано состояние расширителя COM-портов. Каждый COM-порт может иметь три состояния:
– открыт успешно ,
– не удалось открыть (возможно, порт занят другой программой или не существует) ,
– слот не занят (ни один COM-порт не назначен на этот слот) .
Каждый ряд форматоров подключен к одному из COM-портов. Назначение форматоров на заданный порт производится в программе JUMO Process Explorer (АРМ начальника смены).
2. В поле Информация показано количество записей, которые считаны со всех подключенных форматоров с момента запуска программы сбора данных. Кнопка «синхронизация времени» предназначена для синхронизации времени на форматорах (при необходимости, например, для целей отладки и проверки). Синхронизация времени осуществляется программой автоматически и ежечасно, поэтому в использовании этой кнопки нет необходимости при нормальной работе.
3. Слева от области «Информация» находится область для вывода диагностических сообщений. Сюда выводятся сообщения при старте программы (например, об успешной инициализации) и в процессе ее работы. Например, все сообщения об ошибках при работе с базой данных обязательно попадают сюда.
4. В поле «Параметры форматора» выводится вся информация о форматоре, выбор которого осуществляется ползунками «Ряд» и «Номер» слева. Для выбранного форматора отображается группа «Смена» (А,Б,В,Г), в которой указаны время начала и окончания смены, вулканизаторщик, количество варок за смену и т.д. В области с названием типа форматора (например, «Бегоматик»), указан текущий режим варки, типоразмер варимой автопокрышки, а также в ремонте форматор или нет.
4. В группе «Связь» отображаются параметры связи с выбранным форматором:
– Порт: COM-порт, на который назначен выбранный форматор;
– Запросов: число Modbus-запросов программы к выбранному форматору с момента запуска программы;
– Ответов: число правильных Modbus-ответов форматора с момента запуска программы;
– Адрес: адрес форматора для заданного COM-порта (обычно равен номеру форматора в ряду);
– Ошибок CRC: число ошибок CRC16 при расшифровке ответа форматора с момента запуска программы;
– Таймаутов: число таймаутов (отсутствия ответов форматора) с момента запуска программы.
5. В самой нижней строчке окна программы показано время последней считанной с форматора архивной записи.
Слайд 11 форматоры
Переход на окно «Форматоры» (рис. 3.21) осуществляется по нажатию кнопки «Форматоры» на панели навигации в левой части главного окна приложения.
Данное окно служит для отображения и редактирования списка форматоров.
Список форматоров содержит следующие поля:
Ряд – номер ряда, 1..6;
Номер – номер форматора, 1..26;
Тип – тип форматора;
Порт – номер COM-порта, 1..8;
Адрес – аппаратный адрес в сети, 1..127;