большое спасибо за помощь
Вид для печати
большое спасибо за помощь
Поищите программу plc_io на этом сайте и, в частности, на форуме. Она консольная и ею можно пользоваться для выкачивания файлов с контроллера.
Подскажите поддерживает ли ПЛК-160 встроенную Web-визуализацию Codesys? В настройках целевой платформы окошко напротив надписи Web-визуализация не активно.
Вопрос. Как лучше организовать хранение связных переменных? Я хочу использовать промежуточные переменные между модулями входов/выходов и логикой программы. Т.е. мне нужно данные из модулей входов перенести КУДА-ТО, чтобы потом спокойно использовать в своей программе. При этом, очень бы хотелось, чтобы данные хранились в одном месте (как структура - доступ через точку). Однако при использовании структур вроде как нельзя называть отдельные биты как вздумается, что затрудняет в последующем использование. Можно, конечно, придумать много отдельных битовых переменных, но такое решение несколько некрасиво. Подскажите, или даже ткните носом, что ли :) Первый крупный проект, теряюсь пока что...
Т.е. вы намекаете на использование структур?
Он намекает на доступ к отдельным битам в словах по номеру через точку.Цитата:
Т.е. вы намекаете на использование структур?
Однако это не имена — это индексы. И чтобы узнать, как именовать биты, обратитесь к руководству по кодесису (Указатель > bitaccess).Код:VAR
dw: DWORD;
END_VAR
dw.0 := TRUE;
dw.17 := TRUE;
Обратился. Там написано, что можно обратиться к биту через фиксированный номер (dw.0) или через переменную (dw.numb). Про назначение названия каждому биту по-отдельности не нашел... Придется делать через создание нового типа данных.
Подскажите, пожалуйста по такому вот вопросу. Как можно запустить в программе таймер ? Т.е, например, в программе объявлен таймер Tmr1: TOF, и мне его надо запустить если выполняется какое-то условие. Я знаю как его запустить, допустим, сигналом со входа, например кнопкой, а вот как сделать то же самое просто внутри программы не пойму.
Буду очень благодарен за подсказку.
И ещё вопрос. Если я запущу в программе цикл FOR, например, от 1 до 10000, он тормознёт цикл ПЛК в этом месте и пока не выполнится, цикл ПЛК соответственно дальше не пойдёт и ПЛК перезагрузится, или счётчик в цикле FOR будет увеличиваться с каждым проходом цикла ПЛК и соответственно перезагрузки не будет ?
Вместо сигнала со входа Вы можете подставить любой другой битовый сигнал (переменную). ПЛК не перезагружается в любом случае. Циклы работы - не перезагрузка.
Где то читал, что большие циклы в теле программы для ПЛК - моветон. Типо зачем придумывать дополнительные циклы, если работа ПЛК сама по себе представляет собой бесконечный цикл.
Здравствуйте. Есть вопросы по работе с быстрыми входами плк110- 60М:
Самое главное, почему контроллер начинает работать из прерываний таймера только при тайминге 60мкс.
Написал небольшой код счёта энкодера из прерываний таймера,основная программа взята из примера покритекуйте
in:=SysPortIn(0);
IF in.0<>Old_in THEN
IF in.0 THEN
IF in.1 THEN
Schet:=Schet+1;
ELSE
Schet:=Schet-1;
END_IF
END_IF
END_IF
OLD_in:=in.0;
спасибо
Почему у меня не запускается таймер такой командой:
tmr1:TOF объявили таймер
Flag:BOOL;
дальше в программе:
tmr1 ( IN:=Flag, PT:=T#20s );
тут условие, если оно истина тогда
Flag:=TRUE;
Flag:=False;
Почему делаю так, просто я таким образом имитирую нажатие кнопки, но у меня таймер не запускается, эта часть просто как бы пролетает и дальше, соответственно я получаю не ту реакцию программы какую надо.
Чтобы было понятнее, что мне надо, скажу, я делаю управление насосами с функцией АВР, всё работает, кроме этого таймера. Я поэтому и спрашиваю про цикл FOR, может его вставить между Flag:=TRUE цикл от 1 до 1000; Flag:=FALSE ? Прошу мне этот момент разъяснить подробнее, просто я ещё никак до конца не могу переключиться с программирования МК на ПЛК :)
как только Вы присвоите флагу фальш, на следущем цикле таймер перестанет работать, только когда tmr1.Q станет равным истине, можно входной переменной присвоить фальш
Направьте пожалуйста, как соединить ВКТ-5 и например СПК207. В будущем хотелось бы использовать 8 дискретных входов и 16 аналоговых входов теплосчётчика в качестве источника параметров. Набираю поиск ВКТ на форуме говорит что нет.. Гдето на сайте ОВЕН я видел месяца три назад что там разъяснения дают по нестандартным протоколам .. не могу найти(((((
На данный момент на подающей трубе висит три термометра сопротивления, каждый для своих нужд, а ведь надо то всего один, и в дальнейшем просто использовать эту инфу например с ВКТ 5
ВКТ5 и ВКТ7 имеют нестандартный протокол, и поэтому данное подключение при отсутствии опыта может вызвать затруднения.
Мы делали подключение ВКТ7.
Пример можем выслать - пишите в почту.
Как подсказали коллеги - у ВКТ5 "сильно ModBus подобный протокол".
С ним можно попробовать работать с помощью нашей библиотеки ModBus.lib
Здравствуйте.
Ища ответа на свой вопрос натолкнулся вот на такой пост:
(Здравствуйте!
Для периодов срабатывания высокочастотного таймера чаще, чем раз в 60 мкс (т.е. получается раз в 40 мкс и раз в 20 мкс) необходимо использовать прошивку версии 2.10.9. Для версии прошивки 2.14 период срабатывания должен быть не менее 60мкс. Но для поной работоспособности этого функционала все-таки советуем откатиться до прошивки 2.10.9, т.к. на прошивке 2.14 может происходить сброс остальных (не быстрых) выходов, если они задействованы в программе, при срабатывании высокочастотного таймера.
На данный момент ведутся работы по созданию новой версии проошивки, где должен быть поправлен и этот момент в том числе, в ближайшую неделю - две, будет произведено ее тестирование.
P.S. На текущий момент советутем откатываться до прошивки версии 2.10.9 для работы с высокочастотным таймером.)
перепрошил и все заработало, как-то у ОВЕН все сложно похоже на испорченный краковяк (почему-то все шаги назад) и ни гу-гу на вопрос.
Спасибо за участие.
Здравствуйте
Заработало да не совсем, прорамма работает стаймингом 20мкс есть счет и в +и в - но только есле вращать энкодер медленно в протвном случае пропускает безбожно. Я считал как 2000 им на оборот и 500об в мин получается что то около 16000 им в с (60мкс примерно) вродибы все должно работать ан нет.
Где я делаю ошибку? Неоставляйте без ответа Спасибо.
Здравствуйте! Опишите пожалуйста расчет адреса в HEX для OPC LECTUS, желательно с примерами.
(примерное описывается в посте №982)
ПЛК -100RM
Можно ли сделать эту адресацию для переменных привязанных к FB?
Спасибо!
Здравствуйте. Контроллер ПЛК63. После загрузки программы в контроллер, с дисплея вносились изменения. Сейчас при подключении к контроллеру пишет - программа была изменена, закачать? Говорю - нет, вижу онлайн программу. Как сохранить на диск копию для редактирования?
Это сообщение говорит о том, что в момент установления связи в CoDeSys на ПК открыт проект отличный от того, что был ранее залит в контроллер.
Изменение с дисплея не влияют на изменение проекта.
Вопрос:
Что значит ошибка компилятора 4060 "Параметр 'VAR_IN_OUT' '<название параметра> в '<название программы> требует переменной с доступом по записи"? Подозреваю, что что-то очень легко решаемое, но понять не могу. Что это вообще такое "переменная с доступом по записи"?
в мануале только скудное: "Для параметра VAR_IN_OUT должен иметь доступ на запись, поскольку его значение может быть изменено в POU." чего мне для понимания недостаточно. Поиск по форуму тоже ничего не дал.
Спасибо.
у нас для записи не доступны физические входы плк и константы
То есть описывать входы/выходы ПЛК как VAR_IN_OUT нельзя, так? А что же тогда за переменные описываются как VAR_IN_OUT?
доброго времени суток. подскажите пожалуйста как разложить строку на символы-элементы массива array of string в ST базовыми средствами? Необходимо в дальнейшем собрать из этих элементов другую string переменную
Наверное, array of byte, а не array of string? Не надо ничего раскладывать. Всё давно разложено за вас:http://images.devs-on.net/Image/oKOp...ysUntitled.pngКод:PROGRAM PLC_PRG
VAR
str: STRING(6) := 'Hello';
arr: POINTER TO ARRAY [0..6] OF BYTE;
END_VAR
arr := ADR(str);
Если же речь о выделении подстрок, то SysMemCpy — ваш товарищ.
Yegor, capzap,
спасибо!
Здравствуйте. При компиляции проекта с POU обрабатываемыми по системным событиям появляется предупреждение:
2501: A callback function is not allowed to contain local variables.
Что делаю неправильно?
Спасибо.
Можно поступить по разному, самому перевести или отыскать в русскоязычной справке значение ошибки. В справке так же можно найти из чего должна состоять функция по событию.
А чтоб другим не ломать голову, что же у Вас там не так, исходный код выложите, чтоб более предметом разговаривать
Цитата:
2501: A callback function is not allowed to contain local variables.
Что делаю неправильно?
[А это текст от меня, т.к. движок форума считает, что я должен написать минимум 10 символов]Цитата:
On PPC, functions used as Callback have got no stack. So they must not contain local variables.
A warning message shall be displayed at compile if a function with name prefix "Callback" has local variables.
the problem is not special for PPC. So, if a POU, registered as callback via taskconfiguration, contains local variables, a warning is produced.
To handle the situation when a callback is used with SysCallbackRegister, we produce also a warning for all functions with local variables starting with "callback" on PowerPC-systems. So sometimes the warning may be produced twice.
Здравствуйте! У меня такая проблема: требуется ввести переменную, в которую бы записывался телефонный номер, причем значение этой переменной нужно менять без компиляции. Пыталась сделать это через EasyWorkPLC. Но максимальная длина переменной в конфигураторе — 32бита, 11-ти значный номер не помещается. Буду признательна за любую помощь))
телефон помещается в строку, строка может быть и массивом байт, массив можно заполнить как разом так и по элементно
Из easywork я могу обращаться только к константам, записанным в конфигурации плк, а там указан максимальный размер... Я чего—то не понимаю.
к примеру если сейчас речь о модбас, то создайте шесть регистров этого хватит на строку из 12 символов. Я бы показал пример какой нибудь но у меня под рукой только телефон
чего это я :) есть вариант совсем простой. Разделите номер на сам номер и код оператора или города а в плк их преобразуете в строки и склеите
Спасибо за помощь!
Разделить номер телефона на 2 части - я так и реализовала сейчас, только у меня 6 номеров и, возможно, разных операторов :) Прочитала незнакомое слово - модбас. Буду разбираться.
P.S. Если кажусь совсем тупой - строго не судите. Первый раз увидела контроллер 3 недели назад :) А регистры - вообще тёмный лес...
Как разберётесь с модбас-регистрами, могу накидать программу для передачи на них телефонного номера с компа.
Здравствуйте,Всем, доброго времени суток.
Говорила мне мамка в молодости, учи немецкий в жизни пригодится, а я вот не послушал.
В русскоязычной справке список предупреждений заканчивается на 2500.
Спрашиваю потому, что сам разобраться не смог.
К сожалению мне доступны вложения только в виде изображений.
Спасибо.