组态软件和西门子的S7200可以通过modbus方式进行通信。组态软件作modbus主站,s7200作modbus RTU从站。实现Modbus RTU通讯,需要STEP 7 - Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP 7 - Micro/WIN32 V3.2 Instruction Library(指令库)。Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。
硬件:
(1)S7 PLC 224
(2)PPI通讯电缆
软件:
(1)STEP 7 MicroWIN V4.0
(2)STEP 7 - Micro/WIN32 V3.2 Instruction Library(指令库)
(3)组态软件
Modbus RTU从站指令库只支持CPU上的通讯0口(Port0)
(1)安装指令库 在STEP 7 MicroWIN的基础上直接安装就行,安装好之后可以看到导航栏中libraries下出现了modbus组件。
(2)初始化编程
在step7程序的开头调用MBUS_INT和MBUS_SLAVE,PLC在运行时就自动进入自由口方式并将PLC作为modbus slave。 MBUS_INT在作为初始化系统仅运行一次,MBUS_SLAVE在程序中和其他应用程序一样周期运行。
图中参数意义如下:
Mode:模式选择:启动/停止MODBUS,1=启动;0=停止
Addr: 从站地址:MODBUS从站地址,取值1~247 (这个地址是运行自由口方式时的地址,没必要非得设,PPI方式下的默认2)
Baud: 波特率:可选1200,2400,4800,9600,19200,38400,57600,115200
Parity: 奇偶校验:0=无校验;1=奇校验;2=偶校验
Delay延时:附加字符间延时,缺省值为0
MaxIQ:最大I/Q位:参与通讯的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128
MaxAI:最大AI字数:参与通讯的最大AI通道数,可为16或32
MaxHold: 最大保持寄存器区:参与通讯的V存储区字(VW)
Holdst”: 保持寄存器区起始地址:以&VBx指定(间接寻址方式)
Done(M10.0):初始化完成标志:成功初始化后置1
Error(MB11):初始化错误代码
Done(M10.1): MODBUS执行,通讯中时置1
Error(MB12)错误代码:0=无错误
(3)编制Step7应用程序 接在初始化后面编就行
(4) 分配库指令数据区 调用STEP 7 - Mciro/WIN32 V3.2 Instruction Library(指令库)需要分配库指令数据区(Library Memory)。库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。
如果在编程时不分配库指令数据区,编译时会出现错误
在指令树的Project(项目)中,以鼠标右键单击Program Block(程序块),在弹出的快捷菜单中选择Library Memory(如下图)
在弹出的选项卡中设置库指令数据区(如下图),指令区占用780个字节,是单独分出来的,注意千万不要与用户程序区有重叠,否则会出错。
(5) 下载程序到PLC 编译无误后下载程序,然后把PLC打到运行状态,这时由于PLC运行在自由口通讯方式下,所以不能用MicroWin做在线监控了。
在标准modbus下建立设备
根据步骤3中设定的参数设置通讯参数(如下几图)
在数据库中作参数连接,采集8位数据时要注意高位跟低位,比如3号命令偏置为1时对应的低8位为VB1,高8位为VB0。
运行组态软件,就能看到采集上来的数据了
五、注意事项:
1、计算机串口被其它应用程序占用,microwin不能和力控同时启动
2、没有分配库指令数据区或分配库指令数据区与应用程序区重叠。
3、组态软件中通讯参数与PLC中的不完全一致
4、modbus命令号与PLC对应:
功能1和5 读写单个DO
功能2 读单个DI
功能3 读取单个或多个保持寄存器(V存储器中的字)
功能 4 读单个或多个AI
M区可以映射到V区。
附件:力控钥匙最新版