在梯形编程中,"@“标志是什么意思?文档说明@指定二进制模式下的间接DM地址.偏移内存区域:这实际上意味着什么?
请考虑文档中的以下图像:

地址的内容( 16位或小数32767)如何成为单词地址?例如,如果adress 000000001000000:CIO 0有添加@的内容,则CIO 0更改为000000001000000?在上面的说明中到底是什么移动?
发布于 2012-02-17 12:21:30
这只适用于DM (数据内存)。欧姆龙PLC有许多内存区域。CIO通常只用于输入/输出位。W (work)用于存储工作内存位(考虑RAM),H (hold)用于存储如果功率丢失必须保留其值的位(如硬盘驱动器、位数据)。DM和EM主要用于保存WORD数据,如果电源丢失,也可以存储。当然,这方面没有硬性的规则--在很多情况下,你可以使用CIO位来代替W位,例如,如果你愿意的话,但是每一个都有一些独特的特性来区分它们,使它们更适合于特定的目的。
在这种情况下,@符号就像指针一样工作。如果我使用MOV #1 D300指令,我会将十六进制数据x0001移动到内存位置D300。首先,#1 (第二个参数)是值x0001的十六进制(符号#)常数。如果像上面的例子一样,D300包含值x0100,如果我使用MOV #1 @D 300指令,我不会将值x0001移动到D300,而是将其移动到D300中包含的地址--在本例中是D256。
请注意,@符号用于二进制/十六进制格式的指针。如果D300 = x0100,则@D 300的MOV指令将将数据移动到D256 (十六进制0100)。您也可以使用*修饰符来执行MOV #1 *D300,这将把存储在D300中的0100作为BCD值来处理-换句话说,它将指向D100,而不是指向D256!
使用指针可以使您不必修改MOV指令,例如,如果您想在不同的条件下将值定向到一系列不同的位置。如果要将内存移动重定向到不同的地址,只需更新存储在D300中的地址值。
请注意,@符号可以用助记符来表示其他东西--例如,@LD意味着差异向上接触!
发布于 2012-07-10 08:10:15
欧姆龙 PLC中函数中的@符号意味着它只能在最前沿运行。例如,对于较旧的PLCs @INC或使用较新的PLCs,@++意味着在前沿将信道增加1。较新的PLCs中的++函数是二进制的,而在旧的PLCs中的INC函数是BCD。
https://stackoverflow.com/questions/9327806
复制相似问题