Спасибо! Как раз такой и заказал :) завтра у меня будет малинка 2, но usb-rs485 и RTC идти будут долго. Напишу как всё прошло, думаю перебросить проекты с СПК107. Жаль что у Овена нет аналогов.
Вид для печати
Спасибо! Как раз такой и заказал :) завтра у меня будет малинка 2, но usb-rs485 и RTC идти будут долго. Напишу как всё прошло, думаю перебросить проекты с СПК107. Жаль что у Овена нет аналогов.
Всем привет. Человек постами выше давал ссылку http://www.ebay.com/itm/400503978923 - часы реального времени + память для retain. Вопрос, кто-нибудь решал проблему сохранения значения в память 24ххх?
retain можно и на флешку сохранять в виде файла и при загрузки подгружать обратно (а в программе просто VAR RETAIN использовать и все)
PROGRAM RetainManager
VAR_INPUT
RetainFilePathName : STRING := '/root/Retain';
SaveFilterTime : TIME := T#5S;
ForceSave : BOOL;
END_VAR
VAR
Init: BOOL;
pRetainFilePathName : POINTER TO STRING;
pCurrentApp : POINTER TO APPLICATION;
RetainAreaSize: __XWORD;
pRetainArea: POINTER TO BYTE;
dwCRCSave: DWORD;
dwCRC: DWORD;
TOF1 : TOF := (PT := SaveFilterTime);
R_TRIG1: R_TRIG;
END_VAR
VAR_OUTPUT
RTSIECResult: cmpapp.RTS_IEC_RESULT;
AttemptSaveCounter: INT;
END_VAR
IF NOT Init THEN
pCurrentApp := AppGetCurrent(ADR(RTSIECResult));
IF RTSIECResult<>0 THEN RETURN; END_IF
RetainAreaSize := AppGetAreaSize(pApp:= pCurrentApp, uiType:= DA_RETAIN, pResult:= ADR(RTSIECResult));
IF RTSIECResult<>0 THEN RETURN; END_IF
pRetainArea := AppGetAreaAddress(pApp:= pCurrentApp, uiType:= DA_RETAIN, pResult:= ADR(RTSIECResult));
IF RTSIECResult<>0 THEN RETURN; END_IF
IF LEN(RetainFilePathName) <> 0 THEN
pRetainFilePathName := ADR(RetainFilePathName);
ELSE
pRetainFilePathName := ADR(pCurrentApp^.szName);
END_IF
RTSIECResult := AppRestoreRetainsFromFile(pCurrentApp, pRetainFilePathName^);
CASE RTSIECResult OF
0: // #define ERR_OK 0x0000
16#1E: // #define ERR_SIGNATURE_MISMATCH 0x001E /* Signature mismatch of an api function */
16#32: // #define ERR_FILE_ERROR 0x0032 /* File error. e.g. cannot open a file for writing because it could be write protected */
ELSE RETURN;
END_CASE
dwCRCSave := CRC32Finish(ulCRC:= CRC32Update(ulCRC:= CRC32Init(), pData:= pRetainArea, ulSize:= RetainAreaSize));
Init := TRUE;
END_IF
R_TRIG1(CLK := ForceSave);
dwCRC := CRC32Finish(ulCRC:= CRC32Update(ulCRC:= CRC32Init(), pData:= pRetainArea, ulSize:= RetainAreaSize));
IF dwCRC <> dwCRCSave OR R_TRIG1.Q THEN
IF NOT TOF1.Q OR R_TRIG1.Q THEN
RTSIECResult := AppStoreRetainsInFile(pCurrentApp, pRetainFilePathName^); // записасать в файл
IF RTSIECResult = 0 THEN
dwCRCSave := dwCRC;
END_IF
AttemptSaveCounter := AttemptSaveCounter + 1;
TOF1(IN := TRUE);
END_IF
END_IF
IF TOF1.Q THEN
TOF1(IN := FALSE);
END_IF
http://forum.codesys.com/viewtopic.p...=5722&start=15
Спасибо за совет. А вы не пробовали с внешней памятью работать? Кодесися поддерживает? В Линухе то я приконектился к чипу все хорошо, вижу адрес, читаю - пишу. А вот в кодесис вопрос.
можно сделать скрипт на bash и вызывать его из кодезиса с несколькими параметрами.. или просто писать в именованный канал как /dev/mymemory как в файл (лучше второй вариант)
Добрый день!
Осваиваю Codesys + Raspberry Pi 2 (далее RPi). Возникла проблема на этапе развертывания на RPi Modbus RTU Master/Slave. Насколько я понимаю необходимо сделать следующие вещи:
1. Подключить преобразователь USB<->RS к RPi, и через dmesg посмотреть как он стал доступен в системе. В моём случае это /dev/ttyUSB0.
(dmesg выдал: usb 1-1.4: pl2303 converter now attached to ttyUSB0)
2. На RPi в файл /etc/CODESYSControl.cfg добавить:
[SysCom]
Linux.DeviceFile=/dev/ttyUSB
portnum:=COM.SysCom.SYS_COMPORT1
3. Перезагрузить RPi
4. В проект CODESYS добавляем "Modbus COM", а к "Modbus COM" добавляем либо "Modbus Serial Device" (если хотим Slave), либо "Modbus Master" (если хотим Master).
5. Настраиваем всё, что добавили.
6. Собираем проект и отправляем его в RPi
В качестве базового проекта я использовал Onewire (он идёт в комплекте вместе с пакетом для работы с RPi). Всё что касается onewire в нём отлично работает: датчик температуры опрашивается и через web-интерфейс можно данные с него посмотреть.
В моём случае (см. рис.), почему-то, при просмотре в online режиме напротив modbus устройства вместо зелёных стрелок, которые говорят о том, что всё ОК, стоят треугольники с красной рамкой, а в статусе устройства указано:
PCI-BUS: No driver found
SerialPort: No driver found
Вложение 21573
Может ли это быть связано с тем, что я использую пока только двух часовую демо версию (не успел пока купить полную)? Но, насколько я понимаю, в демо ограничение связано только со временем работы, а функционал полный.
Цитата с сайта: Without purchasing a license (just download) the CODESYS Control for Raspberry Pi runs for two hours without functional limitations and shuts down automatically (demo).
Или всё дело в том, что я каким-то образом не подключил драйвера?
Проект приложил к письму.
Буду очень благодарен за помощь!
Попробуй компорт в кодезисе с 1 на 4, 3, 2 поменять - он иногда их по разному подхватывает.
Спасибо за советы!
Попробовал, но как-то не завелось)
Изучение логов дало следующий результат:
- в файле /tmp/codesyscontrol.log есть следующие записи:
1452097627: Cmp=OnlineLicenseManager, Class=4, Error=0, Info=0, pszInfo=**** License for IoDrvModbusSerial not installed.
1452097627: Cmp=CmpIoMgr, Class=4, Error=1, Info=1, pszInfo=**** Update configuration failed from driver <iodriver>IoDrvModbusTCPSlave</iodriver>
(полный лог прикреплен к сообщению)
- в логах CODESYS та же информация:
Вложение 21656
Я так понимаю, мои неудачи в работе с Modbus связанны именно с этим. Исправится ли эта ситуация, после покупки лицензии (я пока работаю в демо режиме)?
Можно ли в демо режиме как-то загрузить эти драйвера? (CODESYS вроде как полнофункциональный должен быть даже в демо режиме)?
Спасибо!
Продолжение следует...
Развожу плату IO для Raspberry, должны будут сделать шаблон пока, без металлизации и один из старых вариантов.
Пока вот пришел к такому варианту. количество входов/выходов 7-9, 8-8, 9-7 (два пина можно переключать либо на вход либо на транзисторный выход).
7 выходов могут быть либо релейными 5А (реле SRA), либо аналоговыми 0-10В (аналоговые выходы управляются ШИМ с соответствующих пинов Raspberry), схема от Вольд-а с гальванической развязкой.
На плате разведен вторичный ИП, которым можно записать либо аналоговые выходы 12В, либо сам Raspberry, если нет аналоговых выходов.
Плата питается 24В.
Собственно гляньте что вышло, разводку еще надо перепроверять ессно, но может что бросится сразу в глаза из ляпов ?
Выглядеть будет примерно так как на картинках.
Собственно собираюсь заказывать у китайцев, хотя может и у нас где. Интересует сколько штук заказывать, кто потом подпишется на покупку платы ? мне явно 10 штук не надо, точно уйдет 2 или может 3 штуки сразу.
Еще такой момент. стоит ли расширить плату влево и сделать еще один вторичный ИП, чтобы от общего БП 24В питать и плату и аналоговые выходы и сам Raspberry ? Это увеличит плату и соответственно цену за нее.
В том виде, в котором она есть, по калькулятору http://newservice.rezonit.ru при заказе 10 шт плата должна выходить 485 рублей с копейками. при 20 шт около 350р. Китайцам пока не засылал, так как плата еще не конечная, будут поправки.
Размер платы 108х97 мм.
Если кто знает где заказать дешевле, буду рад инфе.
Попробовал сбоку расположить еще один вторичный ИП, и тут же нарисовалось куча свободно места... как бельмо на глазу :)
Корпус не рассматривался вообще, идея была совместить стойки Raspberry и платы. Высота стоек любая, так же можно шлейфом соединять.
Удлинителей "мама" не нашел, даже не знаю, есть ли такое. Длинные штыри есть, но выпаивать из Raspberry для замены точно не буду.
Так же должна приехать плата "Банана Пи" двухядерная с Wi-Fi на борту. Вроде по GPIO разъему она должна совпадать, а вот крепежные увы не совпадают.
Одна из последних корректировок это сделать возможность установки на оба варианта компьютеров.
Да, Raspberry Pi 2 полностью идентична B+ по контактам и крепежу. Размер вообще тютелька в тютельку при этом в 4 раза шустрее.
Платы несколько иного формата, правда без гальванической развязки, в Китае есть. Цель то какая, в пром. шкаф засунуть - без корпуса несерьезно. Я думал тоже в эту сторону, но отталкивался от того, что необходимо найти нормальный корпус и уже под него что-то придумывать.
В конце концов дефицит свободного времени победил и идея умерла :-).
RV9WFJ применение конечно для дома. У себя хочу заменить ПЛК100 на Raspberry+CDS.
Идея была сделать именно сендвич для экономии места. Ведь нам не надо пялиться в шкафу на Raspberry и его пару светодиодов, вот сверху и устанавливается плата.
Над корпусом не думал по простой причине, ставятся стойки и тонким оргстеклом делается кожух с загибанием сторон и вырезами под разъемы. Raspberry имеет свой корпус.
Адрей покупаете крепеж на DIN у IEK (даю наводку - шинки нулевые на держателях). Или например крепеж на DIN для устройств MOXA и т.д. и т.д.
А, ну раз в сарай то я в вашей команде :-). У меня сейчас Raspberry за котлом присматривает и насосами управляет. Из за наличия огромного теплоаккумулятора и излишнего кол-ва батарей сделал управление циркуляционникамми на Raspbary. Правда плата мне вроде как не понадобилась для этого, все ворохом в боксике просто лежит.
Ну я по деньгам посмотрю, постараюсь заказать сразу штук 20 , чтобы платы вышли дешевле, а там как получится.
з.ы. немного откорректировал плату, она будет одеваться на Raspberry Pi и на Banana Pi M1+, она уже доехала до города, но на почте еще не появилась.
Плюс добавил еще один вторичный источник питания, чтобы был общий БП на 24В и при условии питания Raspberry и аналоговых выходов собираем два вторичных ИП, если аналоговых выходов нет или Raspberry питаем от собственного источника то просто отрезается от платы кусок с разведенной схемой Step-Down DC конвертером и используем его где хотим.
Ща перезалью картинки что примерно вышло.
Вопрос по разводке платы, есть возможность добавить еще одну плату, будет впаиваться вместо реле с обратной стороны, симисторный выход на MOC3041 + силовой симистор. В случае MOC3041 будет только включение выключение, так как в нем заложен контроль перехода через ноль.
А вот в случае применения например оптосимистора без контроля ноля, будет ли сам Raspbery успевать ловить переход через ноль, если ему добавить схему контроля 220В ? что-то сомневаюсь в этом ?
А почем нынче опиум для народа, то есть заказные платы?
dremes пока не знаю, по калькулятору (приводил кажется ссылку выше) основная плата должна выйти примерно 350-400 р. Дополнительная сколько выйдет не считал.
У Китайцев пока смысла нет спрашивать, пока они НГ свой не отметят. Возможно даже дешевле.
Это при условии, если я 20 шт сразу закажу.
Народ, кто-то может набросать программу для Raspberry в CDS 3 для проверки входов, выходов.
Больше интересуют выходы. По разводке платы -
OUT 1 - GPIO25
OUT 2 - GPIO18
OUT 3 - GPIO23
OUT 4 - GPIO24
OUT 5 - GPIO17
OUT 6 - GPIO27
OUT 7 - GPIO22
На них возможна установка аналоговых выходов посредством ШИМ
IN 9 - GPIO12 - Возможен контроль перехода через ноль сети 220В (Zero Cross), возможность включить его для прерывания по входу и управление открытием симисторов, если они подключены к указанным выходам ? (Больше всего интересует проверка этого варианта для диммирования)
Добрый день . Тема заглохла ?
В кодесисе недавно . малинку ещё только заказываю .
Встал вопрос по выбору малинки . Совместима ли новая малина (распбери пи модел 3 ) ?
по вопросу
Какой диапазон ШИМ ,будет ? вольтаж интересует 0-10 вольт , ибо много железок управляются именно этим током.
Хотя если если подумать то я всё равно в доле .
Буду одну платку. Геофизически в Сочи проживаю.
melky Кинь продробности чего именно надо . без платки и малинки будет сложно но может что то и придумается .
Тема не заглохла, заглохли деньги на тему :)
я тут спалил один микрокомпьютер, собрав преобразователь 24В-5В на одной из микросхем, не понял почему пока, но в итоге переделываю схему на другую микросхему DC-DC. Платы пока не заказывал, но определился с размерами и ценой.
Плата выйдет примерно 330-340 р по нынешним ценам курса.
Местные (Ростов) залупили на сотню баксов дороже мой вариант.
Pi 3 вроде по размерам, крепежным элементам и GPIO по идее совпадает. GPIO надо проверить
Дык вроде аппаратно чуть другое это PI 3 . процессор другой . 64бит.
Стоит вообще её брать ? или pi2 какую взять , дешевле и вообще вся комплектуха у китайцев имеется .
Будут они уметь 0-10 вольт ?
На счет 0-10В Вольд выкладывал схему на LM358 с подключением к ШИМ выходу Pi, ее и буду применять.
Добрые люди! Подскажите как с Pi 2 подружить такую вещь: http://ru.aliexpress.com/item/TTL-to...186670924.html
отключить ком порт от консоли в /boot/config ... или где то тут и подключить его к Runtime Codesys .. там надо в файле конфига кодезис прописать
Dimko для чего вам этот модуль ? Вы сможете его программировать ?
А еще этому конвертеру надо дергать пины для приёма или передачи, а есть мк автоматические.
Тоесть надо как минимум 3 пина задействовать.
именно, надо переводить прием и передачу программно.
Есть RS485 - TTL с автоопределением передачи
он не то что нужен прям он просто есть)) я его к МК прикручивал, и дергал пины. Буду юзать Usb.
http://ru.aliexpress.com/item/Single...385757602.html
Вот с автоопределением, но еще не тестировал, руки не доходят
Scream да не за что, сам сперва заказал первый вариант, понял что дергать нечем, все-таки не к МК подключение, заказал уже вторые.
Народ подскажите, без лицензии обмен можно попробовать через свисток Usb 485?
Делал все по инструкции в посте #73, прописал в конфиге, а ругается что Нету устройства и говорит что лицензии нету как у человека в посте #97.
можно пробовать... все работает через шел ssh введи что там у тебя в ls /dev/tty* говорит
Что-то вроде этого:
ls /dev/tty*
/dev/tty /dev/tty19 /dev/tty3 /dev/tty40 /dev/tty51 /dev/tty62
/dev/tty0 /dev/tty2 /dev/tty30 /dev/tty41 /dev/tty52 /dev/tty63
/dev/tty1 /dev/tty20 /dev/tty31 /dev/tty42 /dev/tty53 /dev/tty7
/dev/tty10 /dev/tty21 /dev/tty32 /dev/tty43 /dev/tty54 /dev/tty8
/dev/tty11 /dev/tty22 /dev/tty33 /dev/tty44 /dev/tty55 /dev/tty9
/dev/tty12 /dev/tty23 /dev/tty34 /dev/tty45 /dev/tty56 /dev/ttyAMA0
/dev/tty13 /dev/tty24 /dev/tty35 /dev/tty46 /dev/tty57 /dev/ttyprintk
/dev/tty14 /dev/tty25 /dev/tty36 /dev/tty47 /dev/tty58 /dev/ttyUSB0
/dev/tty15 /dev/tty26 /dev/tty37 /dev/tty48 /dev/tty59
/dev/tty16 /dev/tty27 /dev/tty38 /dev/tty49 /dev/tty6
/dev/tty17 /dev/tty28 /dev/tty39 /dev/tty5 /dev/tty60
/dev/tty18 /dev/tty29 /dev/tty4 /dev/tty50 /dev/tty61
dmesg | tail
[ 37.360021] ch341 1-1.5:1.0: device disconnected
[ 38.484950] cfg80211: Calling CRDA to update world regulatory domain
[ 39.894980] usb 1-1.5: new full-speed USB device number 6 using dwc_otg
[ 39.998139] usb 1-1.5: New USB device found, idVendor=1a86, idProduct=7523
[ 39.998171] usb 1-1.5: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 39.998187] usb 1-1.5: Product: USB2.0-Serial
[ 39.999561] ch341 1-1.5:1.0: ch341-uart converter detected
[ 40.003761] usb 1-1.5: ch341-uart converter now attached to ttyUSB0
[ 41.644967] cfg80211: Calling CRDA to update world regulatory domain
[ 44.804969] cfg80211: Exceeded CRDA call max attempts. Not calling CRDA
В конфиге
[SysCom]
Linux.Devicefile=/dev/ttyUSB0
portnum := COM.SysCom.SYS_COMPORT1
Порт перебирал 1,2,3,4...
надо без нуля :) Linux.Devicefile=/dev/ttyUSB
Порт перебирал 1,2,3,4... - это надо в самом кодезисе делать там где на модбасе номер порта указываешь.