哈喽,大家下午好呀~
今天给大家带来200SMART的MODBUSRTU通信。
西门子S7系列的PLC,有S7-200/300/400,S7-200SMART,S7-1200/1500;
如果经常接触项目的话,大都了解,S7-200型号的PLC已经彻底停产了,西门子使用了200SMART来代替,而200SMART的用法和200基本上是差不多的,但是200smart多了以太网功能,这也是现在的主流。
之所以这篇文章还来介绍200SMART的通信,主要还是国内现在大部分的小型单机项目,还是会经常使用到它;
这其中,200SMART的通信和运动控制这两大功能,几乎是必用的。
下面我们就用一个简单的例子,为大家演示下smart的MODBUSRTU通信。
例:200smart与200smartPLC做MDOBUSRTU通信。
具体什么是通信,这里就不过多讲解了,我们直接看指令的介绍。
打开200SMART软件STEP7-MicroWIN SMART,点开“库”,可以看到“ModbusRTU Master”有两个指令文件夹;
MBUS_CTRL和MB_CTRL2具有相同的作用和参数。MBUS_CTRL用于单个ModbusRTU 主站。MB_CTRL2用于第二个ModbusRTU 主站。相应地,MBUS_MSG和MBUS_CTRL一同用于单个ModbusRTU 主站。MB_MSG2和MB_CTRL2一同用于第二个ModbusRTU 主站。
MBUS_CTRL:主站定义参数
MBUS_MSG:主站读写指令
MBUS_INIT:从站定义参数
MBUS_SLAVE:从站应答指令
硬件上:
图中,若使用编号1处的端口,选用第一个文件夹内的指令,若
使用编号2处的信号板,选用第二个文件夹内的指令,
首先,我们调用MBUS_CTRL指令(主站定义参数),CTRL指令引脚:
EN:使能,一直为ON;
Mode:模式,1=modbus,0=PPI;
Baud:波特率,9600,19200等;
Parity:奇偶校验;0=无校验,1=奇校验,2=偶校验;
Port:端口;0=端口0,1=端口1。
Timeout:通信超时,1ms到32767ms 之间的任何值;典型值是1000ms (1 s),一般要足够大,让从站有足够的反应时间;
Done:完成位;
Error:错误字节。
(注意:MBUS_CTRL指令,要写在主站里,一个主站只要写一条即可。波特率和奇偶校验要与从站的设定一致。)
MBUS_MSG(主站读写指令)
EN,使能一直为1;
First,触发,使用沿指令;
Slave,从站地址;
RW,读写;0读,1写;
Addr,从站的数据区:
00001-09999,表示Q点;
0001至19999,表示I点;
30001至39999,表示模拟量输入;
40001至49999和400001至465535,V存储区或者其他的设备的数据区。
Count,是个数;
DataPtr,主站的数据区;如果RW处是写,则是把该引脚处数据写到从站,如果RW处是读,则是把从站数据读到该引脚处;必须使用指针符号(&)
(Done和Error,就不在重复介绍了,在F1帮助里有介绍)
讲下,这里我们填写的Slave从站站号是3,是因为主站的地址我们默认为2。
在这里我们还需要再设置下主站和从站plc上电就处于RUN状态;
这样设置好后,当我们在调试的时候,只要给两台plc上电,那么它们就会自动执行通信。
然后是从站设置:
MBUS_INIT(从站定义指令)
EN,使能,SM0.1,初始化;
Mode,模式;1=启用modbus,0=不启用modbus;
Addr,从站地址;(这里填3,上面有图)
Baud,波特率;
Parity:奇偶校验;
Port,端口0或者1;
Delay:延时,默认为0,表示立即应答;
MaxIQ:最大IQ存储区;
MaxAI:模拟量输入映像区;
MaxHold:可访问的V存储器中的字保持寄存器数;
HoldStart:存储器中保持寄存器的起始地址;
从站应答指令(MBUS_SLAVE)
完成后,将程序各自下载到对应的主站plc和从站plc里,可以试下断电启动;这时,因为主站是写功能,地址是IB0,也就是I0.0-I0.7,与之对应的从站地址是1,所以,I0.0控制Q0.0,以此类推。