PDA

Просмотр полной версии : Обмен данными с Овен без SCADA - рабочая програма созданая мною (берите, спрашивайте)



Okmor
27.05.2011, 20:18
Вот недавно приехал нам ПЛК-160 и я наваял небольшой серверок.

Обмен данными происходит через базу типа DBF. Почему через DBF, а потому, что это просто в освоении, в инете куча компонент которые с ней работают и ненужно никакого сервера - просто расшарил папочку BASE и все.
Подобная вещь у нас уже работает только с другим микроконтроллером - испытана боем.
Надеюсь на выши отзыви и пожелания. Количество функций пока ограничено.
Программа написана на LAZARUS (проблема с лицензированием ПО)

Извините за корявый русский - не пользуюсь в быту ни на работе.\

Не могу прикрепить файл.
Забирайте на http://www.ex.ua/view_storage/576687856932

Okmor
27.05.2011, 20:46
Если ктото скачал - выложите под своим именем, а то у меня не получается.

Gans
27.05.2011, 21:02
Если ктото скачал - выложите под своим именем, а то у меня не получается.
У меня тоже но получилось прикрепить :-( судя по всему все вопросы к админам :-)

Okmor
27.05.2011, 21:46
Если ктото качал файл - прошу повторить.
- Забыл снять отладочны флаг.

Okmor
27.05.2011, 22:00
любой "студент" сможет залезть и изменить данные
У нас производство, а не филиал ЦРУ. Простота , наглядность и возможность сделать елементарные проверки ночью и лицом не имеющим опыта - на первом месте.

Okmor
28.05.2011, 00:41
Нет ничего проще сделать защиту и переписать под mysql.
Програма писалась для того чтобы отойти от платных серверов и средств визуализации. Кроме того написание програм на Lazarus (онже Delphi) обезпечивает мне большую гибкость и более дружественный интерфейс.

Проблем, что ктото лазеет и коректирует файлы у нас нет. Скорее даже наоборот - мы не можем коректировать программы которые у нас есть.

IVM
28.05.2011, 16:52
Дайте пожалуйста пояснения к своему серверку (для чего он нужен и как с ним работать).

Okmor
28.05.2011, 21:39
Сервер (если его так можно назвать) предназначен для тех кто разрабатывает визуализацию нестандартными средствами (Delphi, Freepascal, C++...). Для тех кто используэт OPC - он не интересен.
Он очень помогает для систем малой автоматизации. Например - измерение температуры в холодильнике. В нашем варианте есть 1 термрдатчик и 1 влагомер. Вторинный прибор фирмы "Микрол" Серверок запустили за стенкой на компе складовщика. Данные читаются из расшареного файла и архивируются в лаборатории (Своя прога написана на Lazarus).
Принцип работы:
Сервер читает данные сприбора и сохраняет в базу типа DBF при чем при каждом проходе по списку старые данные затираются новыми. - Мы не сохраняем данные и не ведем их архивирование это задача клиента сервера. Подключение к базе , я например, делаю сторонней прогой написанной на Lazarus через компонент TDbf. Если надо записать в прибор данные - я записываю в базу в соответствующюю строку данные и ставлю отметку на отправку. Если данные ушли, отметка снимается иначе пр следующем прходе сервер будет снова питатся их записать. Функция в столбце функций должна стоять 06 или 10. Хочу сказать что если в регистр предусматривается и запись и считывание - то строки должно быть две с функцией например 03 и 06 соответственно.
Некоторые скептики скажут почему не OPC и стандартные методы - отвечу что мне так проще и программа выглядит более дружелюбно. Некоторые вещи вовсе невозможно на них сделать.
Етот сервер я выковырял из моей проги для дозирования мясной суспензии в екструдер (ранее мною написанной). Многое убрал многое добавил. Переделанный сервер еще не тестировался в производстве, хотя прога дозирования мяса работает безупречно.

Алексей Дмитриев
01.06.2011, 08:46
А исходник можно?:confused:

Okmor
01.06.2011, 12:17
Вот исходники.
http://www.ex.ua/view_storage/382677277598
Прошу делится изменениями.
Собирался в Lazarus 0.9.30

Okmor
09.06.2011, 17:32
Вот прошло несколько дней и я наваял новый серверок работающий с приборами по TCP.
Забирайте на http://www.ex.ua/view_storage/457618761447

Относительно опции "Форсаж" - она увеличивает скорость обмена в 3 раза засчет изменения деления системного таймера.
Ее не рекомендую включать если у вас присутствуют карявые программы которые используют функцию Sleep() без контроля времени ее исполнения.

Относительно времени опроса скажу что обмен данными если убрать опцию "Показувати" происходит знааааачительно быстрее - гдето 1000 регистров за 8 секунд;

IVM
10.06.2011, 10:09
А нет-ли у Вас серверка Modbus TCP/IP на C++.

Okmor
10.06.2011, 11:15
А нет-ли у Вас серверка Modbus TCP/IP на C++.
К сожалению - нет. Хотя исходники на паскале выложу. - Не состоялось мне выучить С++.
А энтузиастам скажу что не так сложно это сделать. Начинать надо с готовых программ обмена например SimplyModbusTCP1.3.6 в которой я подсмотрел как правильно расположить данные в пакете, хотя программа в демонстрационном режиме позволяет отправлять всего несколько пакетов, но этого для меня было достаточно.
После ищем готовые компоненты. Но для меня оказалось приемлемей использовать самые простые TCP компоненты без заточки под Modbus - так значительно проще контролировать ситуацию. Передачу делаю отдельными регистрами для каждой переменной - медленней но зато надежней. Прием осуществляю в бесконечном цикле и в отдельном потоке с перерывами SLEEP() - без него нельзя, иначе жрет слишком много ресурсов. (Про войну SLEEP() и Windows ето отдельная тема).
Для надежности поставил сторожевой таймер который следит за приходом ответов и если ответ не пришел в течении 3 секунд - переоткрывает порт и начинает все сначала. Протокол TCP предусматривает позволительную 30 секундную задержку в ответе - после чего все отваливается напрочь - ее я ждать не хочу и думаю 3 секунд достаточно.
Писалось все на Lazarus (FreePascal) сборки CodeTyphon - поищите там оооочень много всего , а особенно красивых компонент.


Вот исходники http://www.ex.ua/view_storage/275324846354

EFrol
13.06.2011, 20:52
Странно, что тебя еще в курилку не отправили!!!
Местные модераторы самодельщиков терпеть не могут!!!
У меня тоже есть свой Lectus, который работает с любым OPC.
В моем случае: OWEN, MODBUS, CoDeSys, UniOPC (Unitronics).
А также опрашивает приборы без OPC или с очень капризными OPC:
- РМТ-39, 49, 59 (Элемер)
- Тензо-М (Тензовесы)
- даже бесперебойник IPON, правда к нему коллеги уже преобразователь сваяли, позволяющий опрашивать все параметры (вх. напряжение, вых. напряжение, заряд) по RS485 с поддержкой MODBUS-протокола.

Стоит один системничек, а точнее очень маленький терминальчик без винта (загрузка с флешки 8Гб), без клавы, без моника. К нему в USB натыкали несколько AC4 в разные стороны и с разными протоколами. Вот он и сидит тихонько опрашивает и складывает на MS SQL 2005 в офисе.
Маленький клиентик позволяет с любого РМ залесть, текущие данных глянуть или график за любой период развернуть и распечатать. Короче технологи, начальство довольны и я немножко. Сейчас впихиваю всякие вкусности. Например, расчет коэфициентов ПИД-регуляторов по протоколу регулируемой величины и состоянию исполнительного механизма. Или формирование корточки работы оборудования. Или поиск и выявление всяких косяков в работе аппаратчиков.
Кстати, он не только протоколирует, но и рассылает на всякие контроллеры и панели нужную для аппаратчиков информацию. Так им теперь бегать из цеха в цех не надо. Стоит, например, один СП270 в диспетчерской, а на нем температуры всех холодильных камер со всего завода. Дешево и сердито!!!
Проект на VB6. С MS SQL работаю через ADO DB.

Okmor
14.06.2011, 10:40
Странно, что тебя еще в курилку не отправили!!!
Местные модераторы самодельщиков терпеть не могут!!!

Про это я незнал.
Прошу не относится к тому что я делаю очень серезно. Так как компютерного образования у меня нет, а я не люблю (как поет Высоцкий "Наполовину"). Но опыт показал что не все так страшно как выглядит. Некоторые вещи делаются очень просто и легко и пихают нам эти вещи за сууууумашедшие бабки.
Разработка своего кода позволяет полностью контролировать ситуацию и легко выходить за рамки возможностей готовых СКАДА. Например впихнуть в готовую визуализацию с помощью дескрипторов и API несколько кнопок и также читать с программы данные (А Датчане заходели за две кнопки 10000 евро).
Данный серверок еще не обкативался на производстве, но отдельные его елементы уже работают. Через несколько месяцев наша фирма начнет строительство нового завада и,я думаю, будет возможность его обкатать и прибавить много интерестных функций.

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

bango
04.09.2011, 15:51
Не могу открыть в чем дело, а так охота посмотреть.
Modbus RTU Server RS485.zip
pas.zip

Okmor
08.09.2011, 12:23
Не могу открыть в чем дело, а так охота посмотреть.
Modbus RTU Server RS485.zip
pas.zip

Архивировал 7ZIP -пробуйте его.
Сечас работу над роектом прекратил - нет времени. Но имея исходники кждый может сделать то что ему нужно.
Еще замечен глюк при закрытии проекта, это через некоректное закрытие потоков - разбиратся нет времени.

proffy
07.04.2019, 21:36
обновите ссылки на файлы. ничего не качается.

TolikZXC
25.02.2022, 07:45
Жаль, что так и не обновили (