29 juni 2024

29 Juni 2024 - Geschatte leestijd: 4 minuten

Modificatie van de 80m ARDF ontvanger:

C9 en C14 vervangen en een extra C tussen massa en C14 via een wire-wrap draadje.

Siemens LOGO PLC programmeren onder Linux

Uiteindelijk eens de SoftComfort PLC software voor de Logo PLC's aangeschaft. Volgens de uitleg moet dat ook werken onder Linux. Verrassend genoeg levert Siemens dat nog steeds op een DVD in deze tijd van internet installs en USB sticks. Gelukkig had ik nog een externe DVD-lezer.

De LOGO PLC's die ik heb, zijn van generatie 8 en hebben een netwerk interface voor communicatie en programmatie. Dat scheelt weer een interfacekabel. Het zijn 2de-hands exemplaren en bevatten al een programma en hebben ze ook 'een' IP address. Maar welk?!.

Het IP adres achterhalen is simpel. Even met Wireshark luisteren welke berichten er uitgestuurd worden en ter bevestiging een netwerkscan zodat we weten welk IP-adress we nodig hebben.

Bij installatie blijkt al snel dat het een Java gebasseerde software is. De installatie zelf is wat zoeken, omdat het Linux installatie script niet uitvoerbaar is (mist de exec bit door de mount opties van mijn Linux distributie voor CD/DVD's). Eenmaal de installatie afgerond, blijkt het connecteren naar de LOGO PLC´s zelf ook nog niet te werken. Een forum post weet ons te vertellen dat de SoftComfort software op een zeer specifiek plaats zoekt naar zijn netwerk informatie. Die forum thread levert ook een shell script om alle benodigde informatie te verzamelen en die folder met de nodige informatie te vullen. Zie hieronder!

Link: SoftComfort Network Information

#!/usr/bin/env bash
# fix for Siemens LOGO!Soft Comfort
#
# Unexpected Error
#
# An unexpected error occured.
# Your data may be inconsistent and subsequent errors may occur.
# java.lang.UnsupportedOperationException: adapter type is not supported
#
NETWORK_DEVICES="$(lshw  -c network -businfo 2>/dev/null | tail -n+3 | awk '{print $2}')"
# $1 = cmd
function executeCmd() {
    local locCmd="$1"
    echo "Executing: $locCmd"
    eval "$locCmd"
}
if [[ -n "$NETWORK_DEVICES" ]]; then
    executeCmd "sudo mkdir -p /etc/sysconfig/network/"
    while IFS="" read -r device; do
        executeCmd "sudo touch /etc/sysconfig/network/ifcfg-$device"
    done                     <<< "$NETWORK_DEVICES"
else
    echo "Could not find NETWORK_DEVICE. Connect your ethernet network cable to the Siemens LOGO!"
    exit 1
fi

Over ons

Samen werken aan en delen van kennis over elektronica en digitale technologie.

Links