本帖最后由 浅思 于 2022-3-3 21:50 编辑
前言 本文写给那些想利用labview与PLC通讯读出数据开发人员,适用于新手,大神请忽略。
最近在用Labview做上位机与西门子S1200通讯的项目,需要利用上位机给PLC发送参数设置,并读取PLC采集到的数据,网上查询了很多资料,最终选择开源S7.NET.DLL来进行开发,并模拟通信成功,网上关于用C#调用S7.NET.DLL进行通信的例子很多,用Labview来调用的很少,故决定写这篇文章,把自己这几天摸索的经验分享给大家。
要模拟西门子PLC通讯需要用到的软件如下: 2、S7-PLCSIM V14 3、NetToPLCsim-S7o-v-1-2-2-0 以上软件的安装与使用,建议新手自己百度,下面主要讲labveiw如何调用S7.NET.DLL来与西门子PLC进行通讯,包括读取和写入DB数据块。 1、首先选项NET面版下构造器节点,选择S7.NET.DLL来构造函数,如下图所示:
file:///C:Users86137AppDataLocalTempksohtmlwps8BE4.tmp.jpgfile:///C:Users86137AppDataLocalTempksohtmlwps8BE5.tmp.jpg 2、接下来就是选择对象S7.NET下Plc对连接进行配置,IP地址要与NetToPLCsim-S7o-v-1-2-2-0软件中虚拟的IP地址一致,机架设置为0,卡槽设置为1。
file:///C:Users86137AppDataLocalTempksohtmlwps8BE6.tmp.jpgfile:///C:Users86137AppDataLocalTempksohtmlwps8BE7.tmp.jpg 3、接下来就是创建类的方法,选择read并配置参数,下图演示的是读取DB100.0的数据。数据类型选择DataBlock,db选择100,数据格式保持与PLC中一致,这里选择real。
file:///C:Users86137AppDataLocalTempksohtmlwps8BE8.tmp.jpgfile:///C:Users86137AppDataLocalTempksohtmlwps8BE9.tmp.jpg file:///C:Users86137AppDataLocalTempksohtmlwps8BEA.tmp.jpg 4、选择readbytes可连续读取db数据块里的值,如db100.0-db100.5,cont值即为读取的数据,读取的数据流注意进行数据类型转换,这里数据格式全部设置的real,所以直接全部转换成real格式,数据格式注意要保持和PLC中数据块中数据格式一致。
file:///C:Users86137AppDataLocalTempksohtmlwps8BEB.tmp.jpgfile:///C:Users86137AppDataLocalTempksohtmlwps8BFC.tmp.jpg 5、写入数据也分为单个地址写入或者整个数据块数据写入,下面先看下单个地址写入,这里写入M100.0值为ture。选择writebit方法并设置参数。
file:///C:Users86137AppDataLocalTempksohtmlwps8BFD.tmp.jpgfile:///C:Users86137AppDataLocalTempksohtmlwps8BFE.tmp.jpg 6、连续写入M地址是一样的方法,选择writebytes方法并进行配置。
file:///C:Users86137AppDataLocalTempksohtmlwps8BFF.tmp.jpgfile:///C:Users86137AppDataLocalTempksohtmlwps8C00.tmp.jpg 7、最后是连续写入DB数据块。依然是选择WriteBytes方法,只是配置稍作修改。
file:///C:Users86137AppDataLocalTempksohtmlwps8C01.tmp.jpgfile:///C:Users86137AppDataLocalTempksohtmlwps8C02.tmp.jpg 8、整个过程就是这样,接下来就是测试了,其余的方法大家可以自行摸索,最后附上程序,大家可以自己进行测试。
|