各位楼主,请教一下STL语句程序,如附图,对STL一点不懂,哪位讲解一下,谢谢啦
问题补充:
魔笛库卡你好,我不明白后面为什么要转换成32位再左移3位?是否可以实际举例说明?另外DBW[AR1,P#0.0]中P#0.0是什么意思呢?谢谢啦
图片说明:
最佳答案
不明白后面为什么要转换成32位再左移3位?是否可以实际举例说明?另外DBW[AR1,P#0.0]中P#0.0是什么意思呢?
1、首先解释DBW[AR1,P#0.0]中P#0.0是什么意思呢?
、 P#0.0是地址常数,例如P#8.0、P#10.5等等,一般用于表示地址的初值及地址的偏移量。
、 [AR1,P#0.0]的意义即表示AR1地址指针中的内容(例如为4.0)加上偏移量P#0.0形成新的地址(4.0+0.0=4.0)。那么,DBW[AR1,P#0.0]则为DBW4了。
、 运算的法则是:AR1/AR2和P#中的数值,按照BYTE位和BIT位分类相加。BIT位相加按八进制规则运算,而BYTE位相加,则按照十进制规则运算。
、再举一例:
例如:寄存器寻址指针是:DBX[AR1,P#2.4],其中AR1=26.4
当AR1等于26.4,
AR1:26.4
+ P#: 2.4
---------------------------
= 29.0 这是区域内寄存器间接寻址的最终确切地址数值单元。
DBX[AR1,P#2.4]即为DBX29.0。
2、为什么要转换成32位再左移3位?
、 首先要了解AR1/AR2的一般数据格式:
AR:0000 0000 0000 0BBB BBBB BBBB BBBB BXXX
其0-2bit,指定bit位,3-18bit指定byte字节。
例如:当AR=000000D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于DBX26.4其0-2bit,指定bit位其0-2bit,指定bit位,实际上就是等于26.4。
、 再解释为什么要转换成32位再左移3位?
因为AR的32位的数据格式。再左移3位是形成其0-2bit,来指定bit位。
例如,L3(这里的L是表示32位长常数),左移(或乘以8)后即形成:
0000 0000 0000 0000 0000 0000 0100 0000(b)=8.0
3、如进一步了解有关指针变址寻址,请见下述资料:
、S7-300和S7-400寻址
https://support.industry.siemens.com/cs/cn/zh/view/79632832
、《关于S7-300和S7-400指针寻址的说明与例程 》下载:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=F0215
、《step7编程之地址概念详解》连接:
http://wenku.baidu.com/view/b2b4d3375a8102d276a22fd3.html
或
http://www.chinakong.com/rencai/disp.asp?id=1633&leibie=4
、《西门子STL间接寻址常问问题集》
http://www.ad.siemens.com.cn/download/docMessage.aspx?
ID=6175&loginID=&srno=&sendtime=
提问者对于答案的评价:
您的回答十分详细,非常感谢,受教了,学无止境呀
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc289047.html