Pronto72 зато там есть Linux, смотреть команды в CodeSys которые смогут выполнить команды в системе... Или настройте ntp клиента в системе
Вид для печати
Pronto72 зато там есть Linux, смотреть команды в CodeSys которые смогут выполнить команды в системе... Или настройте ntp клиента в системе
Привет.
Вышел новый Raspberry Pi Imager версии 1.7.2 (для накатывания образа Raspbian).
Он записывает на карту памяти систему Raspbian и может теперь сразу же задавать первичные параметры системы: наличие SSH, HostName, WiFi и проч.
Но CodeSys с ним работает плохо. Зависает через 10-20 секунд работы.
Кто-нибудь сталкивался с этим?
Вложение 61991
Лучше образ ставить с realtime патчем на rp2 , и рантайм multicore
Ну и ставь старый , если тебе ждитерр сигналов не критичен, то можно и без реал тайм патча, https://youtube.com/shorts/VbcZS3Jn0I4?feature=share
Привет.
Хочу получить IP-адрес своей Raspberry.
Читал, что необходимо использовать SysProcessExecuteCommand2, т.к. она может отдать значение команды назад в CodeSys.
Операнд команды будет такой:
ip -f inet addr show eth0 | sed -En -e 's/.*inet ([0-9.]+).*/\1/p'
В терминале он возвращает:
192.168.9.103
Но как получить это в строке в ST программе?
Есть у кого пример использования?
Скрытый текст:
Спасибо.
UP: Пробовал с командой echo Hello, Owen! (должна вернуть Hello, Owen!).
Но результата нет:Код:PROGRAM PLC_PRG
VAR
bTest : BOOL;
testTrigger : Standard.R_TRIG;
sCommand : STRING;
refCommand : REFERENCE TO STRING;
sOutput : STRING;
refOutput : REFERENCE TO STRING;
result : POINTER TO SysProcess.SysTypes.RTS_IEC_RESULT; ---------- Странно...
END_VAR
testTrigger(CLK:= bTest, Q=> );
sCommand:= 'echo Hello, Owen!';
refCommand REF= sCommand;
refOutput REF= sOutput;
IF testTrigger.Q THEN
SysProcessExecuteCommand2(pszCommand:= refCommand, pszStdOut:= refOutput, udiStdOutLen:= SIZEOF(sOutput), pResult:= ADR(result));
bTest:= FALSE;
END_IF
Вложение 62033
В общем, получилось узнать свой IP!
Вложение 62056Код:PROGRAM PLC_PRG
VAR
xOneTime : BOOL := TRUE;
sInput, sOutput : STRING;
refInput, refOutput : REFERENCE TO STRING;
result : POINTER TO SysProcess.SysTypes.RTS_IEC_RESULT;
sMyIP: STRING;
END_VAR
IF xOneTime THEN
sInput:= 'ip -f inet addr show eth0 | sed -En -e "s/.*inet ([0-9.]+).*/\1/p"';
refInput REF= sInput;
refOutput REF= sOutput;
SysProcessExecuteCommand2(pszCommand:=refInput, pszStdOut:=refOutput, udiStdOutLen:=SIZEOF(sOutput), pResult:=ADR(result));
// IP приходит с завершающим символом, который нужно убрать.
sMyIP := LEFT(sOutput, LEN(sOutput)-1);
xOneTime:= FALSE;
END_IF
Нужно бы еще конечно добавить проверку IP от беспроводной сети. Ведь Raspberry может быть подключена и по WiFi. Тогда команда в Linux будет:
'ip -f inet addr show wlan0 | sed -En -e "s/.*inet ([0-9.]+).*/\1/p"'
Т.е. если по eth0 возвращается строка с длинной 0, то повторять процедуру для wlan0.
Скрытый текст:
возможно первая команда подойдет по ссылке https://owen.ru/forum/showthread.php...l=1#post335165 чтоб не перебирать интерфейсы
Привет.
Кто-нибудь пробовал реализовать обмен по шине EtherCAT в RaspberryPi? Контроллеры Овен не поддерживают, увы.
Я хочу подключить модуль ввода-вывода (т.е. не движение). Например, вот этот модуль.
Потянет ли Raspberry это?
Потянет ли среда CodeSys3.5 это?
Какие подводные камни появятся?
Нужна ли покупка доп.лицензий, доп.оборудования?
Спасибо.