Vai al contenuto
PLC Forum


Comando Sconosciuto Nel Protocollo Omron - comandi HostLink non documentati?


lfcc

Messaggi consigliati

salve a tutti,

monitorando l'uscita seriale del mio portatile con Portmon durante una sessione con CX-Programmer, mi sono imbattuto in una istruzione HostLink che non e' documentata in nessun manuale in mio possesso, dal seguente formato:

[at]<numero nodo>MB<dati vari><fcs>*<Cr>

in particolare durante il monitoraggio, senza che alcuna operazione sia eseguita sul PLC, viene scritta continuamente la stringa [at]00MB2D0400013C*<Cr> (il PLC collegato ha come numero di nodo zero ed e' un C200HS-CPU21) cui segue una frame di risposta assai lunga e che ha la particolarita' di avere una virgola al suo interno, cosa inusuale per il protocollo HostLink. In altri casi viene inviata una stringa in cui i dati non sono formattati su 4 digits, ma su di un numero dispari. Ho provato a scrivere direttamente questo comando usando Hyperterminal, per essere sicuro che non si trattasse di una lettura errata del Portmon,ma i risultati sono gli stessi. Non ha importanza il tipo di PLC usato ne' la scheda HostLink utilizzata, tutte riconoscono questo comando, e per giunta non pare sia una istruzione FINS via HostLink.

Qualcuno sa per caso a cosa serve questa istruzione e quali sono i dati che devono essere forniti? Dando una breve scorsa alla documentazione HostLink il mio sospetto e' che possa trattarsi di una istruzione per leggere un'area di sistema del PLC, analogamente alle istruzioni MS, MM, MF.

Ringrazio in anticipo per le risposte

Luigi/Hong Kong

Link al commento
Condividi su altri siti


Hai ragione come primo comando invia proprio quello. Anche il syswin 3.4 fa la medesima operazione. Non ho idea di cosa sia, forse di qualcosa di attinente al programma.

Ciao

Link al commento
Condividi su altri siti

  • 2 weeks later...

Il comando MB nel protocollo Host-Link è l'acronimo di Memory Block. Questo comando permette di scrivere sui registri iterni del PLC. Tale comando probabilmente non è documentato perchè usato tra le altre cose per impostare/rilasciare la password del PLC (sui modelli precedenti al CQM1H). Attenzione a fare prove con questo comando perchè si possono creare danni irreversibili sulla CPU (io ci ho distrutto un C200HS)

Link al commento
Condividi su altri siti

Ciao,

ank'io avrei 1 cosa da chiedere i merito!

Nel mio caso dovrei solo cambiare un DM dell'area di memoria, attraverso la porta seriale Impostata come Host Link, io ho provato a scrivere il codice [at]00WD00000000...*invio, per mezzo di Hyper Terminal, ma mi restituisce il seguente codice [at]00WD1351, ma il DM 0 per esempio non cambia!

La mia domanda era questa: con hyper terminal è possibile spedire un dato e fare il calcolo dell FCS per spedire la stringa oppure no!?

Se qualcuno mi può dare delle delucidazione lo ringrazzio infinitamente

Stefano

Link al commento
Condividi su altri siti

Nel mio caso dovrei solo cambiare un DM dell'area di memoria, attraverso la porta seriale Impostata come Host Link ....

Se guardi l'esempio di Dago nella Sezione UP/Download trovi esempi per il calcolo dell'FCS e per l'invio/ricezione delle DM.

Ciao :)

Link al commento
Condividi su altri siti

A memoria dovrebbe essere cosi',non sono sicuro al 100% perche' al momento non ho niente per verificare,comunque piu' o meno:

Public Function CalcoloFcs(TestoFcs As String)

Dim VarFcsA As Integer

Dim VarFcsB As Integer

Dim VarFcsC As Integer

Dim VarFcsD As String

Dim VarFcsE As String

VarFcsA = Len(TestoFcs)

VarFcsC = 0

For VarFcsB = 1 To VarFcsA

    VarFcsD = Mid$(TestoFcs, VarFcsB, 1)

    VarFcsC = Asc(VarFcsD) Xor VarFcsC

Next VarFcsB

VarFcsE = Hex$(VarFcsC)

If Len(VarFcsE) = 1 Then VarFcsE = "0" + VarFcsE

CalcoloFcs = VarFcsE

End Function

'es per calcolare l'fcs della stringa [at]00WD00001234 (scrivi 1234 nel DM0) si puo' fare così:

'Comando=[at]00WD00001234

'FCS=CalcoloFcs(Comando)

'Quindi, stringa che va bene = Comando+FCS+"*" + Chr$(13)

Modificato: da dago_
Link al commento
Condividi su altri siti

Se non hai VB, puoi fare il copia/incolla di questo codice in un file di testo e lo salvi con l'estensione VBS (es:CalcoloFCS.VBS)

TestoFcs=trim(inputbox("Scrivi la stringa da calcolare","Dago,Calcolo FCS"))

Dim VarFcsA

Dim VarFcsB

Dim VarFcsC

Dim VarFcsD

Dim VarFcsE

VarFcsA = Len(TestoFcs)

VarFcsC = 0

For VarFcsB = 1 To VarFcsA

    VarFcsD = Mid(TestoFcs, VarFcsB, 1)

    VarFcsC = Asc(VarFcsD) Xor VarFcsC

Next

VarFcsE = Hex(VarFcsC)

If Len(VarFcsE) = 1 Then VarFcsE = "0" + VarFcsE

CalcoloFcs = VarFcsE

Risultato=msgbox("Risultato:"+TestoFcs+CalcoloFcs+"*"+chr(13),,"Dago,Calcolo FCS")

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...