透過硬體識別符號獲取過程映像輸入

不愿透露姓名的小村村發表於2024-04-30
  1. 用AI4ST做的模板,使用AI4前兩個通道值,一個通道值佔用一個IW,共佔用2個word。

  2. RD_ADDR讀出地址起始位

//get iw by hw_io 
#tempAIw := RD_ADDR(LADDR := #AI4ST_Control.ai_hwio, PIADDR => #AI_rdaddr.piadder, PICount => #AI_rdaddr.picount, PQADDR => #AI_rdaddr.temppiadder, PQCount => #AI_rdaddr.temppicount);
  1. PEEK地址對應得值給出來
#AI4ST_Control.Ch0_Dig_Value := PEEK_WORD(area := 16#81, dbNumber := 0, byteOffset := #AI_rdaddr.piadder);
#AI4ST_Control.Ch1_Dig_Value := PEEK_WORD(area := 16#81, dbNumber := 0, byteOffset := (#AI_rdaddr.piadder + 2));
  1. SCALE把數字值變換為實際物理值
//value word to real
IF #pre_write.measure_mode = 16#01 THEN
    #tempScaleWord := SCALE(IN := WORD_TO_INT(#AI4ST_Control.Ch0_Dig_Value), HI_LIM := 10.0, LO_LIM := -10.0, BIPOLAR := 1, OUT => #AI4ST_Control.Ch0_Ana_Value);
    #tempScaleWord := SCALE(IN := WORD_TO_INT(#AI4ST_Control.Ch1_Dig_Value), HI_LIM := 10.0, LO_LIM := -10.0, BIPOLAR := 1, OUT => #AI4ST_Control.Ch1_Ana_Value);
ELSIF #pre_write.measure_mode = 16#02 THEN
    #tempScaleWord := SCALE(IN := WORD_TO_INT(#AI4ST_Control.Ch0_Dig_Value), HI_LIM := 20.0, LO_LIM := -20.0, BIPOLAR := 1, OUT => #AI4ST_Control.Ch0_Ana_Value);
    #tempScaleWord := SCALE(IN := WORD_TO_INT(#AI4ST_Control.Ch1_Dig_Value), HI_LIM := 20.0, LO_LIM := -20.0, BIPOLAR := 1, OUT => #AI4ST_Control.Ch1_Ana_Value);
END_IF;

相關文章