Прошу переместить в примеры программ
-----------------------------
Программа тестировалась под FireFox, Opera, GoogleChrome, Safary.
Под IE не работает по причине несовместимости IE со стандартами W3C
Скачать пример
Прошу переместить в примеры программ
-----------------------------
Программа тестировалась под FireFox, Opera, GoogleChrome, Safary.
Под IE не работает по причине несовместимости IE со стандартами W3C
Скачать пример
Не вполне понял про POST. Также не понял, зачем 3 сервера? Чтобы одновременно обслуживать 3 клиентов? Но, в конце концов, это детали.
А вот на вопрос, как что-либо подобное заставить работать через RS-232+модем, я вразумительного ответа так и не получил (тема Овен ПЛК + TCP/IP) :(. Какая версия прошивки нужна? Что и где крутить для конфигурации?
Можно, через поддержку модемного доступа в Интернет, к-я как раз сейчас интенсивно у нас тестируется. Но скорость, естественно, на уровне модема...
1) Зачем N экземпляров сервера? Если на странице N фреймов браузер будет пытаться читать их одновременно из разных файлов. Старый пример веб сервера не порадует браузер. А почему бы нескольким клиентам не раздавать данные.
2) См ЛС.
Обнаруживается еще и такая проблема (это видно уже в примере). Допустим, нужно передать массив. Тут мы упираемся в кривой интерфейс symlib.
А в CodeSys предусмотрена аналогичная библиотека SysLibSymbols. В ней все более удобно. Имеется единственная функция, возвращающая адрес символа. Хочешь читай, хочешь пиши, хочешь одну переменную, хочешь - массив. Причем адреса можно получать при инициализации и не тратить время на манипуляции с символами постоянно. Конечно, нужна еще SysLibGetSymbolType, но тип символа должен возвращаться как enum (т. е. int!), чтобы использовать case, а не сравнение строк. Ну, и для полноты еще неплохо бы SysLibEnumSymbols, последовательно возвращающую все доступные символы, т. к. в некоторых случаях, видимо, будет удобно отправлять их все одним махом, например по "GET all_vars".
Забавно, возможно я не в курсе, и давно такая замечательная библиотека есть? Если не трудно зашлите ее. К сожалению, она не поддержана на нашем контроллере.
Я, собственно, про усовершенствование интерфейса доступа к переменным по именам. А библиотеки Sys..., как я понимаю, для каждого контроллера свои. То, что в CodeSys, наверное, для Soft-PLC (компьютера). Впрочем, Вам лучше знать ;)
symlib была нами сделана, потому что для embeded систем символы из прикладной программы вообще не поддерживались. Хотя в недрах исходников были куски, реализующие доступ, то ли дело бросили, то ли не хотели создавать конкуренции Soft-PLC. Дело тёмное.
Так что если пришлёте библиотеку SysLibSymbols - мы, в свою очередь, постараемся её поддержать (если это будет возможно).
Да, похоже, библиотека эта чисто виртуальная сущность - при ближайшем рассмотрении ее нет, есть только SysLibSymbols_E.pdf и соответствующие темы в help'е. Похоже действительно хотели, но не сделали. Но это не важно. Я просто предлагаю реализовать более удобный интерфейс доступа к символам:
void *SysLibGetSymbolAddress(const char *Name); /* То, что хотели сделать в СoDeSys, см. help */
typedef enum { INT, SINT, REAL, .... } data_type;
data_type SysLibGetSymbolType(const char *Name);
typedef struct { const char *name; void *address; data_type type; } symbol_info;
const symbol_info *SysLibEnumSymbols(bool Start); /* Информация о всех символах по-одному, Start==TRUE для первого обращения */
:rolleyes: Хелп внимательно читали? Данная биб-ка реализована для больших ПЛК высшей ценовой категории на базе системы исполнения CSP32F. В них она и работает. В большинстве ПЛК эконом класса на базе CSP32E (embedded) обычно нет даже файловой системы! Тут ее в принципе нет смысла поддерживать.
Для ПЛК Овен вполне можно реализовать предложенный вариант. Только лучше назвать эту биб-ку иначе, дабы не путаться.
предлагаю разместить все дополнительные библиотеки ОВЕН, в частности SymLib в разделе программное обеспечение CoDeSys
возникли вопросы по проекту, инструкциям в Readme.txt (использую PLC 100-K-L):
--------------------------------------------------------------------------------------------------------------------------
???>>>>>>>> прошу Вас ответить на мои вопросы, подробно для начинающего
Пример веб сервера для ОВЕН ПЛК
2. Для использования нужно залить содежимое папки content на свой ПЛК (Login - Write file to PLC)
???>>>>>>записать без создания папки, в корень файловой системы ПЛК?
3. Сервер может запускаться на нескольких сокетах, на каждый экземпляр сервера - по сокету. В данном примере 3 сокета
???>>>>>>>>>> количество сокетов = количество пользователей сервера ?
4. При использовании чтения записи символов из сервера нужно экспортировать нужные символы
(для записываемых открыть возможность записи) в файл :"Project-Option-Symbol Configuration-Dumb Symbol entries +
Configure Symbol File...
???>>>>>>>>>> для русской версии CodeSys : Проект\Опции\Символьная конфигурация\
создавать описания (ДА) ?
создавать XML файл (НЕТ) ?
Проект\Опции\Символьная конфигурация\настроить символьный файл\установка атрибутов объекта
экспорт переменных проекта (ДА, для некоторых модулей и библиотек)
экспорт данных (НЕТ)
экспорт структур (ДА, для некоторых модулей и библиотек)
экспорт массивов (ДА, для некоторых модулей и библиотек)
доступ по записи (ДА, для некоторых модулей и библиотек)
что еще конфигурировать ?
Установить автозагрузку файла символов target settings-General-Download symbol file
???>>>>>>>>>>>> Настройки целевой платформы\Общие\
загрузить символьный файл (ДА)
5. Ограничение на количество сокетов не более 20 - ограничение на количество одновременно открытых файлов -5
???>>>>>>> к чему приведет ограничение 20 и 5 ? Если потребуется больше, то как увеличить?
6. Требуемые дополнительные библиотеки SysLibMem,SysLibFile,SysLibSock,SymLib.
???>>>>>>при переносе проекта на ПЛК 100 KL не был доступен файл MainRoot и пришлось заново выбрать целевую платформу (target)
???>>>>>>и создать начальную конфигурацию
CodeSys\Конфигурация ПЛК\Дополнения\Стандартная конфигурация
???>>>>>> наверное, в конфигурации потерялся сетевой модуль ? какой и какие настройки?
???>>>>>> И наконец, порядок использования сервера:
1) через порт 100BaseT RJ45 ?
2)при помощи Int.Expl. (или аналога) с уcтановленной JAVA
войти как "http://www.IP_адрес_ПЛК" или иначе ?
2. >>записать без создания папки, в корень файловой системы ПЛК? Да
3. уже сказано выше
5. >>>> к чему приведет ограничение 20 и 5 ? Если потребуется больше, то как увеличить? Замена ПЛК
:)
6. Требуемые дополнительные библиотеки SysLibMem,SysLibFile,SysLibSock,SymLib.
Все в biblio_CoDeSys.zip кроме SymLib - эта где-то тут по форуму бегала :)
???>>>>>>при переносе проекта на ПЛК 100 KL не был доступен файл MainRoot и пришлось заново выбрать целевую платформу (target)
поставь тагет PLC100.R-M
???>>>>>> И наконец, порядок использования сервера:
1) через порт 100BaseT RJ45 ? Да
2)при помощи Int.Expl. (или аналога) с уcтановленной JAVA
войти как "http://www.IP_адрес_ПЛК" или иначе ?
скорее "http://IP_адрес_ПЛК"
вместо синусоиды (вроде она замышлялась автором)
на графике рисует горизонтальный пунктир
начальные значения переменнных переменных отображаются как wrong
почему ?
PS: смотрел через IE и GoogleChrome, везде установлена корректная Жаба SUN...
Вложение 925
Вложение 926
Смотрите http:\\IP_контроллера\param.txt
Если вместо значений WRONG значит при изменении таргета не поставили загрузка символов.
'эту тему толком не могут просветить и в сервисных центрах дилеры Овен.Видимо сыро, не в пример вкт-7 * RS-232*ТС35i
Я сейчас работаю над сохранением показателей датчиков в MySQL. Скажите, а можно заставить ОВЕН ПЛК 100 (прошивка 2.05.6) обращаться к PHP скрипту, подключаясь к интернету с помощью GSM модема? Веб-сервер, о котором сдесь идет речь, запускается, непосредственно, на самом PLC? Я правильно понимаю?
У меня подобное в Opera - наверное берёт param.txt из кеша.Цитата:
вместо синусоиды (вроде она замышлялась автором)
на графике рисует горизонтальный пунктир
IE ругается "Ошибка Microsoft JScript - Предполагается наличие объекта line: 1; column: 0".
Firefox пытается что-то правдоподобное делать, но вместо пол-секунды на точку рисует раз в пять секунд. При периоде сигнала в 10 секунд узнать исходную кривую трудновато - будем разбираться.
Да, так сделать можно, программированием сокетов на owen, но сложновато. Нужно релизовать частично функциональность браузера, точнее написать клиент, умеющий отсылать, принимать и обрабатывать запросы GET или POST.
Верно.Цитата:
Веб-сервер, о котором сдесь идет речь, запускается, непосредственно, на самом PLC? Я правильно понимаю?
Так, а если заставить PHP скрипт обращатся к веб-серверу на ПЛК? Так, помоему, выйдет проще.
Дело только в надежности подключения ПЛК к инету через GSM модем. Кто с этим сталкивался? Что вы можете об этом сказать?
Можно заставить скрипт обращаться к ПЛК, ммм... ,скажем, по Modbus. В скрипте соответственно должен быть запрограммирован хотя бы примитивный мастер(клиент) Modbus.
+ в окне браузера при запросе после выполнения скрипта будут видны самые актуальные данные.
+ уставки в контроллер тоже запишутся сразу после выполнения скрипта
- требуется знать IP адрес контроллера, т.к. он выступает в роли Modbus server. Динамические адреса, в принципе, тоже можно использовать, но для этого нужно либо иметь в модеме, либо в контроллере запрограммировать DDNS клиент (пару месяцов назад такой сам написал :), правда не для owen).
- для переодической записи в БД требуется циклически запускать скрипт опроса с помощью какого-нибудь scheduler.
А у варианта, когда контроллер инициирует передачу данных, плюсы и минусы инвертируются :rolleyes:
Задать периодичность запуска PHP скрипта - не проблема, на сервере с MySQL имеется - Cron. А вот с динамическим IP адресом будут вопросы. В случае дисконнекта он ведь сменится. Остается вопрос в надежности GSM модема и GPRS соединения. Всетаки, кто что может сказать об этом?
По итогам тестирования у Alex1963 прошивка c поддержкой GPRS/PPP пока не готова. Используйте modbus + GSM(CSD) modem. Библиотеки и готовые проекты с поддержкой модбус доступны под Linux. Уж под Win вообще проблем нет - Lectus OPC + любая скада.
Олег, т.е. ПЛК с помощью модема просто будет дозваниваться до ОРС сервера? И никакого интернета
Да, именно так. Это рабочий вариант и насколько я знаю проблем с этим нет. Причем дозваниваться может как ПЛК так и ПК. ПЛК может быть как мастером так и слейвом модбас. Проверено с лектусом(брать последнюю версию) и matricon modbus server.
Ну а поддержка GPRS соединения , как скоро будет?
Кстати, может быть кто использовал OPC сервер под Linux? чтобы сохранять данные в МуСкуль
Ищите pv browser + rllib
Подскажите, контроллера Овен у меня пока нет. Хочу купить, но прежде узнать подойдет ли он под мою задачау:
у меня есть aDSL-линия с динамическим IP адресом. Такой инет наверное у большинства сейчас. Можно ли подключить контроллер Овен к Ethernet-порту моего aDSL модема (D-Link 2540), настроить интернет на контроллере (локальный IP адрес, маску, шлюз, DNS-сервер) и с контроллера отправить данные POST или GET-запросом?
Если ПЛК выступает как клиент (аналогично обычному браузеру на ПК), то почему бы и нет.
Иначе нужно либо статический IP роутера, либо регистрацию на DDNS настраивать.
Вопрос: допустим, есть статический IP роутера, но у плк ведь локальные адрес, шлюз и маска, подскажите пожалуйста, нужно настраивать именно adsl-модем, чтобы плк был виден во внешней сети? И как:)
Подскажите, можно ли заставить ПЛК ОВЕН выполнять POST запросы к PHP скриптам, аналогично обычному web браузеру, к примеру вот так:
http://10.0.6.11/plc.php?var1=123&var2=321&var3=text
10.0.6.11 - в примере - это ip адрес web-сервера подключенного к плк через Ethernet.
Спасибо!
Почему бы и нет - создайте в стандартном браузере нужный запрос, посмотрите содержимое пакета TCP, после чего формируйте и засылайте пакет через SysLibSocket.
а если наоборот? чтобы Php скрипт работающий на вышеупомянутом сервере обращался к переменным в плк.
тоже не проблема
олег, но об этом нигде не написано! поделись пожалуйста знаниями)
Сокровенных знаний здесь нет. Используем стандартные знания TCP/IP.
Примеров в инете море - пишем с учетом циклического вызова!!!
На вскидку так-
packet_sz:=1000; (* Размер пакета*)
sz:=1000;
if my_rtrig.Q then
SysSockCreate..
SysSockConnect..
sz:=SysSockSend..
else
if sz<packet_buf then
sz:=sz+SysSockSend..
end_if
end_if
Если не затруднит, можно поподробнее?
Скажите, пожалуйста, возможно ли запустить данный сервер, если нет ПЛК (работаю в режиме эмуляции)? Сам пытался-не смог)
Нельзя. SymLib в режиме симуляции не работает. А сокеты- работают.