Set_AO_Data
Overview
The Set_AO_Data function block sets the analog values for the AO module’s output channels. Each of the four channels can output either voltage or current.
Module_ID := (USINT)
Ch0_mV := (UINT)
Ch0_uA := (UINT)
Ch1_mV := (UINT)
Ch1_uA := (UINT)
Ch2_mV := (UINT)
Ch2_uA := (UINT)
Ch3_mV := (UINT)
Ch3_uA := (UINT)
STS_Done => (BOOL)
STS_Failed => (BOOL)
STS_Fault_Code => (USINT)
Interface
Inputs
| Name | Type | Range / Units | Description |
|---|---|---|---|
| Module_ID | USINT | 1 - 15 | Unique identifier of the AO module. |
| Ch0_mV | UINT | 0 - 10,000 mV | Voltage output for channel 0 (voltage mode). |
| Ch0_uA | UINT | 4,000 - 20,000 µA | Current output for channel 0 (current mode). |
| Ch1_mV | UINT | 0 - 10,000 mV | Voltage output for channel 1 (voltage mode). |
| Ch1_uA | UINT | 4,000 - 20,000 µA | Current output for channel 1 (current mode). |
| Ch2_mV | UINT | 0 - 10,000 mV | Voltage output for channel 2 (voltage mode). |
| Ch2_uA | UINT | 4,000 - 20,000 µA | Current output for channel 2 (current mode). |
| Ch3_mV | UINT | 0 - 10,000 mV | Voltage output for channel 3 (voltage mode). |
| Ch3_uA | UINT | 4,000 - 20,000 µA | Current output for channel 3 (current mode). |
💡 Signal Type
Each channel uses only one signal type (V or mA), based on the module configuration. Any value set for the inactive type is ignored.
Outputs
| Name | Type | Description |
|---|---|---|
| STS_Done | BOOL | TRUE when all AO data has been successfully sent to the module. |
| STS_Failed | BOOL | TRUE if the AO data write operation failed. |
| STS_Fault_Code | USINT | Diagnostic code indicating the reason for failure. |
Fault Codes
| Code | Meaning | Description |
|---|---|---|
| 97 | Module Faulted | The AO module reported an internal fault. |
| 98 | Module Mismatch | The detected module type does not match the expected AO module. |
| 99 | Module Not Found | The specified Module_ID is not part of the current hardware configuration. |
Example:
TYPE
AO_4CH : STRUCT
Ch0 : UINT;
Ch1 : UINT;
Ch2 : UINT;
Ch3 : UINT;
END_STRUCT;
END_TYPE
PROGRAM PROG_Write_AO
VAR_EXTERNAL
Module5_AO : AO_4CH;
Module5_AO_Done : BOOL;
Module5_AO_Failed : BOOL;
Module5_AO_Fault : USINT;
END_VAR
VAR
AO_Set_Instance : Set_AO_Data;
AO_Mode_Block : Set_AO_Mode;
END_VAR
AO_Mode_Block(
Module_ID := 5,
Ch0_Mode := TRUE, (* 0–10V *)
Ch1_Mode := TRUE, (* 0–10V *)
Ch2_Mode := FALSE, (* 4–20mA *)
Ch3_Mode := FALSE (* 4–20mA *)
);
(* Write to Module 5 using voltage mode (mV) *)
AO_Set_Instance(
Module_ID := 5,
Ch0_mV := Module5_AO.Ch0,
Ch0_uA := 0, (* Not used in mV mode *)
Ch1_mV := Module5_AO.Ch1,
Ch1_uA := 0,
Ch2_mV := 0, (* Not used in 4–20mA mode *)
Ch2_uA := Module5_AO.Ch2,
Ch3_mV := 0,
Ch3_uA := Module5_AO.Ch3
);
(* Expose status to globals for diagnostics *)
Module5_AO_Done := AO_Set_Instance.STS_Done;
Module5_AO_Failed := AO_Set_Instance.STS_Failed;
Module5_AO_Fault := AO_Set_Instance.STS_Fault_Code;
END_PROGRAM
CONFIGURATION Config0
RESOURCE PLC ON PLC
VAR_GLOBAL
Module5_AO : AO_4CH;
Module5_AO_Done : BOOL;
Module5_AO_Failed : BOOL;
Module5_AO_Fault : USINT;
END_VAR
TASK Task_50ms(INTERVAL := T#50ms, PRIORITY := 1);
PROGRAM Write_AO WITH Task_50ms : PROG_Write_AO;
END_RESOURCE
END_CONFIGURATION