STL语句程序

各位楼主,请教一下STL语句程序,如附图,对STL一点不懂,哪位讲解一下,谢谢啦

问题补充:
魔笛库卡你好,我不明白后面为什么要转换成32位再左移3位?是否可以实际举例说明?另外DBW[AR1,P#0.0]中P#0.0是什么意思呢?谢谢啦

图片说明:

STL语句程序   

最佳答案

不明白后面为什么要转换成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-300S7-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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日 上午12:08
下一篇 2020年10月31日 上午12:08

相关推荐