2

梯形图编程中的“ @ ”符号是什么意思?文档解释了@以二进制模式指定间接DM地址...偏移内存区域:这实际上是什么意思?

考虑文档中的以下图像:

在此处输入图像描述

一个地址(一个 16 位或十进制的 32767)的内容如何变成字地址?例如,如果地址CIO 0的内容为000000001000000:添加@符号CIO 0更改为000000001000000?上述指令中到底发生了什么?

4

2 回答 2

3

这仅适用于 DM(数据存储器)。欧姆龙 PLC 有许多存储区。CIO 通常仅用于输入/输出位。W(工作)用于存储工作内存位(想想 RAM),H(保持)用于存储在断电时必须保留其值的位(想想硬盘驱动器,位数据)。DM 和 EM 主要用于保存 WORD 数据,如果断电也可以存储。当然,对此没有硬性规定 - 例如,在很多情况下,如果您愿意,您可以使用 CIO 位代替 W 位,但每个都有某些独特的功能,可以区分它们并使它们更加适用于某些目的。

在这种情况下,@ 符号就像一个指针。如果我使用指令 [MOV #1 D300],我会将十六进制数据 [x0001] 移动到内存位置 D300。需要明确的是,#1(第二个参数)是一个十六进制(符号#)常量,值为 x0001。如果像上面的例子一样,D300 包含值 [x0100](=256 十进制)并且如果我使用指令 [MOV #1 @D300] 我不会将值 [x0001] 移动到 D300 但我会将它移动到D300 中包含的地址 - 在本例中为 D256。

请注意,@ 符号用于二进制/十六进制格式的指针。如果 D300 = [x0100],则到 @D300 的 MOV 指令会将数据移动到 D256(十六进制 0100)。您也可以使用 * 修饰符来执行 [MOV #1 *D300],这会将存储在 D300 中的 0100 视为 BCD 值 - 换句话说,它不会指向 D256,而是指向 D100!

使用指针可以让您不必修改 MOV 指令,例如,如果您想将一个值指向不同条件下的一系列不同位置。如果您想将内存移动重定向到不同的地址,您只需更新存储在 D300 中的地址值。

请注意,@ 符号可以通过助记符表示其他含义 - 例如,@LD 表示差分 UP 触点!

于 2012-02-17T12:21:30.687 回答
1

Omron PLC中函数中的@ 符号表示它仅在前沿运行。例如,使用较旧的 PLC @INC 或使用较新的 PLC @++ 表示在前沿将通道增加 1。较新的 PLC 中的 ++ 函数是二进制的,而较旧的 PLC 中的 INC 函数是 BCD。

于 2012-07-10T08:10:15.890 回答