在拿到DA模块说明书时,有很多人看不懂里面的说的什么,怎么样,对于AD和DA是如何转换的不清楚,今天就将一下转换机制:
AD和DA模块中有个缓冲存储器分配(BFM),它是与plc数据交换时暂时存放数据的地方,FX2N的BFM使用如下表:
BFM
很多人看不懂这个表说的什么,首先BFM是16位存储,(PLC中的16位、32位就是二进制的位而不是10进制)。
b15、b14、b13、b12、b11、b10、b9、b8、b7、b6、b5、b4、b3、b2、b1、b0
对于FX2DA,我们只用到BFM的16和17两个编号,其他保留不用看,在#16里面,只用前8位,b7~b0,其他保留不用看。#17里面,只用到b2~b0,其他保留不用看。这就简单了。这个BFM怎么和PLC进行数据交换呢,用From和to指令来完成,Form是从BFM中取数据,to是存数据。
FX2DA转换的数字量最大为4000,也就是2^12,因此DA模块只能转换12位数据,而#16只能暂存储8位数据,怎么办?那就分两次以低8位和高4位顺序进行写,所以才有低8位数据保持,不然第二次就把第一次写的覆盖掉了。
#17里面有b2~b0,它的功能是:
b0:通过将1改变为0,通道2的D/A转换开始
b1:通过将1改变为0,通道2的D/A转换开始
b2:通过将1改变为0,D/A转换的低8位数据保持。
这里是什么意思呢?
想要通道2的D/A转换开始,就必须要降b0的值从1变成0,怎么实现呢,先传送个1给b0,再传送个0就好了。
想要通道1的D/A转换开始,就必须要降b1的值从1变成0,怎么实现呢,先传送个1给b1,再传送个0就好了。
想要通D/A转换的低8位数据保持,就必须要降b2的值从1变成0,怎么实现呢,先传送个1给b2,再传送个0就好了。
已说明书例子来讲解下如何实现的:
DA模块PLC程序
a:数字数据D100扩展到辅助继电器(M100~M115),K4M100表示M100~M115,k1表示连续4个M,例如下面的K2M100就表示M100~M107。(为什么要用M来表示D呢,因为我只转换12位,D是16位的)
D换成M(12位数据的传输)
M怎么能存储数据呢,因此M是个位软元件,只有断开(0)和闭合(1),而PLC数据都是二进制处理的,比如字软元件D是16位的,所以就能通过M来表示,一个D需要16个M来储存。
b:这条指令时将数据D100的低8位传送到BFM的#16编号进行输出。
c:将D100的低8位写到#16后,还要写高4位,为了不覆盖,得先把低8位保持,c的指令就是保持功能,H0004是16进制的数字4.转换成二进制就是100,对应b2b1b0;c的第一条指令就是将b2置1,第二条将b2置0,这样就完成#17的低8位保持功能了。
c指令的低8位保持功能
e:e的指令就是D/A转换,H0002是16进制的数字2.转换成二进制就是010,对应b2b1b0;c的第一条指令就是将b1置1,第二条将b1置0,这样就完成#17D/A转换功能。
DA转换开始功能
以上就是DA模块与PLC之间的数据转换过程。
(责任编辑:admin) |