PDA

Просмотр полной версии : управление по RS485 ПК + ПЛК100 + СП270



danko
31.01.2012, 12:56
Подскажите были ли темы как управлять связкой контроллер ПЛК100+панель СП270 из компьютера, чтобы панель и контроллер работали сами по себе, но ещё и можно было бы ими с компьютера управлять, желательно по интерфейсу RS485

Я подключил, добавил модуль RS485 в конфигурацию ПЛК в ModBus slave (т.е. в состав ПЛК), в принципе данные получает, но один из модулей тензометрии отказывается работать, не передает данные

capzap
31.01.2012, 13:52
а почему: "желательно по интерфейсу RS485", Ethernet-порт у Вас не рабочий разве?

danko
31.01.2012, 14:43
да конечно рабочий, но он на короткие расстояния только работает по-моему до 100м, а RS485 можно и пол километра, что в реальном цехе вполне нормально.

danko
31.01.2012, 14:44
вот и решили попытаться сделать через RS485

lara197a
31.01.2012, 15:11
используйе АС3, АС4.
На ПК поставьте скада или визуализацию(к примеру КДС)

capzap
31.01.2012, 15:15
http://masters.donntu.edu.ua/2004/fema/kovalenko/library/art7.html может поможет статейка всё правильно организовать

danko
31.01.2012, 16:07
AC3-M использую, но я написал, контроллер реагирует, а вот блок тензометрии к сожалению отключился.
Отдельно без СП270 управлять могу ПЛК100 по RS232 тоже.

Скаду я ставить не буду, задание было самому написать управление и визуализацию, уже практически начал, остановился на выборе управления.
Ссылку на интерфейсы конечно спасибо, да только в них проблем нет, я писал уже самостоятельно интерфейсы, хотел бы знать реальные наработки тут на форуме именно с контроллерами ПЛК100, или однозначные ответы, что мол нельзя так то и так то подключать.
Наверняка темы такие были. Никто не помнит чего-нибудь подобного?

capzap
31.01.2012, 16:24
то что "отвалился" один из тензодатчиков, можно полистать темы про МДВВ, тат такие же подобные ситуации, что один из ведомых устройств может перестать работать в сети при подключении панелей и т.п. и так же там советовали перечитать "золотые" правила построения сетей RS485. Всеже я бы советовал через ТСР цеплять ПК, поставте между отрезками кабелей концентратор и решите проблему 100 метров.

danko
31.01.2012, 16:29
а тогда скажите почему советуете TCP?

danko
31.01.2012, 16:30
да я вот и читаю про интерфейс, просто трудно эти теоретические знания сопоставить с кратенькой инструкцией к CodeSys

lara197a
31.01.2012, 16:31
Потому, что быстрее и не мешает др. устройствам

danko
31.01.2012, 16:48
понял, обдумаю

capzap
31.01.2012, 16:48
Почти для каждого языка программирования реализован modbusTCP, раз Вам придется реализовывать визуализацию то нужно же по какому то протоколу получать данные. Так же можно использовать для этих целей обычные ВЕБ-сервер, об этом тоже много написано и конечно в самом КДС есть примитивная визуализация

PS
У кого на ПК стоит ява, я бы предложил посмотреть вот эту страничку http://alexsentcha.wordpress.com/visualization-a-plc-controlled-processes-with-javafx/ и запустить на ней эту ссылку http://pcplcdemos.googlecode.com/hg/JavaFxPlant/dist/Plant.jnlp

lara197a
31.01.2012, 16:52
В КДС хороший быстрый тонкий клиент, а не примитивная визуализация.

capzap
31.01.2012, 16:56
примитивный не в смысле плохой, а в смысле использование примитивов кружочки квадратики, кнопки и т.д. :)

danko
31.01.2012, 16:59
Я сам написал ранее команды Modbus для RS232 в своих программах, без использвания библиотек, потом узнал, что он называется Modbus и что он существует в стандарте.
Может и использую библиотеки, посмотрим.

danko
31.01.2012, 18:06
В принципе я решил вопрос с тензометрическим модулем. Модуль имел адрес 1-й, контроллер кстати тоже. Я просто поменял адрес тензометрического модуля на 2-й и теперь я просто передал команду на включение одного из выходов, ПЛК отлично отреагировал, включае, выключает.
Просто я не могу на данном этапе устанавливать адрес для AC3-M, который у меня интерпретирует команды с ПК, я не знаю, имеет ли он вообще такую функцию, как изменение адреса, но по крайней мере, если кроме ПЛК никакие устройства не имеют адреса1 вроде работает. Дальше посмотрим. Это что касается RS485, ну и конечно же я добавил модуль RS485-1 дополнительно в:
Конфигурация ПЛК -> PLC100.K -> ModBus (slave) [VAR] -> ModBus [FIX] -> RS-485-1[VAR] и дополнительно тут же -> Параметры модуля -> Frame Oriented = RTU
Ну а комманда, если интересно как я их делаю, выглядит так, например в среде VC++:

if (m_DlgSerialPort.m_Com.IsOpen())
{
BYTE AddrDev = 1;// адрес устройства ПЛК
BYTE Func = 5;// функция, запись
WORD AddrData = 0x0014;// адрес бита, какой вам надо
WORD Data = 0xFF00;// это означает установить, если 0x0000, то сбросить
WORD Crc;

BYTE Buffer[8];
int Size = 8;// размер буфера

Buffer[0] = AddrDev;
Buffer[1] = Func;
Buffer[2] = HIBYTE(AddrData);
Buffer[3] = LOBYTE(AddrData);
Buffer[4] = HIBYTE(Data);
Buffer[5] = LOBYTE(Data);
Crc = CalcCRC(Buffer, Size - 2);// функция вычисляет CRC, сам писал, надо будет разберетесь сами напишете
Buffer[6] = LOBYTE(Crc);// вот эта строчка меня подкумарила, не очень одаренный разработчик в полном смысле этого слова, когда писал Modbus интерфейс придумал все байты передавать старший сначала, а контрольную сумму с младшего, неужели нельзя сделать одинаково и аккуратно? не только в наших советских странах глупости встречаются, эта невнимательность мне стоила пару часов времени
Buffer[7] = HIBYTE(Crc);

m_DlgSerialPort.m_Com.Write(&Buffer, Size);// это мой класс, стандартная передача
}

capzap
31.01.2012, 18:32
:) http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA_%D0%B1% D0%B0%D0%B9%D1%82%D0%BE%D0%B2
Абзац: Сравнение
так что те кто придумали разные порядки передачи данных прежде всего думали о разработчиках программ, включая и Вас

danko
31.01.2012, 18:36
хорошая ссылка, но я никогда так много не читаю, теория практике мешает, извините ))))))

danko
31.01.2012, 18:41
мозг сломать можно, это надо с утра, а не за 20минут до конца рабочего дня читать, тут мысли заняты как бы в переполненный автобус при -20 сесть, а тут всякие литл-эндиан и особенно словосочетание насмешило "...обычно предпочтительнее..."
Да если полагаться на такие обычно и предпочтительнее, то ничего не сделаешь, так и останешься на месте топтаться, гораздо нужнее слова, "только", "обязательно", "нельзя", слова должны точно доводить до разработчика что ему делать, это может в государственных институтах есть время теорию изучать и думать что предпочтительнее