有一段语句表的程序看不懂求老师给出详细注释

关于冷轧薄板厂卷取机张力控制的

// Check TCON1 number
      L     1
      L     #i_TCON1_No           //外部输入  i_TCON1_No  =  1
      >I                                // TCON1 number > 0 
      JC    ERR
      L     15
      <=I                               // TCON1 number < 16 
      JC    P_OK

ERR:  S     #o_Error
      BEC                               // Abort execution of function block
P_OK: R     #o_Error


      L     #i_TCON1_No                 // TCON1 tension controller number
      +     -1                          // - 1
      L     30
      *I                                // *30  (30 bytes per TCON1 tension controller)
      +     100                         // +100: Start address in data block (DBB100 = first byte with data for TCON1's)
      SLW   3                           // Creation of a pointer address P#Byte.Bit
      T     #t_Start_Address_MRG        // Start address pointer in data block of TCON1 data

// Retrieve status word 1 & 2  最主要是想看懂这一段,状态字的位跟程序对应不起来
      L     P##t_TCON1_STSW             // Load start address of local variable
      T     #t_Pointer                  // Transfer address in t_Pointer

      OPN   #i_DB_Comm_MRG_LCO  外部输入#i_DB_Comm_MRG_LCO=DB161
      L     DBD [#t_Start_Address_MRG]
      T     LD [#t_Pointer]             // Transfer status word 1 & 2 to local variables (Structure)

      L     #t_Start_Address_MRG
      L     P#4.0
      +D    
      LAR1  

// Retrieve TCON1 status information  这一段我能看懂,传数据
      L     DBD [AR1,P#0.0]
      T     #s_MRG_Act_Tens_Setp        // Load actual tension setpoint for TCON1 controller   [N]
      L     DBD [AR1,P#4.0]
      T     #s_MRG_Act_Tens_Value       // Load actual tension value TCON1 controller   [N]
      L     DBD [AR1,P#8.0]
      T     #s_MRG_VL_Tech              // Load VL_Tech given to drives by TCON1 controller   [m/s]
      L     DBD [AR1,P#12.0]
      T     #s_MRG_T_Tech               // Load T_Tech (force) applied by TCON1 controller   [N]


// Retrieve (previous) control word 1 & 2
      L     P##t_TCON1_CTLW             // Load start address of local variable
      T     #t_Pointer                  // Transfer address in t_Pointer

      OPN   #i_DB_Comm_LCO_MRG  外部输入#i_DB_Comm_LCO_MRG=DB160
      L     DBD [#t_Start_Address_MRG]
      T     LD [#t_Pointer]             // Transfer control word 1 & 2 to local variables (Structure)

变量表监视的
DB161.DBW100 TCON1  CONTR1:Status word1  HEX W#16#A310
DB161.DBW102 TCON1  CONTR2:Status word1  HEX W#16#0000
FB1741调用的FB926  如图片  调用
FB926 内的临时变量 t_TCON1_STSW每个位含义如图  变量
A310转成2进制是 1010 0101 0001 0000如何对应FB926中临时变量 t_TCON1_STSW的每一位。
当时正在卷取, TensOK肯定是1的,StripBrk肯定是0的。
一直对应不上,求助。

问题补充:
多谢老师学长的解答,状态字的传输我看懂了。
当卷取时DBW100=A310, DBW102=0000 十六进制
就是DBD100=1010,0101,0001,0000,0000,0000,0000,0000.
t_TCON1_STSW所有位如图:变量
TensOK,StripBrk,分别对应哪个位,当时TensOK肯定是1的,StripBrk肯定是0的

图片说明:

有一段语句表的程序看不懂求老师给出详细注释    有一段语句表的程序看不懂求老师给出详细注释    有一段语句表的程序看不懂求老师给出详细注释   

最佳答案

当i_TCON1_No为1时,#t_Start_Address_MRG为P#100.0.
你说的这部分就是把DBD100的内容传送给#t_TCON1_STSW  。
补充:这相当于把DBD100传送给#t_TCON1_STSW,假设#t_TCON1_STSW的地址是LD10,就是DBB100传给LB10,DBB101传给LB11,DBB102传给LB12,DBB103传给LB13。你声明变量表中的0.0--0.7对应LB10的内容,1.0--1.7对应LB11的内容,2.0--2.7对应LB12的内容,3.0--3.7对应LB13的内容。这和你写的最终状态是一致的。

提问者对于答案的评价:
谢谢

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc231285.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 上午5:03
下一篇 2018年12月1日 上午5:03

相关推荐