Просмотр полной версии : rs 232, 485, Ethernet
Здравствуйте!
Нужно срочно организовать передачу данных от ПЛК 110-32 в ПК. Какой интерфейс проще использовать (по мне - rs-232 или 485) на ПЛК?
Куда копать и что почитать, чтобы сделать это быстро?
У ПЛК есть Ethernet разъем - копать документацию ПЛК по Modbus TCP соединению.
Николаев Андрей
29.06.2017, 08:48
https://www.youtube.com/playlist?list=PL2EcVEe6E9SB4F3WVm-MptpHA5ep0nrq5
Спасибо за советы. Но никто не ответил, какой интерфейс проще использовать для связи между ПК и ПЛК?
Вообще, возможна ли связь ПК и ПЛК по одному из этих интерфейсов без OPC и дополнительных модулей?
(на ПК будет написано ПО для общения с ПЛК)
Если да, то где почитать или посмотреть, как это сделать?
Николаев Андрей
29.06.2017, 17:46
В смысле не ответил?
Возможно по любому. Это должны Вы определить по какому исходя из расположения ПК и ПЛК.
Писать ПО самому можно. Без OPC. Достаточно будет написать обмен по протоколам ModBus RTU (для RS) или ModBus TCP для Ethernet.
Если все же пойдете простым путем, то в видео 11 по моей ссылке есть конкретная инструкция.
Писать ПО самому можно. Без OPC. Достаточно будет написать обмен по протоколам ModBus RTU (для RS) или ModBus TCP для Ethernet.
Вот как раз это мне и надо. Только информации в интернете на этот счёт не нашёл, а вот по OPC сколько хочешь.
Может быть, у вас есть?
Василий Кашуба
29.06.2017, 23:49
Вот как раз это мне и надо. Только информации в интернете на этот счёт не нашёл, а вот по OPC сколько хочешь.
Может быть, у вас есть?
Вам же сказали, смотрите здесь http://www.owen.ru/forum/showthread.php?t=26983&p=251404&viewfull=1#post251404
Вам же сказали, смотрите здесь http://www.owen.ru/forum/showthread.php?t=26983&p=251404&viewfull=1#post251404
Там ни слова о том, что мне надо, если вы не поняли.
Николаев Андрей
30.06.2017, 00:58
Сказать Вам что Вам надо я не смогу, так как не специалист в программировании.
Тут нужно понимание на чем Вы будете писать, для какой ОС.
Возможно под выбранную Вами платформу есть стандартные библиотеки Modbus.
Ну или придется брать описание протокола modbus.org и самостоятельно его описывать.
Если Вы считаете, что в состоянии это сделать - наши советы вряд ли понадобятся.
Если понимаете, что не в состоянии самостоятельно - рекомендую использовать стандартные средства в виде OPC и стандартных SCADA систем.
Называется чем бы дитя не тешилось....
Возьмите готовые реализации библиотек Modbus и хоть опишитесь..... А вообще задача не ясна.
Вам нужен красивый свой интерфейс приложения ?
1. взять любую Scada систему и нарисовать в ней интерфейс тот, который будет вас устраивать, смотреть на возможности визуализации системы, у кого-то богатые возможности, у кого-то скуднее.
2. взять scada систему, которая умеет сама работать с протоколом Modbus и из которой можно вытягивать данные различными способами (есть api, есть отдача в БД), это для того, чтобы не заморачиваться с обменом между ПК и прибором
3. Найти готовые библиотеки Modbus или по новой написать самому, если не устраивает готовое и все это запихнуть в свое приложение (самый глупый способ из всех трех)
Дитя здесь не при чём. Я в первом посте написал, что это срочно, а это значит, что подрядчики, которые должны были автоматизировать производство, честно свалили, оставив оборудование, которым они хотели воспользоваться.
Я же впервые вижу ПЛК, занимался до этого STM32 (и на нём могу всё написать за пару дней на Си). Но оплачивать новые устройства и работу электронщика никто не будет.
Поэтому у меня единственный вариант - воспользоваться тем, что есть. И это не обсуждаемо. Т.о. есть ПК и ПЛК; на ПК уже написано ПО (и программист ждёт только протокола общения устройств по ModBus или же Ethernet).
Поэтому и задаю вопрос: как в таких условия быстрее решить задачу?
Дитя здесь не при чём. Я в первом посте написал, что это срочно, а это значит, что подрядчики, которые должны были автоматизировать производство, честно свалили, оставив оборудование, которым они хотели воспользоваться.
Я же впервые вижу ПЛК, занимался до этого STM32 (и на нём могу всё написать за пару дней на Си). Но оплачивать новые устройства и работу электронщика никто не будет.
Поэтому у меня единственный вариант - воспользоваться тем, что есть. И это не обсуждаемо. Т.о. есть ПК и ПЛК; на ПК уже написано ПО (и программист ждёт только протокола общения устройств по ModBus или же Ethernet).
Поэтому и задаю вопрос: как в таких условия быстрее решить задачу?по ethernet с помощью modbusTCP
Дитя здесь не при чём. Я в первом посте написал, что это срочно, а это значит, что подрядчики, которые должны были автоматизировать производство, честно свалили, оставив оборудование, которым они хотели воспользоваться.
Я же впервые вижу ПЛК, занимался до этого STM32 (и на нём могу всё написать за пару дней на Си). Но оплачивать новые устройства и работу электронщика никто не будет.
Поэтому у меня единственный вариант - воспользоваться тем, что есть. И это не обсуждаемо. Т.о. есть ПК и ПЛК; на ПК уже написано ПО (и программист ждёт только протокола общения устройств по ModBus или же Ethernet).
Поэтому и задаю вопрос: как в таких условия быстрее решить задачу?
забыл добавить: на ПК стоит ос Linux
Программист сможет дергать отсюда ? http://rapidscada.ru/integration-with-rapid-scada/ (там базы данных по всем сигналам будут)
Если да, то устанавливайте, настраивайте и говорите программисту какие каналы за что отвечают. Эта штука на Linux работает, имеет встроенные драйвера Modbus.
Единственное, потребуется платный модуль автоматического управления, так как эта scada не рассчитана, что устройствами будут рулить через нее извне, а не она.
Есть подводные камни, но думаю разработчик поможет
Очень интересен момент в вашем случае - программист есть, и даже есть программа (программа чего собственно ? от балды ?) а спецов почему-то нет....
А, или гляньте тут тема была про работу через питон. Раз у вас Linux.
И очень интересно оборудование ? Может производитель оборудования иметь готовые решения (собственные scada системы)
Программист сможет дергать отсюда ? http://rapidscada.ru/integration-with-rapid-scada/ (там базы данных по всем сигналам будут)
Спасибо, интересный вариант. Свяжусь с программистом.
Очень интересен момент в вашем случае - программист есть, и даже есть программа (программа чего собственно ? от балды ?) а спецов почему-то нет....
Программа очень большая и сложная наподобие OPC-cервера со SCADA-системой, только с большим количеством математики для обработки результатов.
А "спецы", я же написал выше, - свалили.
И очень интересно оборудование ? Может производитель оборудования иметь готовые решения (собственные scada системы)
Из всего "высокоуровневого" оборудования только ПЛК110.
Ну так если только Modbus то еще вот читайте, человек уже разобрался.
http://www.owen.ru/forum/showthread.php?t=26877
Спасибо. Разбираюсь с темой и примерами.
Ещё раз здравствуйте!
Начал разбираться с сокетами. Часть кода нашёл, часть написал. Вот, что получилось (сокет-сервер, библиотека SysLibSockets):
CASE state OF
0:
IF sock > 0 THEN SysSockClose(sock);
END_IF
IF sock = SOCKET_INVALID THEN
sock := SysSockCreate(SOCKET_AF_INET, SOCKET_STREAM, SOCKET_IPPROTO_TCP);
END_IF
(* sock:=SysSockGetLastError(sock);*)
IF sock<>SOCKET_INVALID THEN
state := 1 ;
ELSE state:=0;
END_IF
1:
sa.sin_family:=SOCKET_AF_INET;
sa.sin_addr:=SOCKET_INADDR_ANY;
sa.sin_port:=SysSockHtons(Port);
IF sock <> SOCKET_INVALID THEN
bind_sock:=SysSockBind(sock,ADR(sa),SIZEOF(sa));
IF bind_sock=0 THEN
state:=0;
ELSE
state:=2;
END_IF
END_IF
2:
listen:=SysSockListen(sock,diMaxConnections);
IF listen<0 THEN
state:=0;
ELSE state:=3;
END_IF
3:
ClientSock:=SysSockAccept(sock,ADR(sa),SIZEOF(sa)) ;
IF ClientSock<>Socket_invalid THEN
state:=4;
END_IF
4:
RecvBytes:=SysSockRecv(Clientsock,ADR(resp),SIZEOF (resp),0);
my_data[0]:=resp[0];
my_data[1]:=resp[1];
IF RecvBytes=12 THEN
state:=444;
RecvBytes:=0;
diByte_1:=0;
END_IF
ControlClose_TON(IN:=TRUE, PT:=T#3s);
IF ControlClose_TON.Q THEN
state:=5;
END_IF
444:
counter:=counter+1;
IF counter>=10 THEN
counter:=0;
state:=44;
END_IF
44:
(*my_data[0]:=00;
my_data[1]:=00;*)
my_data[2]:=00;
my_data[3]:=00;
my_data[4]:=00;
my_data[5]:=05;
my_data[6]:=01;
my_data[7]:=03;
my_data[8]:=02;
my_data[9]:=00;
my_data[10]:=05;
diByte_s:=SysSockSend(Clientsock, ADR(my_data), SIZEOF(my_data), 0);
state:=4;
ControlClose_TON(IN:=FALSE);
5:
ControlClose_TON(IN:=FALSE);
SysSockShutdown(Clientsock, 2);
SysSockClose(Clientsock);
SysSockShutdown(sock, 2);
SysSockClose(sock);
state:=0;
END_CASE
Вопрос такой: почему не открывается порт (1025)?
В приложении скриншоты отладки и порт-снифера.
Контроллер ПЛК110.
32364
32365
Порты в win 8.1 открыл туда и обратно.
diSocket:=SysSockCreate(SOCKET_AF_INET, SOCKET_STREAM, 0 (*SOCKET_IPPROTO_IP*));
IF diSocket <> SOCKET_INVALID THEN
sa.sin_family:=SOCKET_AF_INET;
sa.sin_addr:=SOCKET_INADDR_ANY;
sa.sin_port:=SysSockHtons(iPort);
IF BOOL_TO_DINT(SysSockBind(diSocket, ADR(sa), SIZEOF(sa)))<0 THEN
diSocket:=SOCKET_INVALID;
ELSE
IF BOOL_TO_DINT(SysSockListen(diSocket, 1))<0 THEN
diSocket:=SOCKET_INVALID;
END_IF;
END_IF;
END_IF;
TcpServerOpenSocket:=diSocket;сравните со своим кодом
Спасибо! Заработало. Как обычно забыл про преобразование типов.
Буду разбираться дальше.
Дмитрий15011984
27.08.2017, 11:20
Имеются три ПЛК 100 , расположены на удалённом расстоянии, связаны между собой через промышленные не управляемые коммутаторы NIS-3500-2206GE, коммутаторы через оптоволокно. Обмен данных производится ПЛК через протокол UDP. Проблема в том что ПЛК не видит изменения глобальных переменных, когда подключены к отдельным коммутатором. PING проходит, программировать и заливать проект удаленно получается! Прошу помочь данной проблемой.
настраивайте коммутаторы. ping и заливка проекта к вашему обмену (порты, протоколы) не имеет никакого отношения, кроме показания, что все шнуры воткнуты правильно и работает маршрутизация.
Удаленное расстояние - это одна локальная сеть или разбросана через разных провайдеров ?
Интернет говорит что данный коммутатор управляемый....
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot