PDA

Просмотр полной версии : SQL



ongleb
29.05.2014, 16:14
Всем привет
искал механизм (не обязательно готовый) прямого общения с SQL-серверами без прокладок типа OPC или sql4automation
WAGO это достигли
у них есть библиотеки для работы
с MSSQL (называется WagoLibMSSQL_03.lib. Cкачать не удалось)
с MySQL (называется WagoLibMySQL_03.lib. Удалось скачать но она запаролена а я с этим бороться еще не научился)
документация к обеим доступна
в MySQL полный список функций к примеру такой
MySql_Login
MySql_Execute
MySql_Query
MySql_GetStringValue
MySql_Logout

исходник посмотреть, понятное дело не удалось
но удалось убедиться что это вполне реально при чем у WAGO WagoLibMySQL_03.lib весит всего 109кб

интересно, а не планируют ли в ОВЕН'е создать подобные библиотеки ?

я то полез с целью понять принцип
лично мне хотелось создать библиотечку для PostgreSQL (этот выбор позвольте не обосновывать. долго это и лишние споры вызовет)

Newcomer
29.05.2014, 17:00
А в связи с чем появилась такая потребность ?

capzap
29.05.2014, 17:21
берете два компа, на одном sql-сервер, на другом апач с поддержкой php. Пишите php-запрос к базе и снифером снимаете какой трафик проходит между компами. Включаете голову и разбираетесь какого вида запросы необходимо передавать через сокет

ongleb
29.05.2014, 19:24
По пунктам

В связи с
1 необходимостью повысить надежность системы в целом исключив явно лишнего посредника
2 предоставить группе контроллеров возможность длать выборку на пример единых настроек из базы непосредственно
3 нивелирвать влияние "последней мили" дав возможность сохранять в базе большой объем с большого количества контроллеров
4 нивелировать понятие "мастер"
...
...
Много причин
Я их вижу, значит мне это надо
Вы не видите, значит вам это не надо

Методов получить в лог трафик между клиентом и сервером я вам и сам с десяток найду при чем на вскидку и более избирательных чем тупосниферить весь ip-мусор при чем 2 компа для этого ни к чему
Кроме того, скажу по секрету, для PostgreSQL и сниферить ни чего не надо
Вся документация опубликована (версий 7 последних точно)
Однако 70% описаний для моих задач явно лишние.

Я же не пытался принудить кого то методом "сделайте для меня"
Если ОВЕН`овцам не интересна эта тема, трудно их в этом осуждать (да и не нужно)
Это их выбор. Wago получило конкурентные преимущества. Да и ладно.
Ради этого на Wago лично я переходить не стану. Меня все равно ни MSSQL ни MySQL не устраивает
Первый платный тормозной и виндозный. Во втором SQL как таковой слишком кострированый.
Сейчас время есть. И если это интересно только мне, реализую все сам и только для своих проектов

Вопрос то был
не планируют ли в ОВЕН'е реализовать подобную библиотеку?

Нет так нет

ongleb
29.05.2014, 19:46
А в связи с чем появилась такая потребность ?
Вспомнился анекдот. К сожалению немного антисемитский. За это заранее извиняюсь.
Короче анекдот: "Еврейские SQL-сервера отвечают запросами на запрос"

capzap
29.05.2014, 19:51
Вопрос то был, но рассуждения...
Зачем то захотелось посмотреть исходники же, почему не посмотреть исходники самой базы чтоб разобраться.
Я предложил вариант с компами, как базовое направления, мне же неведом Ваш уровень знаний

ongleb
29.05.2014, 20:10
Исходники самого сервера?
Я 5 раз на пенсию уйти успею пока до нужного места докопаю
А исходники библиотеки 109 кб
Есть же разница
Согласитесь
Кроме того 80% необходимых мне функций в ней есть
И ни одной лишней

mikele
29.05.2014, 23:15
Пароль есть результат вычислений: (2503,25/34)*8
Удачи!

ongleb
30.05.2014, 05:44
:eek: Даже как ...
Неожиданный ответ
Спасибо попробую

bendrey
16.07.2014, 21:45
Здравствуйте, у меня данные с датчиков пишутся в таблицы, есть процедура которая осуществляет выборку. При попытке создания отчета в редакторе отчета, когда пытаешься получить колонк возникает ошибка:
System.Data.SqlClient.SqlException (0x80131904): Ошибка при преобразовании типа данных nvarchar к datetime.
в System.Data.SqlClient.SqlConnection.OnError(SqlExc eption exception, Boolean breakConnection, Action`1 wrapCloseInAction)
в System.Data.SqlClient.SqlInternalConnection.OnErro r(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction). С чем это связано?

kfvniiz
18.07.2014, 14:34
Не совсем ясно где там у тебя возникает эта ошибка.
Такая ошибка "Ошибка при преобразовании типа данных nvarchar к datetime" возникнет если ты дату хранишь как строку и видимо еще и используешь некорректный формат. По этому либо дату храни как дату, либо исправляй запрос для построения отчета, делая в нем явное преобразование строки в дату.
вот про форматы и преобразования статья http://msdn.microsoft.com/ru-ru/library/ms187928.aspx
а вот про работу со строками http://www.sql-tutorial.ru/ru/book_string_functions_in_sql_server.html

murdemon
17.05.2015, 10:17
Есть нечто похожее для Codesys 2 и 3 для MySQL и MSSQL... если интересно пишите на dmitriy.murashov@automation-engineering.ri

Scream
17.05.2015, 19:15
Если честно - жесть, если плк будет напрямую с БД общаться, это лишнее, слишком муторно и 109кб для плк за 1 бибку это очень много.
Необходимость писать в БД конечно есть, я все пишу MySQL, но через прослойку на java.

murdemon
17.05.2015, 23:48
Нет вполне просто и без лишних прослоек .. без java и без патчинья ядра под KDE :) все работает уже на нескольких проектах...

capzap
18.05.2015, 06:16
Нет вполне просто и без лишних прослоек .. без java и без патчинья ядра под KDE :) все работает уже на нескольких проектах...

реально Вы уже раздражать начинаете своей бравадой, судя по мылу работаете на организацию,скорее всего заслуга Ваша в разработках мизерна,а на форуме ведете себя просто как навязчивый манагер
Проекты, которые кладут данные сразу в базу,скорее всего представляют собой регистраторы данных, врядли можно управлять серьезным оборудованием,если время цикла будет резко увеличиваться при обращении к базе
И убило про KDE, причем тут вобще иксы, если речь о сервере БД и яве?

murdemon
18.05.2015, 10:52
Это не бравада а реклама, а про KDE это шутка .. да в базу обычно кладут логи и архивы каких то значений для последующего разбора полетов, не каких формирований сущностий объектов и сериализации конечно на ПЛК не кто не делает...

Scream
18.05.2015, 14:13
Это не бравада а реклама, а про KDE это шутка .. да в базу обычно кладут логи и архивы каких то значений для последующего разбора полетов, не каких формирований сущностий объектов и сериализации конечно на ПЛК не кто не делает...

Ну дык бибку в топку тогда, рекламу тоже. Если для Вас все просто, то код в студию.

PS.Про KDE шутку не понял ни разу..

приборист
18.05.2015, 14:43
Ну дык бибку в топку тогда, рекламу тоже. Если для Вас все просто, то код в студию.

PS.Про KDE шутку не понял ни разу..
Код через личку за $.
Ради этого он и вставляет эти комментарии.

murdemon
18.05.2015, 14:54
точно.... 6 рублей - сама бибка для Codesys 2 или 3 для MsSQL или MySQL + полная поддержка по всем вопросам связанным с бибкой бесплатно. При покупке сразу 2х бибок скидка.

Scream
18.05.2015, 15:11
Исходники бибки естественно закрыты?

"При покупке сразу 2х бибок скидка. "
Это тоже шутка? Или как то привязывается к конкретному железу и копировать нельзя на др плк?

murdemon
18.05.2015, 15:22
исходники открыты, на честное слово о нераспространении... привязки нет просто для 2 и 3 кодезиса разные бибки и для mysql и mssql соответственно тоже.

Sergey666
18.05.2015, 15:55
исходники открыты, на честное слово о нераспространении... привязки нет просто для 2 и 3 кодезиса разные бибки и для mysql и mssql соответственно тоже.

А про дается часть только для стороны ПЛК (КДС) или обработчик SQL запросов как-нибудь оформленный тоже в сделке участвует ?

Ну правда достал уже шило в мешке продавать !Налоговой на тебя нету...:mad:

murdemon
18.05.2015, 16:12
Запись идет напрямую в БД с ПЛК без всяких сторонних обработчиков и тд. Я продаю кота Шредингера :)

murdemon
06.08.2015, 16:15
налятай подешевело .. только сегодня бибки для MySQL и MSSQL по пять..

Scream
06.08.2015, 16:20
налятай подешевело .. только сегодня бибки для MySQL и MSSQL по пять..

Я считаю дураком надо быть, чтобы такую ересь использовать имхо конечно, но плк никак не клиент для таких вещей, прослойка бесплатна довольно проста.

DDmitry
15.12.2015, 09:54
Попробовал подключить от WAGO CodeSys 2.3 библиотеки к ОВЕН ПЛК110.
Выдает ошибку: Библиотека не имеет лицензии для данной целевой платформы.
Кто знает как это победить? (Хоть 5 т.р. выкладывай =) )

Передача через всякие посредники не устраивает, т.к. нужна четкая последовательность событий во времени. Если использовать прослойки ModBus, OPC и другие, то реальная точность по времени сведется к 1 сек. А мне нужно выявить порядок появления дискретных сигналов.
Делал подобные регистраторы на WAGO (обработка+метка времени -> файлы на SD ->SQL), хочу на более бюджетном железе попробовать.

ПЛК110-30 удалось вывести на стабильный режим работы только через 3 дня. Пришлось программно отключить кнопки на лицевой панели.
Если попробовать прочитать по ModBus TCP шесть байт при объявленных в конфигураторе ПЛК четырех, то контроллер перезапускается. Нужно очень аккуратно программировать.
В начале перезапускался каждый час с пустой программой (a:=0). Сейчас сутки отработал без сбоев (опрашивается ModBus TCP slave, ping -t, подключен CodeSys).

murdemon
15.12.2015, 10:01
за 5 тр - я предоставлю... все проверено и работает. Напиши мне в личку :)

Scream
15.12.2015, 10:20
Попробовал подключить от WAGO CodeSys 2.3 библиотеки к ОВЕН ПЛК110.
Выдает ошибку: Библиотека не имеет лицензии для данной целевой платформы.
Кто знает как это победить? (Хоть 5 т.р. выкладывай =) )

Передача через всякие посредники не устраивает, т.к. нужна четкая последовательность событий во времени. Если использовать прослойки ModBus, OPC и другие, то реальная точность по времени сведется к 1 сек. А мне нужно выявить порядок появления дискретных сигналов.
Делал подобные регистраторы на WAGO (обработка+метка времени -> файлы на SD ->SQL), хочу на более бюджетном железе попробовать.

ПЛК110-30 удалось вывести на стабильный режим работы только через 3 дня. Пришлось программно отключить кнопки на лицевой панели.
Если попробовать прочитать по ModBus TCP шесть байт при объявленных в конфигураторе ПЛК четырех, то контроллер перезапускается. Нужно очень аккуратно программировать.
В начале перезапускался каждый час с пустой программой (a:=0). Сейчас сутки отработал без сбоев (опрашивается ModBus TCP slave, ping -t, подключен CodeSys).


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

DDmitry
15.12.2015, 10:35
Я уже делал на своем протоколе.
Канал до сервера может быть нарушен, а данные нужны достоверные. Значит в ПЛК должен быть архив-кольцо (на 1Гб =) ).
Если передавать своим протоколом, то понадобится программа на сервере, которая принимает данные, складывает в SQL и отсылает подтверждение в ПЛК. Работает это медленно (может я коряво написал =) ), вызывает в последствии проблемы с сисадминами (не любят они лишний софт на сервере, да который еще в сеть лазит).

На WAGO у меня перекидывает 100Мб (SD->SQL) примерно за 20мин. На самописном 1Мб (CF->программа->SQL) за 10мин. Клиентов, которые передают, правда больше 50 шт.

murdemon
15.12.2015, 10:59
я такую штуку делал на MySQL на Raspberry PI. Ставим на PI локальную MySQL БД в нее из программы на Codesys пишем.. + настраиваем репликацию с БД в интернете (если даже канал падает все данные у нас локально сохраняются и при восстановлении канала самми подтягиваються на удаленный сервер)

Scream
15.12.2015, 11:15
я такую штуку делал на MySQL на Raspberry PI. Ставим на PI локальную MySQL БД в нее из программы на Codesys пишем.. + настраиваем репликацию с БД в интернете (если даже канал падает все данные у нас локально сохраняются и при восстановлении канала самми подтягиваються на удаленный сервер)
вот, вот это интересно.
Из cds в mysql через сокеты добрались?

murdemon
15.12.2015, 11:21
Да через сокеты...

DDmitry
15.12.2015, 12:57
ПЛК110-30 с USB ведь может записывать/читать файлы на флешку?
Мне его еще не прислали, поэтому спрашиваю.
Я на WAGO делал по другому. Скидывал все данные на SD в csv-формате (по месяцам). И потом передавал их с SD в SQL. У WAGO еще есть ftp, поэтому при желании можно было архивы с него скачать.