Доброго времени суток! Хотелось бы узнать, реально ли связать через RS485 ПЛК100 и ПК (среда разработки - Builder), используя библиотеку owen_io? Заранее спасибо.
Вид для печати
Доброго времени суток! Хотелось бы узнать, реально ли связать через RS485 ПЛК100 и ПК (среда разработки - Builder), используя библиотеку owen_io? Заранее спасибо.
Если кто занимался, хотелось бы тогда увидеть, как будет выглядеть, например, функция WriteByte() при обращении к плк?
Указанная документация не дает ответ на вопрос, какими функциями библиотеки пользоваться для чтения/записи в ПЛК. В документации по библиотеке есть файл tags.txt, в котором для большинства приборов ОВЕНа указано, какими функциями библиотеки, какие параметры конкретного прибора читать. Но про ПЛК там ничего нет... видимо, потому, что файл tags.txt создан в 2006г ...
Пожалуйста, подскажите, какими фукнциями библиотеки (с какими значениями параметров) обращаться к ПЛК.
Плк - прибор свободнопрограммируемый и Вы можете создавать переменные любых типов. Соответственно к каждой переменной и идёт своя функция.
Например если создать в ПЛК (Овен Slave) переменную типа Float+Time, задать тип float==Float, то такая переменная будет читаться извне аналогично входу МВА, а если задать тип float==Float PIC, то аналогично входу прибора ТРМ2хх.
Для чтения целых значений создайте целочисленную переменную и воспользуйтесь соотв. функцией для чтения целочисленных значений.
Никаких tags.txt для ПЛК мы и не могли создать, т.к. для этого надо иметь способности оракула. По сути, Вы сами создаёте такой файл исходя из своих потребностей.
Хотелось бы увидеть в tags.txt раздел для ПЛК примерно такого вида:
1. <тип переменной ПЛК> - читать функцией <функц_библиотеки>, входные параметры функции задавать следующим образом: ..........
2. .... и тд
и нужно описание, как задавать адреса переменных в вызовах функций библиотеки, т.к., например, для МВА и ТРМ202 адресация в вызовах функций происходит по разному...
Ну в принципе это вопрос не к tags.txt а к документу описание протокола ОВЕН.
Здравствуйте.
У меня возник следующий вопрос:
возможно ли связать через RS232 ПЛК100 и ПК (среда разработки - Builder), используя библиотеку owen_io.
У меня ПЛК 100-PM, в комплекте которого шел переходник RS232 ПЛК - COM port PC. Если нет, то как подключиться по RS485?
Заранее благодарен, С уважением, Павел.
Можно, на ПЛК создайте ОВЕН slave, включите в него нужное кол-во параметров, задайте им хеш-имена и индексы и опрашивайте.
Можно даже создать полную иллюзию 1 или нескольких приборов типа ТРМ/МВА/и т.д.
Какой параметр отвечает за индекс переменной и зачем нужно имя, если обращение к переменной осуществляется по адресу?
Опрос как я понял осуществляется с помощью библиотеки owen_io. Однако в функции OpenPort задается RS485CONV_MANUAL, хотя нужен RS232.
Каким образом можно узнать адрес переменной, которая создается ОВЕН slave, чтобы применить функцию ReadIEEE32.
С уважением, Павел.
Для начала рекомендую прочитать манула по протоколу ОВЕН, есть на нашем сайте. Многое станет понятнее. Имя преобразуется по спец. алгоритму в 2-х байтовый номер. сделано для удобства восприятия человеком.
RS485CONV_MANUAL - как раз ручное управление, подходит и для 232. Просто когда писалась библиотека owen_io, о ПЛК и его 232 портах ещё никто не знал :)
Уточняю - для связи по RS232 ставьте именно RS485_Automatic.
Уважаемый Владислав, не могли бы вы подсказать ошибку в моих действиях.
Я использую 4-х символьное имя параметра, например aaaa.
Затем перевожу его в хэш-имя, которое получается 32-х битное (хотя в мануале сказано, что оно должно быть 16-битным), и прописываю его в CodeSys.
Далее я перевожу 32-битное значение в 16-ричный адрес и передаю его в качестве параметра функции ReadIEEE32.
Заранее спасибо, Павел.
Ни надо ничего никуда переводить. пишите в соответствующем поле aaaa и всё.
Посмотрите пример конфигурирования мастера ОВЕН в док-ции. Для slave аналогично.
А вы не могли бы привести пример, который бы содержал имя переменной, 16-битный номер, адрес устройства и адрес переменной.
С уважением, Павел.
Пример для ПЛК или для owen_io?
Пример, в котором можно узнать адрес переменной, заданной в ПЛК, для считывания ее с помощью owen_io.
В owen_io также надо задать :
1. Адрес slave устройства (см. параметры ОВЕН slave)
2. Имя переменной (то самое аааа)
3. Индекс, если есть (для начала попробуйте без него) - (-1)
int ReadIEEE32(DWORD adr,DWORD adr_type,char *command,float &value,int &time,int index);
Пусть адрес=24.
val - значение
time - время для типа float+time, Вам не интересно, но переменную надо подставить
Индекса нет
res := ReadIEEE32(24, 0, 'aaaa', val, tm, -1);
Большое спасибо за пример. Но после выполнения данной функции у меня возникает ошибка обмена (-100). Не могли бы вы подсказать, в чем может быть ошибка?
Добрый день.
Я уже второй день бьюсь над прочтением переменной с ПЛК. Я выполняю следующую последовательность действий:
1) В CodeSys создаю OWEN(slave), задаю Address=24, остальное по умолчанию
2) В OWEN[Fix] добавляю RS-232, все значения по умолчанию
3) Создаю переменную типа float, задаю имя aaaa, hash-имя aaaa, остальное по умолчанию
4) В программе CodeSys задаю aaaa:=10; и Online->Login, Online->Run, Online->Logout
5) Далее в программе Builder выполняю две строчки:
OpenPort(COM_2,spd_115200,prty_NONE,databits_8,sto pbit_1,RS485CONV_AUTO);
res=ReadIEEE32(24,0,"aaaa",val,tm,-1);
res=-100; переменная не считывается. Не могли бы вы подсказать, может быть я что-то забыл сделать?
Заранее благодарен, С уважением, Павел.
Пришлите проект и код для owen_io, где-то очепятка
Посылаю вам проект и код для owen_io.
есть подозрение, что ПК вообще не видит ПЛК. включите отладочную печать в библиотеке и посмотрите, как идет обмен.
Здравствуйте.
Если вы подразумеваете под отладочной печатью строки:
AllocConsole();
res=SetDbgIndication(SHOW_PACKETS);
то они ничего не дают, никакой информации на консоли не появляется. Если что-то другое, то поясните пожалуйста.
С уважением, Павел.
Убедитесь, что порт открывается и данные идут через него. Например соединив его с другим портом на ПК и включив гипертерминал.
Подскажите пожалуйста, к какому именно порту необходимо подсоединить COM-порт и с помощью чего?
Один порт ПК к другому порту того-же или другого ПК. Чтобы убедиться, что Ваша программа передаёт через 232 данные.
Соединять кабелем, обычно белого цвета, с 2 разъёмами на 9 дырок. Кабель нуль-модемный. Длиной от 0,5 до1,5 м.
К сожалению в данный момент у меня нет данного кабеля, но я пытаюсь считать данные по RS-485 через AC4. В документации я не нашел, какой именно интерфейс нужно задать в CodeSys|Communication parameters. Не могли вы подсказать требуемый интерфейс?
обычный Com
Т.е. выставлять Serial (RS232)? Потому что RS 485 там нет.
да, именно это. но должно было хоть что-то появиться. пакет, который библиотека посылает плк.
Т.е. пока не появятся пакеты, которые библиотека посылает плк через RS 232, нет смысла пробовать посылать пакеты через RS 485?
Когда я подключаюсь через RS 485, то устанавливаю Serial (RS232), 115200. У меня не получается установить связь с устройством в CodeSys.
Доброго времени суток.
В данный момент у меня не получается прочитать параметры ни по RS-232, ни по RS-485 и поэтому возник ряд вопросов:
По поводу RS-232 мне хотелось бы узнать, уже писались программы, которые осуществляли чтение/запись параметров. И если бы я прислал вам проект на Builder и проект на CodeSys, не могли бы вы проверить, работают ли они у вас?
По поводу RS-485, не могли бы вы прислать список устанавливаемых параметров для связи с прибором в Communication Parameters CodeSys-а, а то у меня не получается установить связь с прибором.
И последнее, если не появляются пакеты, который библиотека посылает плк, то в чем может быть проблема?
С уважением, Павел.
По 485 залогинится из CoDesys невозможно, читайте, пожалуйста РЭ!
Мне бы хотелось узнать, когда открываем порт функцией OpenPort в C++Builder, не должен ли загораться светодиод Связи на плк?
P.S. Не прояснилось ли ничего по поводу RS-232? Жду ответа.
нет, не должен. прочитайте, наконец, руководство по эксплуатации, пожалуйста!
Здравствуйте.
Для проверки того, что данные идут через COM-порт мы используем программу Advanced Serial Port Monitor 3.7.1. Далее мы устанавливаем режим наблюдателя, запускаем программу на ПЛК, никаких данных не отображается в программе. Причем мы проверяли это на разных Com-портах. Каким образом можно решить данную проблему?
С уважением, Павел.