发布于 2011-05-05 16:11:17
5楼
SM 338;POS-INPUT 所支持的编码器类型:
● 帧长度为13 位的绝对值编码器(SSI)
● 帧长度为21 位的绝对值编码器(SSI)
● 帧长度为25 位的绝对值编码器(SSI)
绝对值编码器将其值以帧的形式传送到 SM 338。
标准串行接口、二进制编码的绝对值编码器传送到SM338的编码数据将保存在一个双字(32位)中,要弄清这32位的含义。必须先了解你的编码器:单圈还是多圈、每转步进数(即每转编码范围)等。
SM338用于存储SSI绝对值编码器输出数据的双字(32位)定义如下:
bit31:是否禁止编码器数值更新
bit30~bit25:无定义,默认为0
bit24~bit13:为圈数,对单圈编码器而言,值为0
bit12~bit0:为最后一圈,实际转动的角度编码。单圈编码最大13位,即8196
以每转1024(10位)个编码,512(9位)转的绝对编码器为例。
分析编码器:单圈编码最大13位(实际选用10位)+圈数9位=22位,因此可以肯定这是一个帧长度为25位的编码器。假如从“零”开始转动,转动119.75圈。编码器传送的数据为:(000001110111)(1100000000)(*)。第一个括号中的数据为圈数(12位数据,也就说明了SM338最大支持圈数为4096圈),第二个括号为最后一圈实际转动步数(编码器为10位,不足13位,剩余3位,有编码器在尾末补充附加位)。
SM338接收传送过来的数据存储在一个双字空间中,内容为0000000 000001110111 1100000000 *。
当你在SM338参数配置中设置了
1.Position[0-12]为3
2.steps/revolutions为1024。
这两个参数设置一个,会自动改变另一个。你会发现他们正好对应了13位的编码范围。
参数配置好后,SM338接收到数据后会自动将有效数据(12+9位)右对齐,3个附加位右移移出。存储在SM338中的数据变为:000 0000000 000001110111 1100000000。这样才真实反映编码值。
对于要将编码值转换成0 ——1.4 m之间的值。需要“0m”对应的编码值data0和你的机械参数如编码器转一圈对应多大高度a等。在“0m”时读取一次就知道对应的编码值(机械安装时,编码0往往与机械位置0是不一致的,一次需要读取一次编码值)。
当前实际值h=(data-data1)*a/1024。其中data为当前编码值。
不详之处请参见
http://www2.ad.siemens.com.cn/Download/Upload/AS/application/A0108.pdf
http://support.automation.siemens.com/CN/llisapi.dll/csfetch/8859629/s7300_module_data_manual_zh-CHS_zh-CHS.pdf?func=cslib.csFetch&nodeid=22273000&forcedownload=true(第544-562页)
回答者: 如是 - 初级技术员 第5级 2010-5-11 11