-
用AI4ST做的模板,使用AI4前兩個通道值,一個通道值佔用一個
IW
,共佔用2個word。 -
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);
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));
- 用
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;