plc - "@"符号是什么意思(欧姆龙 PLC)?

标签 plc

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

考虑文档中的以下图像:

enter image description here

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

最佳答案

这仅适用于 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 触点!

关于plc - "@"符号是什么意思(欧姆龙 PLC)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9327806/

相关文章:

使用 C 通过 TCP/IP 连接到 LAN 中的设备

plc - TwinCAT - 如何测量程序执行时间?

c# - 从 C# 向 PLC 发送 FINS 命令

vb.net - 通过PC机以太网口与西门子S7300 PLC通讯

sockets - Modbus TCP :Is there any better way for reading registers randomly one or more?

c++ - C++中的PLC功能 block 库

plc - 开始PLC编程

plc - 用于读取和写入 PLC 标签(在 AB Logix 5000 Controller 上)的 CIP 服务是原子的吗?

plc - TwinCAT:在隔离内核上运行失败

plc - PLC 中的子程序 - 是否会减少扫描时间?