回复:关于Transline如何连接PCU的问题

asdf6

西门子1847工业学习平台

  • 帖子

    1180
  • 精华

    12
  • 被关注

    132

论坛等级:奇侠

注册时间:2008-09-02

钻石 钻石 如何晋级?

发布于 2016-04-03 20:18:34

6楼

Decoding BCD --> bit  FC62

This block decodes BCD values into bits in the target area The address should 

be 

specified at parameters "BCD_Low" and "BCD_High", in which the value to be 

decoded is located. The "FirstNum" and "LastNum" parameters specify the 

limiting 

range of the value to be decoded.

At the "FirstByte" parameter, the first byte should be specified in which the 

result is to be transferred. Inputs, outputs, flags, data blocks and instance 

data blocks are permissible address ranges.

The block only starts to run when a 1 signal is available at the "enable" 

parameter and if the same display number is entered at "display mask" parameter 

and at "S_E0_display_mask_.." parameter-

The "Group" parameter has a 1 signal if a value was decoded.

KNOW_HOW_PROTECT

NETWORK 1 查询在FIRSTBYTE中输入的是什么地址

  L     0                           // Lokaldaten

      T     #FirstByteTyp

      L     P##FIRSTBYTE                //取指针,比如实参输入为DB62.DBB5

      LAR1                              //指针参数占用6个字节

      L     D [AR1,P#0.0]               //区域间间接寻址,D为双字, 取指针指向的数值

      SRD   8                           // 右移动8位

      T     #SchmierDWort

      SRD   8                           // Ist hier ein Wert eingetragen

      T     #DB_Nummer                  // 右移16位后,为DB数,

      OPN   DI [#DB_Nummer]             // 把DB块按DI打开

      L     #SchmierDWort

      L     B#16#FF                     //取地址标识符代码。

      AW    

      T     #SchmierDWort

      L     B#16#81

      ==D   

      L     1                           // Eingang      输入I 代码81

      JC    erg1

      L     #SchmierDWort

      L     B#16#82

      ==D   

      L     2                           // Ausgang    输出Q 代码82,

      JC    erg1

      L     #SchmierDWort

      L     B#16#83

      ==D   

      L     3                           // Merker    M 代码83

      JC    erg1

      L     #SchmierDWort

      L     B#16#84

      ==D   

      L     4                           // Datenbaustein    数据块 代码84

      JC    erg1

      L     #SchmierDWort

      L     B#16#85

      ==D   

      L     5                           // Instanz-Datenbaustein   共享数据块

      JC    erg1

      L     #SchmierDWort

      L     B#16#86

      ==D   

      L     2                           // Lokaldaten nicht zulaessig 不允许的本地数据块

      BEC   

erg1: T     #FirstByteTyp

      L     D [AR1,P#2.0]               // Bereich der Daten ermitteln  数据调查的范围

      SLD   8                           //左移8位,在右移8位是为了去掉开头的两个1字节

      SRD   8

      T     #SchmierDWort               // Byte-Bit-Adresse   字节-位-地址

      L     7                           // Byte ausblenden    字节减少

      AW                                //后3位表示位,比如M5.3中的3

      L     0                           // falls Bits projektiert

      <>D                               //由7来判断是否带有输入地址是否带有BIT。

      L     1                           // falsche Parametrierung   虚假的参数

      BEC                               //如果带有BIT,比如M5.3那就结束块调用。

      L     #SchmierDWort               //但指针型输入,如P#db62.dbx3.0不算带有BIT

      SRD   3                           //他等同于直接输入DB62.DBB3

      T     #ByteBereich                //输入的字节数,对于DB62.DB6他是6,对于MB5他是5

NETWORK 2  BCD-Wert in DoubleINT wandeln   BCD数值改变成双整数

   AN    #BCD_CODE

      JC    int

      L     #FKT_HIGH

      SLW   8

      L     #FKT_LOW

      +D    

      BTD   

      T     #BitWert

      JU    int2

int:  NOP   0

      L     #FKT_HIGH

      SLW   8

      L     #FKT_LOW

      +I    

      T     #BitWert

int2: NOP   0

NETWORK 3  Berechnung Anzahl Byte      计算字节数量

   L     #LASTNUM

      L     #FIRSTNUM

      -D    

      +     1                           // 计算有多少个功能

      T     #AnzNum

      L     8

      /D                                // 计算有多少个字节

      T     #AnzBytes

      L     8

      *D    

      L     #AnzNum                     // 在乘以8来进行对比校验 (没有余数)

      ==D   

      JC    NW3E

      L     #AnzBytes                   //如果在上面的校验中有余数

      +     1                           //就是说功能数不是8的倍数

      T     #AnzBytes                   //那么此外多出1个字节

NW3E: NOP   0

NETWORK 4  Pr黤en auf maximalen Datenbereich vorhanden    可用的最大数据范

     L     #AnzBytes                   //Anzahl ben鰐igter Datenbereiche aufgrund dekodierter Signale

      L     #ByteBereich                //1. Byte laut Parametrierung

      +D                                //letztes Datenbyte

      L     #FirstByteTyp

      JL    erg5                        //跳转表格

      JU    erg6

      JU    TypE                        //E输入地址

      JU    TypA                        //A输出地址

      JU    TypM                        //M地址

      JU    TypD                        //DB块

      JU    TypD                        //DI块

erg5: JU    erg6

TypE: TAK                               //letztes Datenbyte 

      L     2047                        //letztes Eingangsbyte Byte 2047

      >I    

      L     3                           //Fehlerkennung Datenbereich zu klein

      BEC                               //wenn Datenbereich zu klein, dann BEB

      JU    erg6

TypA: TAK                               //letztes Datenbyte 

      L     2047                        //letztes Ausgangsbyte Byte 2047

      >I    

      L     3                           //Fehlerkennung Datenbereich zu klein

      BEC                               //wenn Datenbereich zu klein, dann BEB

      JU    erg6

TypM: TAK                               //letztes Datenbyte 

      L     1023                        //letztes Merkerbyte Byte 1023

      >I    

      L     3                           //Fehlerkennung Datenbereich zu klein

      BEC                               //wenn Datenbereich zu klein, dann BEB

      JU    erg6

TypD: TAK                               //letztes Datenbyte 

      L     DILG                        //L鋘ge des DBs

      >D    

      L     3

      BEC   

erg6: NOP   0

NETWORK 5   Datenbereich loeschen     删除数据范围

      L     #AnzBytes

M001: DEC   1                           // Schleife bis alle Bytes gel鰏cht

      T     #AnzBytes

      SLW   3

      L     #ByteBereich

      SLD   3

      +D    

      LAR1  

      L     #FirstByteTyp

      JL    erg3

      JU    erg4

      JU    Typ1                        // E输入

      JU    Typ2                        // A输出

      JU    Typ3                        // M地址

      JU    Typ5                        // DB

      JU    Typ5                        // DI

erg3: JU    erg4

Typ1: L     0                           // E输入

      T     IB [AR1,P#0.0]

      JU    erg4

Typ2: L     0                           // A输出

      T     QB [AR1,P#0.0]

      JU    erg4

Typ3: L     0                           // M地址

      T     MB [AR1,P#0.0]

      JU    erg4

Typ5: L     0                           // DB/DI

      T     DIB [AR1,P#0.0]

erg4: L     0

      L     #AnzBytes

      ==D   

      JCN   M001

NETWORK 6 Sammelbit Ruecksetzen

      SET   

      R     #GROUP

NETWORK 7 Freigabe       使能

      O(                                // HMI反馈的屏幕代码DB59.DBB79+80

      L     #FIRSTNUM                   //要在第一个是最后一个之间

      L     #BitWert                    //不然就BEC结束调用

      >D    

      )     

      O(    

      L     #LASTNUM

      L     #BitWert

      <D    

      )     

      O(    

      L     #DISPLAY_MASK               // 译码页面要一致,不然后BEC结束调用 

      L     #S_E0_DISPLAY_MASK

      <>I   

      )     

      ON    #ENABLE                     // 要有使能,不然BEC结束调用

      BEC   

NETWORK 8  Datenbit's setzen      数据放置

      L     #BitWert

      L     #FIRSTNUM

      -D    

      L     #ByteBereich

      SLD   3

      +D    

      LAR1  

      SET   

      L     #FirstByteTyp

      JL    eee1

      JU    eee2

      JU    Set1                        // E输入

      JU    Set2                        // A输出

      JU    Set3                        // M地址

      JU    Set5                        // DB

      JU    Set5                        // DI

eee1: JU    eee2

Set1: =     I [AR1,P#0.0]

      JU    eee2

Set2: =     Q [AR1,P#0.0]

      JU    eee2

Set3: =     M [AR1,P#0.0]

      JU    eee2

Set5: =     DIX [AR1,P#0.0]

eee2: =     #GROUP

      L     0


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SINUMERIK

共有25498条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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