DWORD 显式转换(S7-1500) 显式转换选项 下表列出了 DWORD 数据类型显式转换的选项和指令:LDT X 由于格式为1970-1-1-0:0:0.0,返回结 果为纳秒。 SINT_TO_LDT DT - 不能进行显式转换 - DTL - -TOD X 转换源值的位模式,并传递给目 标数据类型。(值“-1”(16#FF) 变为“-1”(16#FFFFFFFF))。如果将负值转换为一个无符号目标 数据类型,则使能输出 ENO 设 置为“0”。(由于格式为 0:0,因 此单位为毫秒)SINT_TO_TOD LTOD X 转换源值的位模式,并传递给目 标数据类型。(值“-1”(16#FF)变为“-1”(16#FFFFFFFF))。如 果将负值转换为无符号的目标数 据类型,则使能输出 ENO 设置 为“0”。(由于格式为0:0,单位为纳秒) SINT_TO_LTOD DATE X 转换源值的位模式,并传递给目标数据类型。(值“-1”(16#FF) 变为“-1”(16#FFFFFFFF))。如 果将负值转换为一个无符号目标数据类型,则使能输出 ENO 设 置为“0”。(由于格式为 1990-1-1,单位为天) SINT_TO_DATE STRINGX 将值转换为一个字符串。 该字符串的前几个字符将使用空 格进行填充。空格的数量取决于 数字值的长度。 输出正数值时不带符号。如果超出字符串所允许的长度, 则使能输出 ENO 设置为“0”。 SCL 具有以下特性: • 不插入空格。 •字符串前面带一个符号。
USINT 显式转换(S7-1500) 显式转换选项 下表列出了 USINT 数据类型显式转换的选项和指令:INT 显式转换 (S7-1500)显式转换选项 下表列出了 INT 数据类型显式转换的选项和指令:数值转换为目标数据类型。转换 的结果则取决于所使用的指令。如果转换中超过目标数据类型允 许的值范围或待转换的值为无效 浮点数,则将使能输出 ENO 设 置为“0”。S7-1200的数据类型转换: (S7-1200) 数据类型转换概述 (S7-1200) 简介如果在一个指令中链接多个操作数,必须确保这些数据类型是兼容的。这一点也适用于分配或提供块参数。如果操作数不是同一数据类型,则必须执行转换。 可选择两种转换方式: • 隐式转换 执行指令时自动进行转换。 • 显式转换在执行实际指令之前使用显式转换指令。以上数据类型转换方式仅适用于Zui新版本的 CPU (V.4),但不适用于 CPU 版本 V1-3。说明 在 SCL 中转换位字符串 在表达式中,所有位字符串(BYTE、WORD 和 DWORD)都可以处理为相应的无符号整数(USINT、UINT 和 UDINT)。从 DWORD 隐式转换为 REAL 的操作过程与从 UDINT 转 换为 REAL的相同。 隐式转换 如果操作数的数据类型是兼容的,则自动执行隐式转换。可根据较严格或较宽松的条件执行 此兼容性测试: • 进行 IEC检查(默认) 如果设置了 IEC 检查,则应用以下规则: – 无法将 BOOL 隐式转换为其它数据类型。 – 只有REAL、BYTE、WORD、DINT、INT、SINT、UDINT、UINT、USINT、TIME、DT、 STRING, CHAR和 WCHAR 数据类型可以隐式转换。 – 源数据类型的位长度不能超过目标数据类型的位长度。例如,不能将一个 WORD 数据类型的操作数声明给 BYTE 数据类型的参数。 • 不进行 IEC 检查 如果没有设置 IEC 检查,则应用以下规则: – 无法将BOOL 隐式转换为其它数据类型。 – 只有REAL、LREAL、BYTE、WORD、DWORD、SINT、INT、DINT、USINT、UINT、UDINT、TIME、DTL、TOD、DATE、STRING、CHAR 和 WCHAR 数据类型可以隐式转 换。 –源数据类型的位长度不能超过目标数据类型的位长度。例如,不能将一个 DWORD 数 据类型的操作数声明给 WORD 数据类型的参数。 –在输入输出参数 (InOut) 处输入的操作数位长度必须与为该参数设定的位长度相同。 说明 隐式转换,不进行 IEC 检查程序编辑器将使用灰色三角标记已隐式转换的操作数。深灰色三角表示可以进行隐式转换, 而不会降低准确度。例如,在将 SINT数据类型转换为 INT 时。浅灰色三角表示可以进行隐 式转换,运行期间可能会出错。例如,如果在将数据类型 DINT 转换为 INT时出现上溢, 使能输出 ENO 将被设置为“0”。有关 IEC 检查和隐式转换设置的详细信息,请参见“另请参见”。 显式转换如果因操作数不兼容而不能进行隐式转换,则可以使用显式转换指令。可以在“指 令”(Instructions) 任务卡中找到转换指令。 在ENO 使能输出处显示了可能发生的溢出。例如,如果源数据类型的值大于目标数据类型 的值,将发生溢出。 说明 位模式的移位如果显式转换中包含位模式移位,则不置位使能输出 ENO。 有关显式转换的详细信息,请参见“另请参见”部分。下图所示为一个必须执行显式数据类型转换的示例:“Block”函数块中,输入参数“IN_INT”处变量的数据类型应为INT。必须先将变量 “IN_DINT”的值从 DINT 转换为 INT。如果变量“IN_DINT”的值在数据类型 INT的允许值范围内, 则进行转换。否则,会发出溢出信号。在发生溢出时仍将进行转换,但值将会被截断, 将使能输出 ENO置位为“0”。激活或取消激活 IEC 检查 (S7-1200)该操作数的数据类型用于检查兼容性。可设置较多或较少的条件进行兼容性测试。如果激活 “IEC 检查”(IECcheck),则系统将应用较严格条件。 可以为项目的所有新块或个别块统一设置 IEC 检查。 为新块设置 IEC 检查要为项目中的所有新块设置 IEC 检查,请按以下步骤操作: 1. 在“选项”(Options)菜单中,选择“设置”(Settings) 命令。 将在工作区中显示“设置”(Settings) 窗口。 2. 在区域导航中选择“PLC编程 > 常规”(PLC programming > General) 组。 3. 在“新块的默认设置”(Defaultsettings for new blocks) 组中,选中或取消选中“IEC 检查”(IEC Check) 复选框。将为程序中的所有新块启用或禁用 IEC 检查。 为某个块设置 IEC 检查 要为某个块设置 IEC 检查,请按以下步骤操作: 1.打开块。 2. 在巡视窗口中打开“属性”(Properties) 选项卡。 3. 在区域导航中选择“常规”组。 4.选中或清除“IEC 检查”(IEC Check) 复选框。 启用或禁用此块的 IEC 检查。设置与项目存储在一起。二进制数(S7-1200) BOOL 隐式转换 (S7-1200) 隐式转换选项 数据类型 BOOL 不能进行隐式转换。 参见BOOL(位)位字符串 (S7-1200) BYTE 显式转换 (S7-1200) 显式转换选项 下表列出了 BYTE数据类型显式转换的选项和指令:数据类型转换概述 (S7-300, S7-400) 简介如果在一个指令中包含多个操作数,必须确保这些数据类型是兼容的。分配或提供块参数时 也适用。如果操作数不是同一数据类型,则必须进行转换。可选择两种转换方式: • 隐式转换 编程语言 LAD、FBD、SCL 和 GRAPH 支持隐式转换。STL 编程语言不支持隐式转换。• 显式转换 说明 将位字符串转换为 SCL 在表达式中,所有位字符串(BYTE、WORD 和DWORD)都可以处理为相应的无符号整数 (USINT、UINT 和 UDINT)。从 DWORD 隐式转换为 REAL的操作过程与从 UDINT 转 换为 REAL 的相同。隐式转换如果操作数的数据类型是兼容的,则自动执行隐式转换。可以根据设定的严格或较宽松的条 件来进行兼容性测试: • 进行 IEC 检查在已经设置了 IEC 检查的情况下,下列规则适用于 LAD、FBD 和 GRAPH 编程语言: – 可以进行隐式转换的数据类型仅有BYTE 和 WORD。 – 源数据类型的位长度不能超过目标数据类型的位长度。例如,无法为预计为 BYTE 数 据类型的参数指定WORD 数据类型的操作数。 在已经设置了 IEC 检查的情况下,下列规则适用于 SCL 编程语言: –无法将位字符串隐式转换为其它数据类型。例如,无法为预计为 INT 数据类型的参数 指定 WORD 数据类型的操作数。 –源数据类型的位长度不能超过目标数据类型的位长度。例如,无法为预计为 BYTE 数 据类型的参数指定 WORD 数据类型的操作数。 •不进行 IEC 检查(默认设置) 在未设置 IEC 检查的情况下,下列规则适用于 LAD、FBD 和 GRAPH 编程语言: –可以对 BYTE、WORD、DWORD、INT、DINT、TIME、S5TIME、TOD、DATE 和 CHAR数据类型进行隐式转换。 – 源数据类型的位长度不能超过目标数据类型的位长度。例如,无法为预计为 WORD 数 据类型的参数指定DWORD 数据类型的操作数。 在未设置 IEC 检查的情况下,下列规则适用于 SCL 编程语言: –位字符串可以被隐式转换为其它数据类型。例如,可以对预期为 WORD 数据类型的参 数提供 WORD 数据类型的操作数。 –位字符串无法被隐式转换为浮点数。例如,无法为预计为 REAL 数据类型的参数指定 WORD 数据类型的操作数。 –如果位长度相同,那么位字符串只能被隐式转换为 TIME、TOD、DATE 和 CHAR 数据 类型。例如,无法为预计为 DATE数据类型的参数指定 DWORD 数据类型的操作数。 – 源数据类型的位长度不能超过目标数据类型的位长度。例如,无法为预计为 INT数据 类型的参数指定 DINT 数据类型的操作数。 – 在到达/离去参数处输入的操作数位长度必须与为所述参数设定的位长度相同。显式转换 如果因操作数不兼容而不能进行隐式转换,则可以使用显式转换指令。可以在“指 令”(Instructions)任务卡中找到转换指令。