文章将介绍如何使用PLC访问并控制M系列采集卡。
一、试验设备的连接
准备的实验设备有:S7-200 SMART型PLC、M-1001和M-2101模块、SDS-1001转换器、K型热电偶以及一个直流电源。
图 1 实验设备
我们首先说明各设备是如何连接的,将直流电源连接到PLC的24V电源接口,正极接L+,负极接M。因为RS485端口是集成在PLC的九针超小D型连接器上的,所以我们制作了一个连接器方便设备接线。具体的针脚分配,大家可以在STEP 7 SMART软件的在线帮助文档中的连接器引脚分配章节中看到。连接器的红线接M2101模块的485-A信号,黑线接485-B信号。因为用以太网电缆连接PLC和电脑,所以需要调整电脑的IP地址,它的具体操作我们之后说明,现在只要将电缆插入网口即可。此次实验我们依然使用SDS-1001为采集模块供电,将它们的+Vs、GND端连接就可以了。最后将K型热电偶接入M2101模块中的DI 1端口。为模块通电,这样设备接线就完成了。
图 2 接线参考图
二、使用Smart软件与模块建立连接
S7-200 SMART型PLC所用的编程软件是Smart软件,这个软件是免费使用的,大家可以到西门子的官网下载。
图 3 SMART软件下载
打开软件,在文件选项中打开范例M2101,此时设备正处于未连接的状态,双击主要窗口中的通信选项,在出现的的对话框中点击查找CPU,就能看到PLC的IP地址。我们可以点击旁边的闪烁指示灯,验证是否找到了CPU。如果PLC的指示灯交替闪烁,就说明我们查找CPU已经成功。
图 4 连接PLC
下一步的操作是设置电脑的IP地址。进入网络和Internet设置界面,进入网络和共享中心。
图 5 网络和共享中心
选项点击以太网。
图 6 以太网
选择属性。
图 7 以太网状态
在弹出的窗口中找到Internet协议版本4(TCP/IPv4)项目,点击属性。
图 8 以太网属性
选择使用下面的IP地址,输入相应的IP地址:192.168.2.111,子网掩码输入225.225.225.0,默认网关是:192.168.2.1。点击确定。
图 9 IPv4属性
回到软件页面,如果成功的话,软件会显示已连接。
图 10 已连接
三、PLC范例程序说明以及实验
我们以程序2101为例,解释一下它的内容。在程序段1中的SM是PLC中的特殊标志继电器,SM0.0表示始终接通,与其连接的参数EN在输入接通(TURE)时,每次扫描均会执行该指令;
图 11 Always_On命令
SM0.5表示提供一个周期为1秒钟的时钟脉冲,0.5秒为1,0.5秒为0,与它连接的参数First我们之后说明。
图 12 Clock_1s 命令
特殊寄存器(SM)的其它地址位,大家可以到在线帮助文档中查看。指令MBUS_CTRL,可以在主要窗口的库文件中的Modbus RTU Master(v2.0)中找到,右键选择帮助就可以看到它的说明文档。需要声明的是:在程序中,我们将PLC当作主站,M模块(如:M-2101)则作为从站使用。阅读说明内容我们知道MBUS_CTRL是程序在执行MBUS_MSG指令前必须调用的指令。
图 13 MBUS_CTRL命令
参数“模式”(Mode)用于选择通信协议,我们输入的是SM0.0,触点为常闭状态,所以输入值是1,意思是启用Modbus协议。参数“波特率”(Baud)的设置值要和从站设备的波特率一致才可以得到正确信息,所以输入值为M模块的默认波特率:9600。参数“奇偶校验”(Parity)的设置应与从站设备的奇偶校验相同,从站默认为偶校验,以数值2表示。参数“Port”是设置物理通信端口,实验中使用的是PLC中集成的RS-485接口,所以需要输入0值。参数“超时”(Timeout)为等待从站做出响应的毫秒数,范例中设置的是典型值1000ms。
图 14 MBUS_CTRL命令
所以指令Mbus_CTRL的作用是初始化主站,使得主从站设备的参数一致,两者可以进行正常的通信。
下面我们来介绍指令MBUS_MSG,它的作用是启动对Modbus从站的请求并处理响应。参数“First”是当主站有新请求发送时,First通过边沿检测元素(例如是上升沿),将导致程序发送一次,所以我们为此参数设置的是SM0.5。参数“从站”(Slave)是Modbus从站设备的地址,M系列模块的默认地址为1。参数“RW”是设置读取或写入信息,0表示读取,1表示写入。参数“地址”(Addr)是起始Modbus地址,范例中写入的数值就是我们在用户手册中给出的寄存器地址:30101。参数“计数”(Count)用于分配要在该请求中读取或写入的数据元素数,也就是根据地址参数的输入值向后延伸的个数。
图 15 MBUS_MSG命令
打开范例M2100的用户手册,找到M2101远程IO模块Modbus映射表就可以看到地址、通道、属性等内容。
图 16 M2101寄存器列表
如我们现在打开的这个范例程序,它是要操作从热电偶输入寄存器30101到30108这8个寄存器,所以对Count的输入值为8。参数“DataPtr”是间接地址指针,指向CPU中与读/写请求相关的数据的V存储器,指针必须是VB类型。这里的V、VB、VW是V存储器中不同类型数据的表达方式:V表示位数据,VB表示字节数据,VW表示字数据,一个字由两个字节构成,一个字节则有8位。在范例程序中,我们使用VB数据类型存储从模块读到的值,然后用VW数据类型表示出来。进行这样的数据操作是因为,当PLC发出读取请求时,采集模块返回的值是16位的整型数据,需要用两个VB类型的数据表示,而一个VW数据类型就表示两个字节,刚好可以表示模块返回的数据。我们可以在状态图表中验证一下。调出图表窗口,下载程序,运行CPU,开启图表的监视状态,因为我们只为模块连接了一个温度传感器,所以在状态图表中只有第2行显示出实际温度值,当我们提高环境温度,第2行的当前值也会随之改变。其它没有接入温度传感器的端口,其寄存器的返回值是-2731。
图 17 传感器温度测试
接着验证我们刚才提到的V存储器的数据类型,在状态图表中输入VB1000,按回车键,就可以按顺序添加地址。将它们的格式更改为十六进制,VB1000为F5,VB1001为55,而VW1000是它俩的集合F555。所以说两个VB数据类型,构成一个VW数据类型。
图 18 数据类型
更换M1001采集模块。
接下来我们打开范例M1001DI,它可以读取模块上的DI(离散量输入)的状态。连接设备后,打开状态图表的实时数值监控,当前值为1。当我们将DI 0接地,就会看到当前值变为0,其它的DI端口也是一样。这里的地址是位格式的,因为我们只需要一位的数据就可以表示端口当前所处的状态(闭合或是断开)。
图 19 DI端口
打开范例M1001DO,此范例可以控制DO(继电器)的状态。建立通信后,下载程序到CPU,运行CPU,打开监控按钮,可以看到此时的继电器都处于关闭状态。在新值中输入1,点击图表中的写入按钮,就会看到当前值的改变而且M模块的继电器也会动作到开启状态。
图 20 DO端口
这两个范例程序的寄存器地址大家可以在用户手册M1000的M1001远程IO模块Modbus映射表中找到。
以上就是模块与PLC连接的相关内容。文档中使用的范例及用户手册均可以在官网下载。