PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Befehle über RS232 schicken und dann Relais schalten



DoKhoi
16.07.2007, 10:27
Hi,

ich habe folgendes vor. Ich schicke "0" und "1" über RS232 an die C-Control. Wenn ich eine "1"schicke, soll der Alarm ausgelöst werden d.h. es soll das Relais 1 geschaltet werden. Bei "0" soll das Relais 1 wieder ausgeschaltet werden. Hier mein Quellcode.


#Abfrage
define x as Byte[10]
LCD.CLEAR
LCD.POS 1,1
LCD.PRINT "Standby"
LIGHT=ON 'Licht aus
Led1=true

IF RXD = true then
BAUD R9600
GET x

IF x = 49 then 'ASCII Zeichen für 1
LCD.CLEAR
LCD.POS 1,1
LCD.PRINT "ALARM!"
LIGHT=OFF 'Licht an
Rel1=true

IF x = 48 then 'ASCCI Zeichen für 0
LCD.CLEAR
LCD.POS 1,1
LCD.PRINT "Alarm deaktiviert!"
LIGHT=OFF 'Licht an
Rel1=false
END IF
END IF
GET x
END IF

GOTO Abfrage

Vielen Dank schon mal im vorraus!
Gruß Khoi

Dierk
16.07.2007, 11:08
So müsste es funktionieren...

#Abfrage
define x as Byte[10]
LCD.CLEAR
LCD.POS 1,1
LCD.PRINT "Standby"
LIGHT=ON 'Licht aus
Led1=true

IF RXD = true then
BAUD R9600
GET x

IF x = 49 then 'ASCII Zeichen für 1
LCD.CLEAR
LCD.POS 1,1
LCD.PRINT "ALARM!"
LIGHT=OFF 'Licht an
Rel1=true
ELSE '<<<< hier fehlte wohl ein ELSE

IF x = 48 then 'ASCCI Zeichen für 0
LCD.CLEAR
LCD.POS 1,1
LCD.PRINT "Alarm deaktiviert!"
LIGHT=OFF 'Licht an
Rel1=false
END IF
END IF
GET x
END IF

GOTO Abfrage

DoKhoi
16.07.2007, 12:21
Funktioniert auch nicht! )=
Es sieht so aus, dass das Programm gar nicht in die Schleife "reinspringt"!
Verbindung ist aber vorhanden, also Kabel hab ich geprüft!

Dierk
16.07.2007, 12:28
versuch es doch so mal...

#Abfrage
define x as Byte[10]

BAUD R9600 '<<<<hier und nicht mitten drin
LCD.INIT '<< statt .clear
LCD.POS 1,1
LCD.PRINT "Standby"
LCD.OFF '<< das fehlt.
LIGHT=ON 'Licht aus
Led1=true

IF RXD = true then

GET x

IF x = 49 then 'ASCII Zeichen für 1
LCD.INIT '<< statt .clear
LCD.POS 1,1
LCD.PRINT "ALARM!"
LCD.OFF '<< das fehlt.
LIGHT=OFF 'Licht an
Rel1=true
ELSE '<<<< hier fehlte wohl ein ELSE

IF x = 48 then 'ASCCI Zeichen für 0
LCD.INIT '<< statt .clear
LCD.POS 1,1
LCD.PRINT "Alarm deaktiviert!"
LCD.OFF '<< das fehlt.
LIGHT=OFF 'Licht an
Rel1=false
END IF
END IF
GET x
END IF

GOTO Abfrage

DoKhoi
16.07.2007, 12:56
Funktioniert leider auch nicht!
Will nicht in die Schleife springen, aber warum? (=
Bin mit meinem Latein am Ende ...

Dierk
16.07.2007, 13:03
Hab da noch ein Fehlerchen gefunden (#Abfrage)

BAUD R9600 '<<<<hier und nicht mitten drin
LCD.INIT '<< statt .clear
LCD.POS 1,1
LCD.PRINT "Standby"
LCD.OFF '<< das fehlt.
LIGHT=ON 'Licht aus
Led1=true

#Abfrage '<<<<<< Hier wollen wir hinspringen :)

IF RXD = true then

GET x

IF x = 49 then 'ASCII Zeichen für 1
LCD.INIT '<< statt .clear
LCD.POS 1,1
LCD.PRINT "ALARM!"
LCD.OFF '<< das fehlt.
LIGHT=OFF 'Licht an
Rel1=true
ELSE '<<<< hier fehlte wohl ein ELSE

IF x = 48 then 'ASCCI Zeichen für 0
LCD.INIT '<< statt .clear
LCD.POS 1,1
LCD.PRINT "Alarm deaktiviert!"
LCD.OFF '<< das fehlt.
LIGHT=OFF 'Licht an
Rel1=false
END IF
END IF
' GET x Das hat hier auch nix zu suchen
END IF

GOTO Abfrage

DoKhoi
16.07.2007, 13:52
OK ich habs, es lag nicht am QuelleCode sondern an HyperTerminal!!!
Mit dem mitgelieferten Terminal Programm von Basic funtkioniert es!!
Trotzdem vielen Dank für deine Hilfe!!!!!!!!!

Gruß Khoi

Dierk
16.07.2007, 13:57
Zumindest geht es mit den Änderungen nun etwas besser O:)

DoKhoi
16.07.2007, 14:12
OK hier mein fertiger Code! (=
Ich hab jetzt festgestellt, es funktioniert nur, wenn ich über RS232-Übertragungsschnittstelle angeschlossen bin. An der Anschlussstelle für RS232 an der C-Control an der Seite, funktioniert es nicht! :(
An was könnte das liegen???


#Abfrage

define x as Byte
BAUD R9600
LCD.INIT
LCD.POS 1,1
LCD.PRINT "Standby"
LCD.OFF
LIGHT=ON 'Licht aus
Led1=true

IF RXD then
GET x
SELECT Case x
Case 49 'ASCII Zeichen für 1
LCD.INIT
LCD.POS 1,1
LCD.PRINT "ALARM!"
LCD.OFF
LIGHT=OFF 'Licht an
Rel1=true
PAUSE 300 '5 Sekunden Pause

Case 48 'ASCCI Zeichen für 0
LCD.INIT
LCD.POS 1,1
LCD.PRINT "Alarm deaktiviert!"
LCD.OFF
LIGHT=OFF 'Licht an
Rel1=false
PAUSE 300 '5 Sekunden Pause
END SELECT
END IF

GOTO Abfrage

Dierk
16.07.2007, 14:18
Von welcher C-Control redest Du? C-Control I Station 2?

Und an der Front funktioniert es nur mit einem Kabel an den Klemmen nicht?
RX und TX Leitungen mal herumgedreht?

DoKhoi
16.07.2007, 15:15
C-Control 1 Station 2!

Links neben dem Display, an der Schnittstelle funktioniert es, nur an den RS232 Klemmen funktioniert es nicht! Ich habe die RX und TX Leitungen schon getauscht! Gibt es irgendeine Einstellungsmöglichkeit?