cp340两块各拖数台变频通讯看不懂唉

已锁定

独孤厨者

  • 帖子

    48
  • 精华

    0
  • 被关注

    1

论坛等级:游民

注册时间:2009-10-05

普通 普通 如何晋级?

cp340两块各拖数台变频通讯看不懂唉

1045

3

2011-04-26 05:38:36

请高手达人邦得捋一下我
L #DBPA // Nummer des 1.DB-Parameter in
T #db_parameter // Lokaldatenbereich schreiben
L #DBND // Nummer des 1.DB-Nutzdaten in
T #db_nutzdaten // Lokaldatenbereich schreiben
L 0
T #fuellmuster // DB's mit 0 vorbesetzen
T #ANZ // Anzeigebyte loeschen
A(
L #SANZ // 0 < Anzahl Slaves < 32
)
A(
L 32
)
JC STRT
L 1 // SANZ falsch
T #ANZ
JU GEN // ==> Ende
STRT: L #SANZ // Anzahl Slaves gesamt
T #anzahl_slaves
L 1022 // Max. 1022 Slaves in einem DBPA
/I
T #anzahl_db_create // Anzahl der zu erzeugenden DBPA
SRD 16
T #anzahl_slaves_rest // Anzahl Slaves im letzten DBPA
L #db_parameter
T #nr_db_create // Erster zu erzeugender DBPA
LOP1: L #anzahl_db_create
L 0
>I
L 1022
T #count // zwischenspeichern
JC GEN1
TAK
L #anzahl_slaves_rest // keine restlichen Slaves vorhanden
>=I
JC PPO // Fertig ==> Auswertung PPO-Typ
T #count // zwischenspeichern
TAK
T #anzahl_slaves_rest // restliche Slaves = 0
GEN1: L #count
L 8 // 8 Byte Slaveparameter
*I
L 10 // + 10 Byte Systemparameter
+I
T #count // = Anzahl Bytes des DBPA
CALL "CREAT_DB" // Erzeugung der DBPA
LOW_LIMIT:=#nr_db_create
UP_LIMIT :=#nr_db_create
COUNT :=#count
RET_VAL :=#ret_value
DB_NUMBER:=#db_number
L P##pointer_lokdat // Adresse von "pointer_lokdat" in AR1 laden
LAR1
L W#16#1002 // S7-Kennung (10H), Datentyp BYTE (02H)
T LW [AR1,P#0.0]
L #count // Wiederholungsfaktor (Anzahl Bytes)
T LW [AR1,P#2.0]
L #nr_db_create // DB-Nummer (DBPA)
T LW [AR1,P#4.0]
L W#16#8400 // Speicherbereich (DB = 84H), Start bei DW0
T LW [AR1,P#6.0]
L W#16#0 // Start bei DW0
T LW [AR1,P#8.0]
CALL "FILL" // Loeschen des erzeugten DBPA
BVAL :=#fuellmuster
RET_VAL:=#ret_value
BLK :=#pointer_lokdat
L #ret_value
L 0
==I
JC NEX1
L 3 // DBPA zu kurz
T #ANZ
JU GEN // ==> Ende
NEX1: L #anzahl_db_create
+ -1
T #anzahl_db_create
L #nr_db_create
+ 1
T #nr_db_create
JU LOP1 // ==> naechsten DBPA erzeugen
PPO: A( // PKW <> 0
L 0
L #PKW
<>I
)
A( // PKW <> 3
L 3
<>I
)
A( // PKW <> 4
L 4
L #PKW
<>I
)
JC ANZ2 // ==> FEHLER
A(
L 0
L #PZD
<=I
)
A(
L 16
<=I
)
JC SLAV // ==> Weiter
ANZ2: L 2 // Fehler: unzulaessiger PPO-Typ
T #ANZ
JU GEN // ==> Ende
SLAV: L #PKW // Anzahl Worte PKW
L #PZD // Anzahl Worte PZD
+I
SLW 1
T #anzahl_bytes_ppo // Anzahl Bytes PPO
SLW 1 // *2 (Sende- u. Empfangsfach)
L #PKW // + PKW (Zwischenspeicher)
SLW 1 // in Byte
+I
+ 12 // + 12 Byte (Systemdaten)
T #anzahl_by_nutzdatenblk
L 8190 // max. Laenge DBND (DBW0 ist belegt)
TAK // Anzahl Bytes Nutzdatenblock
/I
T #anzahl_slaves_dbnd // = Anzahl Slaves pro DBND
L #anzahl_slaves // Anzahl Slaves gesamt
TAK
/I
T #anzahl_db_create // Anzahl der zu erzeugenden DBND
SRD 16
T #anzahl_slaves_rest // Anzahl Slaves im letzten DBND
L #db_nutzdaten
T #nr_db_create // Erster zu erzeugender DBND
LOP2: L #anzahl_db_create
L 0
>I
L #anzahl_slaves_dbnd // Anzahl Slaves pro DBND
T #count // zwischenspeichern
JC GEN2
TAK
L #anzahl_slaves_rest // keine restlichen Slaves vorhanden
>=I
JC GEN3 // Fertig ==> Erzeugung DBCP
T #count // zwischenspeichern
TAK
T #anzahl_slaves_rest // restliche Slaves = 0
GEN2: L #count // Anzahl Slaves pro DBND
L #anzahl_by_nutzdatenblk // Anzahl Bytes pro Nutzdatenblock
*I
+ 2 // + 2 = Anzahl Bytes (DW 0 bleibt frei)
T #count // = Anzahl Bytes des DBND
CALL "CREAT_DB" // Erzeugung der DBND
LOW_LIMIT:=#nr_db_create
UP_LIMIT :=#nr_db_create
COUNT :=#count
RET_VAL :=#ret_value
DB_NUMBER:=#db_number
L P##pointer_lokdat // Adresse von "pointer_lokdat" in AR1 laden
LAR1
L W#16#1002 // S7-Kennung (10H), Datentyp BYTE (02H)
T LW [AR1,P#0.0]
L #count // Wiederholungsfaktor (Anzahl Bytes)
T LW [AR1,P#2.0]
L #nr_db_create // DB-Nummer (DBND)
T LW [AR1,P#4.0]
L W#16#8400 // Speicherbereich (DB = 84H), Start bei DW0
T LW [AR1,P#6.0]
L W#16#0 // Start bei DW0
T LW [AR1,P#8.0]
CALL "FILL" // Loeschen des erzeugten DBND
BVAL :=#fuellmuster
RET_VAL:=#ret_value
BLK :=#pointer_lokdat
L #ret_value
L 0
==I
JC NEX2
L 4 // DBND zu kurz
T #ANZ
JU GEN // ==> Ende
NEX2: L #anzahl_db_create
+ -1
T #anzahl_db_create
L #nr_db_create
+ 1
T #nr_db_create
JU LOP2 // ==> naechsten DBND erzeugen
GEN3: L #DBCP
T #nr_db_create
L 100 // Max. Anzahl Bytes des DBCP
T #count // = Anzahl Bytes des DBCP
CALL "CREAT_DB" // Erzeugung des DBCP
LOW_LIMIT:=#nr_db_create
UP_LIMIT :=#nr_db_create
COUNT :=#count
RET_VAL :=#ret_value
DB_NUMBER:=#db_number
L P##pointer_lokdat // Adresse von "pointer_lokdat" in AR1 laden
LAR1
L W#16#1002 // S7-Kennung (10H), Datentyp BYTE (02H)
T LW [AR1,P#0.0]
L #count // Wiederholungsfaktor (Anzahl Bytes)
T LW [AR1,P#2.0]
L #nr_db_create // DB-Nummer (DBCP)
T LW [AR1,P#4.0]
L W#16#8400 // Speicherbereich (DB = 84H), Start bei DW0
T LW [AR1,P#6.0]
L W#16#0 // Start bei DW0
T LW [AR1,P#8.0]
CALL "FILL" // Loeschen des erzeugten DBCP
BVAL :=#fuellmuster
RET_VAL:=#ret_value
BLK :=#pointer_lokdat
L #ret_value
L 0
==I
JC TNU
L 6 // DBCP zu kurz
T #ANZ
JU GEN // ==> Ende
TNU: L #TNU1
L 0 // Start-Stationsnummer < 0
JC ANZ5
TAK
L #SANZ
+I // End-Stationsnummer > 31
L 32
JC GEN
ANZ5: L 5 // Fehler bei Stationsnummer
T #ANZ
GEN: NOP 0
FC-Call
-------
This FC is to be called for each datastructure-type per slave one time at
restart.

Function
--------
The FC"USSS7_V" creates the DB-paramter, DB-userdata and the
DB-communication-processor, furthermore the DB-parameter is initialized with
presetvalues.

Parameter
---------
SANZ : number of slaves with same PPO-type
format INT: possible values : 1...31
TNU1 : first stationnumber
format INT: possible values : 0...30
PKW : number of PKW
format INT: number of PKW, possible values : 0, 3, 4
PZD : number of PZD
format INT: number of PZD, possible values : 0...16
DBND : number of first DB-userdata
format INT
cp340两块各拖数台变频通讯看不懂唉 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54759条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。