Вложение 15890
Там и кнопочка печать есть
Вид для печати
Вложение 15890
Там и кнопочка печать есть
Печатает только она текущий раздел:)
функция Modbus 16 H MB_WR_REGS - библиотека Modbus 3.2.0.
В буфере меняется содержимое, то есть первый запрос в норме,
далее в буфере каша, на выходе ерунда. Дело в задержках может?
send_Many_Parametrs_modbus(
Enable:= enabl AND (NOT cmpEndOperating), (* разрешение работы блока *)
Mode:= MB_RTU, (*режим передачи*)
DevAddr:=2, (*адрес*)
FirstAddr:=50, (*ячейка*)
Quantity:= 1,
ComHandle:= hand,
TimeOut:= TimeOutMy,
Buffer:=Buffer_My, (*Вот здесь косяк выходит*)
Complete => cmpEndOperating,
Exception => ExceptionMy,
RegCnt => Cmt_My
);
Работает
Вложение 15898
Sashokxxx, параметр send_Many_Parametrs_modbus.Enable надо после первого вызова сбросить в FALSE. Далее вызывать блок со сброшенным параметром до тех пор, пока Complete будет TRUE. И только потом смотрите буфер.
Согласен
send_Many_Parametrs_modbus(
Enable:= NOT cmpEndOperating, (* разрешение работы блока *)
Mode:= MB_RTU, (*режим передачи*)
DevAddr:=2, (*адрес*)
FirstAddr:=0, (*ячейка*)
Quantity:= 1,
ComHandle:= hand,
TimeOut:= TimeOutMy,
Buffer:=Buffer_My,
Complete => cmpEndOperating,
Exception => ExceptionMy,
RegCnt => Cmt_My
);
Buffer:=Buffer_My - первое, у меня в буфер Buffer_My - записывается, хотя я пишу в Buffer. Это нормально, что пишется в Buffer, а потом изменяется Buffer_My?
Это в принципе не проблема можно сделать так: перед тем как записать снова в Buffer, я пишу нужные данные в мой буфер Buffer_My (Buffer_My_copy:=Buffer_My; - сделал копию, а перед вызовом
send_Many_Parametrs_modbus делаю Buffer_My := Buffer_My_copy; ) Допустим работает, реально обмен идет, на выходе правильное значение.
Но периодически в CodeSys я наблюдаю Exception = 255 (то есть ошибка таймаута) TimeOutMy - делал разный 50 мс сейчас. В конфигураторе 50 мс, на аварию устройство настроено выходить при разрыве связи 5 секунд.
Вопрос почему возникает исключение(где посмотреть)?
И второе, можно ли как то посмотреть исходный код send_Many_Parametrs_modbus (функции библиотеки Modbus.lib) может тогда прояснится что делается с буфером, очевидно что она берет как то указатель на мой буфер и сует туда ответ какой то. Добрые люди поделитесь соображениями!)
Еще немного поразмыслив и порыв форум http://www.owen.ru/forum/showthread.php?t=8556&page=5 нашел что то похожее, начал экспериментировать, действительно, на скорости обмена 9600 появляется ошибка тайм аута, если поменять скорость выше 115200 - я использовал, ошибки нет. Дело в библиотеке. С OwenLib ошибок не возникало. Так что вопрос как отредактировать библиотеку остается открытым, если можно подробнее.??? Так же поделитесь кто чем пользуется для связи НЕ с овеновским оборудованием, у меня 2 устройства в системе сторонние из всего что я нашел - решил что Modbus.lib более менее подходит. Через конфигуратор Codesys возможно получится одно подключить, а вот второе оборудование только через библиотеку, так как там ASCii.
Библиотека открытая, можно открыть ее как обычный проект. Сделать полный доступ для просмотра и редактирования Project -> Object -> Properties -> Full Access.
Буфер передается по ссылке (тип параметра VAR_IN_OUT). Зачем делать копию? Приготовили нужный буфер и передаем его в блок. Используйте конструкцию case.
case step of
0: кладем значение в буфер
step:=2;
1: (*вызываем блок с Enable:= TRUE*)
send_Many_Parametrs_modbus(
Enable:= TRUE, (* разрешение работы блока *)
Mode:= MB_RTU, (*режим передачи*)
DevAddr:=2, (*адрес*)
FirstAddr:=0, (*ячейка*)
Quantity:= 1,
ComHandle:= hand,
TimeOut:= TimeOutMy,
Buffer:=Buffer_My,
Complete => cmpEndOperating,
Exception => ExceptionMy,
RegCnt => Cmt_My
);
send_Many_Parametrs_modbus.Enable:=FALSE; (*изменяем параметр Enable* перед следующим вызовом блока)
step:=2;
2: (*продолжаем вызывать блок, пока не отработает полностью (Complete=TRUE)*)
send_Many_Parametrs_modbus(Buffer:=Buffer_My); (*остальные параметры можно не указывать, т.к. они не изменяются, а буфер надо указывать, иначе компилятор ругается*)
...
step=3;
3:
делаем паузу перед следующим опросом.
end_case
попробую, а задержку между посылками запроса с Enabl:=true какого порядка, 10мс, 50мс... ? И еще я так то встречал, что можно открыть как проект, может где еще качать такую надо? У меня на диске вот какая ( см. во вложении). Я не понял как ее можно открыть как проект. Может другое расширение должно быть, не подскажите, где тогда взять или у кого есть?
И такой общий вопрос, для поддержания связи мне нужно делать запрос как минимум раз в настроенное в конфигураторе время Аварии ? Если так то и время паузы между посылками может быть таким. Например мне нужно посылать значения раз в секунду, аварию настраиваю на 5 секунд, а паузу между запросами на 1, так я понимаю?
Может кто поделится небольшим проектиком в Codesys3.5?
Подскажите почему триггеры F_TRIG и R_TRIG в схеме не работают ведь у них выход BOOL и лампочка не загорается в работе не по переднему ни по заднему фронту?
Вложение 15907
а на счетчике CTU правильно работает
Вы вообще что нибудь знаете????
ООО "БЛС инжинеринг", потому что триггер так устроен. Принцип работы можно посмотреть в файле CoDeSys_V23_RU.pdf страница 345 (можно скачать с сайта).
Как можно сделать в LD так чтобы достигая указанной даты появилась TRUE?
ООО «БЛС ИНЖИНИРИНГ», вы решили пересесть с буржуев на отечественных производителей?
Выкладываю рабочий пример записи в регистр команда 0x16, может кому пригодится. Внимание запись идет 1 раз в секунду. Авария в ведомом (Slave) устройстве выставлена больше этого времени, в моем случае 5 секунд. В примерах в описании библиотек есть ошибки, они описаны кое где на форуме, в частности нужно указывать дескриптор порта, а не номер при вызове функции записи. Так же в моем случае использовался СПК207, номер порта в функции открытия нужно указывать +1 от реального, так же как и в организации связи внутренними возможностями Codesys (я имею ввиду конфигуратор). То есть у меня порт COM2, значит указываю 3 номер.
Я понимаю что это элементарный вопрос но пака я его не решил…
Подскажите как мне в CODESYS V3.5 SP5 соединить параллельно несколько элементов, как показать на скрине
Вложение 15913
И где можно подробнее прочитать о языке LD
Есть желание изучить язык ST. Подскажите какую литературу почитать? Может кто нибудь примерами с комментариями поделиться.
Как я ранее был говорил что я только учусь.
Мы производим оборудование для розлива жидкости,
пример
Вложение 15920 Вложение 15922 Вложение 15923
в нашей системе много датчиков (герконы и оптические) и пневмоцилиндров вот я лично думаю что больше нам подойдет язык LD не спорю удобнее конечно CFC но в данный момент я не видел примера как подключать (датчики герконы) как нормально открытые так и нормально закрытые.
Контроллеру всё равно что вы подключаете он не работает с конкретным датчиком, а с переменной которой Вы можете задать инверсию например получиться нормально замкнутый, а что сразу в КДС3,5 может сначала в 2.3, там попроще будет и примеров побольше
А что Дельта сильно подорожала?
Большинство мы используем дискретные входы и выходы, входов примерно 35 а выходов около 45 ну это взаимозависимости от модели машины.
Нам дали из ОВЕНА на растерзания СПК 107 без модулей вводи и вывода, я пытался писать на LD немного получается.
Не решили ещё какие будут контроллеры и модули, я где-то видел что в разработке есть СПКхххД ну это пока так.
Вот не знаю с таким количеством входов и выводах как нам быть и что лучше подобрать....
Посмотрите кинул в личку,мне вчера на пробу привезли сказали что не дорого и как раз LD
как я понял в этой теме можно задавать разные наивные и глупые вопросы..
На сайте кодесис https://www.codesys.com/download.html
раздают версию CODESYS V3.5 SP5 Patch 4 (current version)
Может там уже почистили все баги? Или не брать в голову
и смело переходить с sp4 на ту sp5 которую Овен раздаёт?
(c) Хрен редьки не слаще ;-) А вообще качайте с CoDeSys.com, просто бывает что в новых релизах баги не только исправляются но и добавляются. И бывает, что первым кто узнает о появлении нового бага становишься ты, если используешь последние релизы. Глобально без изменения прошивки под последний релиз мало что меняется.
Подскажите счётчик CTU нормально посчитать около 50-100 импульсов в секунду?
Если нет то как можно посчитать их?
И сколько можно поставить CTU (количество в шт.) в СПК 107?
И где на перечисленном Вами оборудовании такое количество переключений, да еще и в секунду