倍福TwinCAT(贝福Beckhoff)应用教程11.1 TwinCAT应用小程序1 如何读写数字量模拟量输入输出(DI,DO,AI,AO)

来源:互联网 发布:淘宝五心需要多少好评 编辑:程序博客网 时间:2024/05/21 18:41
常见的模拟量模块(还有更高端和更低端的,使用方法都一样)

EL3054和EL4024(4路模拟量输入和输出模块)

 

常见的数字量模块(还有更高端和更低端的,使用方法都一样)

EL1809和EL2809(16路数字输入和输出模块)

 

贝福模块的一个优点就是模块化结构(你可以选择要多少个数字输入输出,模拟量输入输出,也可以不要,所以扩展IO会非常方便,只需要多加一片就可以了,一片还可以分为2个,4个,8个,16个点的)

 

右击项目的IO-Devices,然后Scan(如果Scan不可用,请先把TwinCAT切换到Config模式下),然后扫描出来所有的数字量模拟量输入输出

 

可以先把简单的数字量输入输出做好,先定义一个BOOL类型的数组,注意加了AT%I和AT%Q,分别要和扫描出来的数字输入和输出链接

 

数字量输出比较简单,可以直接用一个Checkbox来表示数据(修改Variable的属性为对应的数组元素即可),实际测试的时候,勾选表示TRUE,不勾选表示FALSE(可以测试当DO输出的时候,对应的继电器有反应了)

 

同样使用Checkbox来表示数字输入(可以测试当传感器有输入的时候,对应的方框勾选,没有输入则方框不勾选,即便人为勾选也不会有反应)

 

对于模拟量输出EL4024来说,输出最终转换成4-20mA的数据

 

我们可以自己写一个简单的转换(因为真实绑定到端口上的数据是一个INT类型,而我们只知道输入4-20mA这种有意义的数据,可以在某个绑定的变量上修改Display Scaling为4-20来查看对应的mA值),并且我们知道转换过程应该是线性的,给定最低输入4mA的时候,应该实际往绑定INT变量给一个0,给定最高输入20mA的时候,应该输出一个32767

 

实际测试也确实如此,当AO_0给4-20的时候确实可以在这个数据内变动,同时可以观察到Online的数据也是对的

 

在实际连接中,我往AO_0端口写入了13.45mA的电流值,可以用万用表测试确实是这么多

 

 

对于模拟量输入EL3054来说,输入的最终需要转换成4-20mA的数据

 

转换过程雷同,只不过现在是把0-32767的INT类型输出变成我们能够看懂的4-20mA的输出,具体可以看代码,也是y=kx+b的公式得到的

 

在实际连接中,我在AI_0端口接了一个电阻,并用万用表测试了电流值,确实和TwinCAT采集到的是一致的

 

 

更多教学视频和资料下载,欢迎关注以下信息:

我的优酷空间:

http://i.youku.com/acetaohai123

 

我的在线论坛:

http://csrobot.gz01.bdysite.com/

 

问题交流:

QQ:910358960

邮箱:acetaohai123@163.com

 

 

 

阅读全文
0 0