PDA

Просмотр полной версии : Я настаиваю на рабочем примере (ST) использования 232/485 портов !!!



Boris3B
24.02.2011, 16:55
Уж перечитал я документ с названием "SysCom_V3x_E.pdf" вдоль и поперек - ну не работает ни как !!!

Опять те же ошибки. В документации:
"Enumeration COM_PORTS:
TYPE COM_Ports : (SYS_COMPORT_NONE := 0, SYS_COMPORT1 := 1, SYS_COMPORT2,
SYS_COMPORT3, SYS_COMPORT4);
END_TYPE"

У вас на сайте http://www.owen.ru/catalog/46995500 указано "Физическому порту Р1 соостветсвует com2, P2-com3, P3-com4, P4-com5."

Откуда com5?

----------

Простейшая программа виснет наглухо! Приходится убивать CoDeSys как процесс.

Я программист с 20-летним стажем, но у меня уже нет больше сил бороться!

Неужели так трудно привести пример из нескольких строчек кода, но чтоб работало?!?!?
Это будет полезно АБСОЛЮТНО ВСЕМ! От мала до велика.

Boris3B
25.02.2011, 13:13
Ну вы что, издеваетесь? 3-ю неделю я пытаюсь добиться от вас рабочего примера - а в ответ тишина. Я в конце-концов деньги платил за контроллер, а он лежит теперь мертвым грузом!

Вы хотя бы как-то реагируйте на новые посты. Какие-то сроки обозначайте. Ведь дожмет меня начальник, что придется на какой-нить сименс пересаживаться, а на носу бОльшой проект девайсов этак на 200.

Ельцов Андрей
25.02.2011, 14:42
Здравствуйте, Борис.
Под сом5 подразумевается 5й порт. почему 5й. а не 4й, потому что 1-й это консоль.
Что касается библиотеки и работы с ней. Вы же наверняка видели пример по подключению модулей. Там используется ФБ comconn, на мой взгляд, его использование более удобно чем библиотекой напрямую.
И было бы конечно очень полезно увидеть Ваш проект... Выложите пожалуйста.

Boris3B
25.02.2011, 15:41
Наконец-то!

Сразу скажу, что никто меня не переубедит использовать ФБ взамен СТ.
А вот и одна из моих многочисленных попыток:

Ельцов Андрей
25.02.2011, 16:34
Никто даже и не пытается переубеждать.
Я тоже предпочитаю ст, он, однозначно, универсальнее!
Но созданные библиотеки ни в коем случае не ограничивают применение их в ст, просто в примере показано так, а из ст их так же можно вызывать.

Boris3B
25.02.2011, 16:48
Спасибо конечно. Действительно искренне спасибо, хотя бы за то, что диалог продолжается. Мне по честному не хочется мигрировать на другое оборудование. Прикипел к ПЛК овена.
Но я вот никак не пойму, почему все вокруг, да около. Там же всего строк 10 кода, а вы мне все сходи посмотри туда, попытайся использовать это...

Конкретно. Язык ST поддерживается. Библиотека SysCom заявлена и заявлено её функционирование. Просто дайте пример работающий.
Пожалуйста.

Евгений Сергеевич
25.02.2011, 17:18
пример рабочей программы и видео (http://www.kipshop.ru/CoDeSys3.0/Video//plc_vs_syscom_vid.rar) того, что она работает

alexval2006
25.02.2011, 21:19
хороший пример и видео к нему очень пригодиться
спасибо

Boris3B
28.02.2011, 15:33
Огромное спасибо за пример! Работает. Вопросов пока больше нет. Тему можно закрыть.

Boris3B
28.02.2011, 16:56
Хотя есть еще вопрос: функция SysComWrite гарантированно запишет в порт весь переданный ей буфер или следует страховаться и устраивать цикл записи, пока кол-во записанных байт не сравняется с кол-вом байт массива предназначенного для передачи?

Boris3B
28.02.2011, 17:15
И еще: есть ли библиотека с реализованной функцией подсчета МД5?
Где вообще можно ознакомиться с перечнем новых библиотек и их функций?

Евгений Сергеевич
28.02.2011, 17:26
Допустим вам надо передать 100 байт, у вас есть массив на 100 элементов вы указываете его как источник, говорите что хотите передать все 100. при выполнение функция Write вернула значение 40, это значит что за этот цикл она передала 40 байт из 100 а остальные 60 она попробует передать в следующие циклы.

Т.е. Да, надо проверять сколько она передала и считать, чтоб количество записанных байт сравнялось с кол-вом байт массива предназначенного для передачи.

Boris3B
28.02.2011, 18:05
А если я в параметрах функций SysComWrite укажу ulTimeout := SYS_INFINITE, то она гарантированно запишет все данные? И какой смысл этого параметра в функции SysComRead?

Евгений Сергеевич
28.02.2011, 18:36
гарантированно. вопрос только за сколько. у вас же еще есть время цикла ПЛК. так что если она не уложится за время цикла то даже с SYS_INFINITE она отправит не все.

в Read: точно не знаю надо смотреть как она будет себя вести, но скорее всего она выдает байты пришедшие за указанный период времени. я ставлю туда единички чтобы не увеличивать время цикла и лучше я за несколько циклов отошлю/ прочитаю.