Mitsubishi FX2N -> Modem----Modem -> FX2n

M.Hilliges

Member
Beiträge
13
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo

ich sitze hier mit einem Kollegen nun schon etwas länger an folgendem Problem...

Es soll eine Mitsubishi FX2N per RS232 Schnittstellenadapter an ein Externes 56k Modem angeschlossen werden. Dieses wiederum ist über eine TK-Anlage mit einem zweiten Modem verbunden, welches dann wieder an einer FX2n hängt. Es soll nun auf Kontakt eines Eingangs der ersten SPS eine Anwahl des zweiten Modems stattfinden. Sobald eine Verbindung aufgebaut ist, sollen dann die Zustände der SPS 1 auf die Ausgänge der SPS 2 übertragen werden.

Wir sind leider mit dem Thema der SPS-Programmierung sehr wenig vertraut und haben uns nun mit mühe eine Konfiguration mit dem GX IEC Developer von Mitsubishi Programmiert mit der die SPS auf Kontakt hin wählt und auf Kontakt an der zweiten SPS auch abnimmt. Das ganze soll jetzt noch automatisch funktionieren und die Zustände sollen übertragen werden. Kann uns villeicht jemand von ihnen bei dieser Aufgabe etwas unter die Arme greifen bzw. etwas Hilfestellung leisten?

Auf Wunsch kann ich auch ein ASCII-File der Programmierung per PM zukommen lassen.

MfG M.Hilliges
 
A

Anonymous

Guest
Hallo,

welche Schnittstelle benutzt Ihr denn - vermutlich FX2N-232IF oder BD?
Wenn Modem A beim Schließen des Kontaktes eine Verbindung aufbaut, ist doch schon fast alles gewonnen - das Modem der Gegenstelle hebt ab (wenn ATS0 <> 0) und wenn die Verbindung steht (DTR-Signal bei Station A auswerten), fängt A an zu senden. Jetzt muß nur klar definiert werden, was in welcher Reihenfolge gesendet wird. Vielleicht kommt vor jedes Datenwort eine Kennung für den Inhalt (D1 für S1, D2 für D2 usw. usf), dann weiß B gleich, wo es abgespeichert werden muß.
Oder gleich einen Block von 10 Wörtern senden: D1..D10 o.ä. ohne Protokoll-Overhead und Sicherung......, der Möglichkeiten sind viele.

Wir haben sowas auch mal angedacht, wegen des Aufwandes aber dann die SPS weggelassen. Zum Testen der reinen Übertragung benötigt man ja auch keine Modems. I handbuch zur Baugruppe ist Senden und Empfangen zwischen SPS und PC beispielhaft ausgeführt ("test line" usw), damit habe ich angefangen

Viel Spaß Peter!
 
OP
M

M.Hilliges

Member
Beiträge
13
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Es handelt sich dabei um die BD-Schnittstelle. Bei den Modems geht es uns hauptsächlich um die Übertragung auf größeren Strecken. Kannst du uns villeicht einen Tipp geben, wo wir in den Programmcode etwas einfügen müssen, damit die SPS etwas mit dem "Incoming Call"-Singnal des Modems anfangen kann und von selber abhebt? Wenn du magst, kann ich dir auch gerne das bis jetzt bestehende ASCII-File schicken...

Ganz herzlichen Dank bis jetzt

M.Hilliges
 

PeterEF

Well-known member
Beiträge
985
Punkte Reaktionen
108
Hallo,

(der Gast drüber war ich...).
Also: nicht die SPS hebt ab, sondern das Modem geht ran. Bei Analogmodems gibt es dazu das Register ATS0. Ist dieses 0, geht das Modem nie ran. Jeder Wert >0 bezeichnet die Anzahl der 'Klingeling' bis das Modem abhebt. Die Einstellung des Parameters geht am besten über ein Terminalprogramm am PC. Konkretes sollte im handbuch des Modems stehen.

SPS A (Sender) muß nur gucken, ob die Verbindung zustande gekomemn ist - das geht über die Signale DCD (Data Carrier Detected) oder DTR (Data Transmission (?) Ready).
Die SPS B (Empfänger) muß gelegentlich die Schnittstelle abfragen, ob was eingegangen ist (d.h. Empfangsbit gesetzt)- wenn ja dann abholen...

Peter
 
B

B.Weiberg

Guest
Zuviel Werbung?
->Hier kostenlos registrieren
Hi, ich bin der Kollege...

nein, leider funktioniert es nicht, das S-Register haben wir zwar eingebaut, jedoch läutet es weiter und der Verbindungsaufbau findet nicht statt. Laut Handbuch für die Modems sind unsere Initialisierungsbefehle dafür auch korrekt. Tauscht man die SPSen gegen Laptops, dann kann man auch mit ATSx arbeiten, mit SPS funktioniert dies jedoch nicht, warum auch immer. Wir beide betreten mit dieser Arbeit absolutes Neuland und haben von SPS-Programmierung soviel Ahnung wie ne Kuh vom Skateboarden... Wir sind schon froh, dass wir es soweit geschafft haben :roll:
 

PeterEF

Well-known member
Beiträge
985
Punkte Reaktionen
108
Hallo,

wenn das angerufene Modem korrekt arbeitet, muß es auch abheben, wenn es angerufen wird und der Parameter richtig eingestellt ist. Wenn nicht, liegt hier schon eine Fehlfunktion vor.
Zum Test dieser Funktion kann man mit jedem normalen Telefon das Modem anrufen und hört dann, wie es sich um Verbindungsaufnahme bemüht....... :shock:

"..mit ATSx arbeiten..." -> damit ist wahrscheinlich gemeint, das Modem über AT-Befehle anzusprechen? Darum wird man bei analogen Geräten nicht herumkommen :roll:
Die sendewillige SPS muß also erstmal zur Verbindungsaufnahme einen Wählbefehl als String rausschicken (also ATDP 1234567 o.ä.).
Da gehen dann auch schon die Probleme los: Nebenstellenanlage oder nicht, warten auf Rufton, und die japanische Steuerung ist nicht unbedingt mit komfortablen Stringfunktionen gesegnet....
Das alles kann man ohne SPS am besten mit einem Terminalprogramm testen (habt Ihr ja scheinbar?) und dann erst den Empfänger und danach den Sender gegen die Zielhardware austauschen.

Ich habe leider gerade keine serielle Schnittstelle für die FX2N hier zum testen rumliegen, aber auf das Programm könnte ich trotzdem ja mal einen Blick werfen, evt. bringts ja was?


Ansosnten: Schönes Wochenende!

Peter
 
B

B.Weiberg

Guest
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo, das "sniffen" mit einem Terminalprogramm hat ergeben, dass die SPS direkt nach dem Einschalten 3x den Befehl "AT&F" ausgibt, also das Modem initialisiert :shock: . Wenn man das zweite Modem so mit "ATS0" initialisieren könnte, dann wäre das schon toll. Leider wissen wir nicht, wo, wie und warum die SPS diesen Initialisierungsbefehl schickt. Scheinbar tut sie das von allein :?: . Denn im Programm haben wir nichts dergleichen gefunden... :(
 

PeterEF

Well-known member
Beiträge
985
Punkte Reaktionen
108
Hallo,

Hallo, das "sniffen" mit einem Terminalprogramm hat ergeben, dass die SPS direkt nach dem Einschalten 3x den Befehl "AT&F" ausgibt, also das Modem initialisiert . Wenn man das zweite Modem so mit "ATS0" initialisieren könnte, dann wäre das schon toll. Leider wissen wir nicht, wo, wie und warum die SPS diesen Initialisierungsbefehl schickt. Scheinbar tut sie das von allein . Denn im Programm haben wir nichts dergleichen gefunden...

Möglicherweise ist in den Online-Einstellungen des Projektes die Verbindung über Modem bereits projektiert, dann sendet die Steuerung bei Power On einen Initialisierungsstring an das Modem?
Die S-Register eines Modems behalten ihren Inhalt dauerhaft (jedenfalls bei den Modems, die ich kenne...) - d.h. einmal ATS0=1 eingestellt (z.B. über PC) und es hebt wie der Telefonmann immer ab.

Ich kriege heut nachmittag ein Modul RS232-BD - dann teste ich mal ein wenig....

Schönen Tag noch, Peter
 

PeterEF

Well-known member
Beiträge
985
Punkte Reaktionen
108
Hallo,

hier das Kernstück des Empfangsprogramms:
Ich habe eigentlich nicht viel geändert, nur das die SPS beim Start jetzt ATS0=1 an das (hoffentlich) angeschlossene Modem ausgibt, dann wird auf Eingangsdaten gewartet.

Als Gegenstelle hatte ich hier einen PC mit Terminalprogramm + Modem, es ging.

Allerdings habe ich Bedenken, ob auch immer die richtigen Daten an die richtige Stelle kommen, dazu müßten noch Start und Stop-Zeichen in das Sendetelegramm aufgenommen werden, mit denen der Empfänger sich synchronisieren kann.
Viel Spaß erstmal beim Spielen:

Code:
(*SOFTCONTROL:        
  VERSION:6.01.06*)
PARAMETER_SECTION
	CPU_TYPE := FX2N / FX2NC
	VERSION := 1.00
	PARAM_FILE_PATH := D:\mitsubishi\receiv.wpa
	SYSTEM_VARIABLES
		WORD_TYPE := 0
		WORD_LOWER := 512
		WORD_UPPER := 999
		BIT_TYPE := 0
		BIT_LOWER := 512
		BIT_UPPER := 1535
		TIMER_LOWER_100MS := 100
		TIMER_UPPER_100MS := 199
		TIMER_LOWER_10MS := 220
		TIMER_UPPER_10MS := 245
		TIMER_LOWER_RETENTIVE := -1
		TIMER_UPPER_RETENTIVE := -1
		COUNTER_LOWER := 100
		COUNTER_UPPER := 199
		LABEL_LOWER := 30
		LABEL_UPPER := 126
		STEP_FLAG_LOWER := 20
		STEP_FLAG_UPPER := 899
	END_SYSTEM_VARIABLES
	PROJECT_OPTIONS
			GENRERATE_CODE_502 := 0
			SHOW_WARNING_CODING_502_600 := 1
		RD_OPTIONS
			ENABLE_RESET_DEVICES := 0
			ENABLE_RESET_LATCHED_DEVICES := 0
			ENABLE_D_DEVICES := 0
			ENABLE_M_DEVICES := 0
			ENABLE_T_DEVICES := 0
			ENABLE_C_DEVICES := 0
			ENABLE_S_DEVICES := 0
			ENABLE_ST_DEVICES := 0
		END_RD_OPTIONS
	END_PROJECT_OPTIONS
END_PARAMETER_SECTION

PROGRAM FX2N_FX2N
(**)
(**)
'MELSEC_IL'
BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPEIL ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPEUSR1 ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 37 ;
        NETWORK_BODY
TABINFO   6,   7
(*Kommunikationsparameter fuer die RS-232 Schnittstelle in D8120*) 
(*Sende- und Empfangsfach einrichten*) 
LD M8000 
MOV H86 
D8120 
RS D101 
D100 
D200 
K20 
(*Init-Impuls erzeugen*) 
LD M8002
PLS M0 
(*ATS0=1 an Modem bei Programm in Run*) 
LD M0 
ASC ATS0=1 
D101 
MOV H0D 
D107 
MOV K14 
D100 
SET M8122 

(*Daten aus dem Empfangsbereich abholen*) 
LD M8123 
BMOV D200 
D300 
K20 
RST M8123 
(*Inhalt von D300 auf Ausgaenge legen*) 
LD M8000 
MOV D300 
K1Y000 
(*D300 bis D320 zuruecksetzen*) 
LD X007 
ZRST D300 
D320
        END_NETWORK_BODY
    END_NET_WORK
END_BODY
END_PROGRAM

CONFIGURATION scConfiguration
	RESOURCE scResource ON scResourceType
		TASK
			(*CJ*)
			FX2N_FX2N(SINGLE:=TRUE, INTERVAL:=0, PRIORITY:=31)

		PROGRAM FX2N_FX2N WITH FX2N_FX2N: scProgramType

	END_RESOURCE
END_CONFIGURATION

Für die endgültige Anwendung muß alles natürlich noch in eine schöne POE gepackt werden....

Vielleicht ( :? ) habt Ihr ja sogar eine EMail, wohin ich das Zeug schicken kann?

Peter
 
OP
M

M.Hilliges

Member
Beiträge
13
Punkte Reaktionen
0
Hallo Franz

Danke für den Tipp aber das haben wir bereits getan :D

So wiklich richtig weiterhelfen konnte man uns da auch nicht... :(



Ich glaube wir sind einfach nicht zum SPS-Programmieren geboren :roll:
 
OP
M

M.Hilliges

Member
Beiträge
13
Punkte Reaktionen
0
soooooooooooooooooooo neues Modem, neues Problem...

wir haben nun ein chices GSM-Modem von Wikon.

Wir wollen nun auf Kontakt hin eine SMS senden lassen. Das ganze funktioniert mit einem Terminalprogramm wunderbar.

Nur wenn wir das ganze hinter ASC schreiben, meckert er das die eingabe zu lang sei und max. 8 Zeichen betragen dürfe.

Habt ihr eine Idee wie ich ihn dazu bekomme die Nummer anzunehmen und die SMS zu senden?


Das Modem reagiert auf den ganz normalen IFM-AT Befehlssatz.


MfG Matthias Hilliges
 

PeterEF

Well-known member
Beiträge
985
Punkte Reaktionen
108
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo,

immer noch am Kämpfen :wink: ?

Nur wenn wir das ganze hinter ASC schreiben, meckert er das die eingabe zu lang sei und max. 8 Zeichen betragen dürfe.

Bei der FX2N ist ASC glaub ich immer auf maximal 8 Zeichen beschränkt, hab aber gerade die entsprechenden Unterlagen nich tgreifbar.
unser Ausweg:

ASC 12345678 (* 1. Teil der Rufnummer *)
D1
ASC 87654321 (* 2. Teil der Rufnummer *)
D9
ASC abcdefgh (* 1. Teil der Nachricht *)
D17

usw. usf. bis Sendepuffer voll, dann Nachricht absenden mit gewünschter Länge (das funktioniert ja schon!).

Viel Erfolg, Peter!
 
OP
M

M.Hilliges

Member
Beiträge
13
Punkte Reaktionen
0
Schonmal danke für die schnelle Hilfe :)

unser problem ist es nun noch, den Sendebefehl über die RS-232 auszugeben...

Das Ganze sieht folgendermaßen aus:

AT+CMGS="0171/*******" <CR>
Hier steht dann die Nachricht!<Strg+Z>

Wir haben das ganze in hübsche 8er Pakete geteilt aber wir glauben es scheitert an den Tastencombos die im Terminalprogramm gedrückt werden müssen (<CR> und <Strg+Z>). Gibt es eine möglichkeit soeine Tasteneingabe irgendwie im Code darzustellen?

Es soll wie gesagt auf Kontaktschließung eine SMS mittels dieser Ausgabe an das GSM-Modem über die RS-232 Schnittstelle gesendet werden.
 
A

Anonymous

Guest
Hallo,

....aber wir glauben es scheitert an den Tastencombos die im Terminalprogramm gedrückt werden müssen (<CR> und <Strg+Z>). Gibt es eine möglichkeit so eine Tasteneingabe irgendwie im Code darzustellen?

Die Vermutung könnte richtig sein. Hilfreich ist eine ASCII-Tabelle, die nicht erst beim Leerzeichen anfängt, sondern auch die Zeichen 0-31 umfaßt, welches die sogenannten nicht druckbaren Steuerzeichen sind (?)
Meine Tabelle hier (aus Claßen/Löffler: Unix und C, VEB Verlag Technik 1987, Seite 60) führt für CR den Code Dez 13/ Hex 0D auf, für Cntrl-Z die Dez 26 / Hex 1A. Wenn ihr das direkt eintragt, gehts evt. besser.....

Peter
 
OP
M

M.Hilliges

Member
Beiträge
13
Punkte Reaktionen
0
-.- da hätte man ja auch selbst mal drauf kommen können :lol:

aber ohne die Hilfe hier geht das wohl nich :oops:

erheeeem eine frage noch... wie mache ich der SPS klar, dass es gerade Hex-Code ist den sie verarbeitet
 
Oben