PDA

Просмотр полной версии : ПЛК304 и ПМ01



nestor
02.05.2012, 07:41
Доброе время суток, уважаемые знатоки. Перерыл весь форум, изучал самостоятельно, но так и не понял как подключить ПМ01 к ПЛК304, я думал раз есть библиотеки для модулей ввода/вывода, то и для модема есть аналогичная, но похоже ошибался. Может существует примерчик для ПМ01+GKR304 в режиме слейв? Или наведите на мысль. Буду благодарен.

capzap
02.05.2012, 09:26
http://www.owen.ru/forum/showthread.php?t=11920 практически ни чем не отличается, та же среда разработки, так же надо открывать порт и т.д.

nestor
13.07.2012, 17:43
http://www.owen.ru/forum/showthread.php?t=11920 практически ни чем не отличается, та же среда разработки, так же надо открывать порт и т.д.

Прочитал тему, но все равно не понятно. Теперь у меня есть Putty и WinSCP, войти в консоль я могу, могу посмотреть файлы в плк304. Прочитал и статью по настройке gprs соединения, файлы подходящие для Мегафона на ПЛК есть. В статье были строчки "Запустив pppd из под от root'a мы получим соединение с internet: root# pppd ". Однако в Putty в ответ на команду pppd возвращается Not found. Похоже что то я не так делаю. Подскажите куда копать дальше?

capzap
13.07.2012, 19:27
там все же стоит на настольный линукс, потому возможны такие сообщения, не мешало бы ознакомиться с основами линукс. Гарантированно исполняемые файлы будут запускаться если, находясь в том же каталоге где и файл используется команда ./pppd например, либо находясь в другом месте файловой системы указать полный путь например /usr/sbin/pppd

nestor
13.07.2012, 22:42
Теперь происходит это:

/mnt/ufs/root # /usr/sbin/pppd
Couldn't open the /dev/ppp device: No such file or directory
/usr/sbin/pppd: You need to create the /dev/ppp device node by
executing the following command as root:
mknod /dev/ppp c 108 0

Типа какого то файла нет похоже.

capzap
13.07.2012, 23:05
:) ну так Вам же дана подсказка, как его создать.
А вообще чтоб незапортить ОС, переходите на создание соединения с помощью АТ-команд из программы КДС, думаю ПЛК от этого будет больше пользы, неумрет раньше времени

nestor
13.07.2012, 23:35
А вообще чтоб незапортить ОС, переходите на создание соединения с помощью АТ-команд из программы КДС, думаю ПЛК от этого будет больше пользы, неумрет раньше времени

А вообще - я этого и хочу! только с чего тут начать? С добавления модуля SysComOpen2?

capzap
13.07.2012, 23:41
да, сперва открываете порт, этот момент везде одинаков, можно смотреть примеры и из КДС2.3. С модем идет общение тоже как везде, просто отправляете массив байт команды и сразу слушаете что ответит модем, осталось последнее как создать соединение, это расписано в документе по работе с модемом,да и я где то оставлял примерчик списка команд на форуме

зы http://www.owen.ru/forum/showpost.php?p=83738&postcount=6

nestor
15.07.2012, 17:05
Ок, прменил блок ComConn, порт открывается. А как теперь посылать команды модему? Что для этого использовать? Я подумал, что может MB_ASCII_TX и MB_ASCII_RX, но что то не получается.

capzap
15.07.2012, 17:41
открыв порт Вы можете только отправить на модем АТ-команды, ни о каком MB_ASCII_TX и MB_ASCII_RX речи быть не может. Если смотреть мою ссылку то я попытался показать реализацию modbusTCP, там есть команда в конце AT+CIPSEND=15, здесь показано какое количество байт Вы отправите на конкретный хост модбас устройства, после знака "> " идут сами байты в 16-ной форме, т.е два знакоместа на байт, если запрос будет получен слейвом, в приемном буфере полученном с помощью команды SysComRead, будет находится ответ на запрос, его тоже надо разобрать самостоятельно.
Существует еще вариант с CSD соединением, я с нашими ОПС не смог договориться о подключении услуги так что опыта использования нет, может у Вас получиться, тогда сможете использовать модбас для последовательного соединения

nestor
15.07.2012, 19:54
Значит обмен данными происходит с помощью SysComRead и SysComWrite? Но АТ-команды это String, а SysComRead и SysComWrite работают с байтами, как быть?

capzap
15.07.2012, 20:09
есть же POINTER TO

nestor
20.07.2012, 10:30
Спасибо, с этим тоже разобрался) Дошел до того что устанавливается соединение с сервером google как в примере. Как я понимаю, в данном случае ПЛК является мастером (клиентом) и SIMка не обязательно должна иметь статический IP? А как быть если мне нужно наоборот, как было в связке ПЛК110+ПМ01?

nestor
20.07.2012, 10:38
Сдается мне Вы не пробовали так делать) Имеете ввиду установив соединение с любым сервером (хоть с тем же google)? Далее из Lectus посылаю запрос, ПЛК принимает его, обрабатывает и отвечает?

capzap
20.07.2012, 11:32
:) возвращаемся к первому варианту с pppd.
Еще раз проверте настройки установленные в файле gprs.chat. Если ругается на отсутствие ppp, выполните команду, которую пишет
mknod /dev/ppp c 108 0, запускаете /usr/sbin/pppd, если всё прошло без ошибок, смотрите ответ на команду /sbin/ifconfig. Если присутствует ppp0 значит связь установлена, поропубйте сделать пинг, куда нибудь в инет, сразу скажу у меня длительность составляет примерно 1 сеунду на теле2, а далее уже в проекте либо добавляете модуль modbusTCP, либо с помощью библиотек открываете сокет и настраиваете работу либо слейва либо мастера

nestor
20.07.2012, 21:21
ppp0 есть, пинг из командной строки или тут же из putty сделать? Из командной строки пинга не было. Модуль modbusTCP это что? Уж не это ли Application - add device/ Ethernet - add device/ModbusTCP Slave Device? Без сокетов возможно обойтись? Для меня это слово звучит пугающе)

capzap
20.07.2012, 21:32
из putty пингуйте, причем если наберете после /sbin/ifconfig ppp0 то увидите в низу изменившееся количество принятых и переданных байт
По модулям как то так, я правда подключал serial модуль и на WinV3, всё работало, а ТСР-шный модуль вроде не совсем корректно работает, так что я пробовал через сокеты, даже какой то "пилотничек" выкладывал на форуме в виде библиотеки

nestor
20.07.2012, 21:39
Думаю сокеты мне все равно пригодятся, где о них можно почитать? Вопрос вдогонку - вот эти строчки все равно будут нужны? AT+CGDCONT=1,"IP","internet"
AT+CGATT=1
AT+CIPSTART="TCP","ххх.ххх.ххх.ххх","port"
AT+CIPSEND=15

capzap
20.07.2012, 22:04
строчки нет не нужны боле. Про сокеты можно прочитать в документации на КДС2.3 практически ни чем не отличаются, только результирующая ошибка введена указателем в аргументы функций, что очень удобно по сравнению с V2.3. Лучше всего понять их работу можно по примерам

nestor
20.07.2012, 22:25
А когда же эти строчки вообще нужны?

capzap
20.07.2012, 22:30
ну эта таже установка соединения, только с помощью АТ-команд, попробуйте все то же самое не с модемом, а с мобильником и увидите как значек коннекта появиться на экране телефона, после выполнения этих команд, достаточно будет без команд начинающихся на CIPххх, а CIP - ы это уже непосредственно кому и что отправить

nestor
21.07.2012, 14:56
Так все таки соединение то придется устанавливать?

capzap
21.07.2012, 15:06
через pppd Вы устанавливаете соединение средствами ОС, она точно так же, теми же командами взаимодействует с модемом, только не заметно от пользователя

nestor
21.07.2012, 19:41
При этом должен ли ПЛК иметь такой же адрес как и у SIM карты модема?

capzap
21.07.2012, 20:19
не думаю что так у Вас получится, IP ПЛК будет виден при команде /sbin/ifconfig eth0, а модемное соединение можно посмотреть по команде /sbin/ifconfig ppp0

nestor
21.07.2012, 21:12
ой что-то я совсем запутался)) Какой порядок действий должен быть? Сперва создание сокета? Дальше что?

capzap
21.07.2012, 22:25
:) так далеко не заходил (имею ввиду модемное соединение интернет), я ближайшую неделю буду еще с смс разбираться, потом перейду на сокеты, gprs и т.п.

Создав сокет, организуете либо сервер либо клиент, если сервер создали то можете взглянуть видео как его проверить http://www.owen.ru/forum/showpost.php?p=85826&postcount=26
Это можно проделать и без модемаЮ, а подключив интернет через модем, таким же образом можно и с удаленного компа отправлять инфу, правда в видео не показана реализация TCP, но примеров куча

nestor
21.07.2012, 22:47
А сам пример программы, по которой снят фильм, у Вас есть? Буду признателен, если скинете его. И странно, что к обсуждению не присоединяется техподдержка.

capzap
22.07.2012, 07:37
я такие проекты не сохраняю, :) сам убедился что работает, другим показал и достаточно. А библиотека пока в стадии альфа, так что её не буду выкладывать, скажу только что она повторяет TcpUdpLib от S3 Software

nestor
31.07.2012, 15:53
Дабы не создавать новую тему спрошу тут же. Сколько регистров доступно в модуле ModbusTCP_slave_device? Как я понял 40 на ввод и 40 на вывод? Могу ли я добавить 2 таких модуля тем самым увеличить количество регистров, а то как-то несерьезно по 40 регистров.

ЗЫ: Забыл еще вопросик - почему значения Входных регистров обнуляются примерно через 1 секунду? Обмен веду посредством Lectus.

Евгений Сергеевич
31.07.2012, 17:16
для увеличения есть вот этот патч (во вложении)
Какая у вас версия CoDeSys?

nestor
31.07.2012, 17:21
версия 3.4 sp2 Hotfix1. Посмотрим что за патч.

nestor
31.07.2012, 17:28
А что с патчем делать? Положить в какую то папку?

nestor
31.07.2012, 18:10
Спасибо за патч, разобрался, очень полезная вещь. Может есть еще какие-то полезные патчи, о которых стоит знать, и где их брать?

Евгений Сергеевич
31.07.2012, 18:24
нет пока это единственный

nestor
01.08.2012, 07:39
А что насчет второго вопроса - почему значения Входных регистров обнуляются примерно через 1 секунду? Обмен веду посредством Lectus.

Евгений Сергеевич
02.08.2012, 13:25
Память вернулась.
Необходимо отключить тайм-аут у слейва. этот тайм аут ведет себя как сторожевой таймер: если по истечению указанного времени опрос непроизошел контроллер считает что все плохо обрыв связи и переводит значение переменной в безопасное состояние, т.е. в ноль. Как это значени редактировать пока не ясно.

Оключается на вкладке где указывается адрес слейва.

nestor
04.08.2012, 14:18
Спасибо за подсказку. И следующий вопрос тут же, так как мне кажется он относится к теме. Значит при соединенном напрямую контроллере ПЛК110 с компом через Ethernet опрос из Lectus адекватный, всё как надо - запрос-ответ. При подключении ПЛК к интернету (ADSL роутер, проброс 502 порта сделан) происходит только первый запрос/ответ, далее примерно через 15 секунд происходит снова запрос, который остается без ответа, и через время периода опроса снова отправляется запрос и тд. Если остановить опрос и снова запустить, то соединение уже не устанавливается и запросы не отправляются. Проверено было сначала на мобильном интернете от мегафона, затем от одного из провайдеров (Дом.ru). Если перезагрузить контроллер, то всё повторяется. Лог прилагаю. Опрашиваются 2 переменные.



10:14:18.609 [4004] КЛИЕНТ ЗАПУЩЕН
10:14:21.734 [2224] (xxx.93.44.38:502) Подключение - ОК
10:14:21.734 [2224] (xxx.93.44.38:502) Tx: [12] 00 01 00 00 00 06 01 04 00 00 00 01
10:14:22.328 [2224] (xxx.93.44.38:502) Rx: [11] 00 01 00 00 00 05 01 04 02 00 04
10:14:22.343 [2224] (xxx.93.44.38:502) Tx: [12] 00 02 00 00 00 06 01 04 00 01 00 01
10:14:22.828 [2224] (xxx.93.44.38:502) Rx: [11] 00 02 00 00 00 05 01 04 02 00 20
10:14:22.843 [4004] TQueueTasks.OnDataChange
10:14:22.843 [4004] TQueueTasks.OnDataChange - OK, Result=OK (0x0), dwTransid=0, hGroup=0, hrMasterquality=0, hrMastererror=0, dwCount=2, phClientItems=([2] 5, 6), pvValues=([2] 4, 32), pwQualities=([2] 192, 192), pftTimeStamps=([2] 04.08.12 10:14:22, 04.08.12 10:14:22), ItemIDs=([2] plc110_adr1.byte1, plc110_adr1.temp_inside)
10:14:30.000 [2224] (xxx.93.44.38:502) Tx: [12] 00 03 00 00 00 06 01 04 00 00 00 01
10:15:00.000 [2224] (xxx.93.44.38:502) Tx: [12] 00 04 00 00 00 06 01 04 00 00 00 01
10:15:30.000 [2224] (xxx.93.44.38:502) Tx: [12] 00 05 00 00 00 06 01 04 00 00 00 01
10:16:00.015 [2224] (xxx.93.44.38:502) Tx: [12] 00 06 00 00 00 06 01 04 00 00 00 01
10:16:30.015 [2224] (xxx.93.44.38:502) Tx: [12] 00 07 00 00 00 06 01 04 00 00 00 01
10:16:35.734 [4004] TIOPCItemMgt.RemoveItems, Group=Group_plc110_adr1, dwCount=2, phServer=([2] 6, 7)
10:16:35.734 [4004] TIOPCItemMgt.RemoveItems - OK, Result=OK
10:16:35.734 [4004] Отключение IOPCDataCallback
10:16:35.734 [4004] TOPCGroup.Destroy "Group_plc110_adr1"
10:16:35.734 [4004] TIOPCServer.RemoveGroup, hServerGroup=3, bForce=False
10:16:35.734 [4004] TIOPCServer.RemoveGroup - OK, Result=OK (0x0), Name=
10:16:35.734 [4004] Отключение IOPCShutdown
10:16:35.734 [4004] (xxx.93.44.38:502) Отключение - ОК
10:16:35.734 [4004] Выгружен экземпляр сервера
10:16:35.734 [4004] КЛИЕНТ ОСТАНОВЛЕН

PS: кстати заметил что период опроса совпадает с параметром "время ожидания ответа" - 30 сек.

Малышев Олег
05.08.2012, 10:06
Я смог добиться стабильной работы не Lectus а с Insat Modbus OPC server. На 32 точки он бесплатный.

nestor
05.08.2012, 10:32
32 точки это мало) а lectus уже куплен. Мне кажется дело может быть в роутере.

Igorь
22.03.2013, 13:43
Добрый день!

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

capzap
22.03.2013, 13:46
Добрый день!

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

Модем придется садить на отдельный порт и например вручную организовывать открытие порта и передавать в диспетчерскую смски

capzap
22.03.2013, 13:52
www.owen.ru/forum/showpost.php?p=88181&postcount=27 вроде на видео нормально показан один из вариантов добавления модуля, причем все как написано в документации

Igorь
22.03.2013, 13:53
вы имеете в виду на один из портов ПЛК304?

capzap
22.03.2013, 13:56
вы имеете в виду на один из портов ПЛК304?

Да, потому что он будет мешаться стандартным протоколам обмениваться данными с модулями ввода/вывода

Igorь
24.03.2013, 14:50
подскажите что может быть причиной:
подключался ПЛК304 в кодесис 3, задавал параметры Gateway и контроллер определялся, но в один момент перестала налаживаться связь, сеть работает, порт LAN горит.
Попробовал переустановить программу, результат тотже, пробовал на другой ПК установить - без изменений.
В чем может быть причина?

capzap
24.03.2013, 14:59
надо смотреть найдено ли и выбрано ли активное устройство

Igorь
24.03.2013, 15:08
в том то и дело что при нажатии кнопки "Сканировать сеть" ни одно устройство не находится

capzap
24.03.2013, 16:49
сам плк пингуется с компьютера?

Igorь
24.03.2013, 18:31
да, IP сканером находится адрес и пк и плк

Igorь
25.03.2013, 07:25
вы написали что придется садить модем на отдельный порт и организовывать открытие порта, а если по точнее какой блок мне использовать в CFC? как прописать его открытие и добавить модем?

написал программу по примеру на CFC, вот что получилось http://uploads.ru/gjys1.png

capzap
25.03.2013, 07:51
где то должна быть выложена библиотека КомСервис, с ней достаточно просто организовать управление портом

Igorь
25.03.2013, 14:20
я понимаю как в примере открывается порт для подключения модулей ввода/вывода , а как организовать управление порта для ПМ01?
добавить еще один блок Comconn?