高手分享:
有硬件齐备,组建一个由S7-1200为主站的USS网络,并展示全过程,看看为什么要用S7-1200和TIA的“魅力”。(注:其实我更喜欢使用PN组网。不过MM4也是大家常用的变频器。)
首先,看看已有的驱动系统如下:
添加两芯PB电缆、插头、终端电阻和S7-1200PLC(哪个型号均可。注:版本<3.0没有WEB服务)附加一块(*多3块)RS485模块。
每个RS485模块*多可以连接16台西门子USS驱动装置(包括MM4、G120 USS的CU/其他支持USS协议的驱动器)。
如下图:
大虾:
打开 TIA (V11、V10.5均可。只不过V10.5硬件标识符不一样、功能少、适合低版本S7-1200;但好处是自带WinCC Basic)
TIA的使用方法:就是拖拽 - 释放图标、变量。
1、新建项目:取个名字;
2、在设备视图中,点击黑三角,CPU中选实际的 S7-1200,和订货号一致。
3、在通讯模块目录下,找到RS485模块,拖拽、插到和实际一样排序的“机架”上。
4、点击CPU1,选属性。按实际局域网网络设定PLC的IP地址。
我这里使用了一台 S7-1215C。如下图:
注意:在TIA V10.5中硬件标识符不一样(功能少嘛)
OK! 完成硬件组态。编译、保存项目。
开始编程:
首先,点击程序块黑三角、添加新块。选组织块中的Startup启动块。目的是先把要驱动的每一个装置“声明”一下。呵呵。如下图:
打开Startup启动块。从右侧《通讯》下的《通讯处理器》找到USS。按住USS_DRIVE图标,拖拽到能流线;出现绿点,放置。会自动弹出背景数据块窗口。我这里使用了自动;但实际上可以手动,选一个大一点编号。因为,如果这个PLC要和其它的一些触摸屏?LOGO连接时;有的只能和DB1 “打交道”
如下图:
和S7-200的USS库完全不一样!我这里展示一下 S7-1200 USS库的“魅力”。做一个 8/8 PZD的通讯(而不是 S7-200的只能2/2PZD) 。
我想快速、同步读取:速度、电流、电压、转矩、DI端子、模拟量输入。
1、连续拖入 USS_DRV图标、每一个都使用同一个 USS_DRV_DB(属于同一个RS485模块的都是同一个DB!)
2、修改每一个的地址(可以使不连续的;但要和对应控制的MM440分配的地址一致)
3、修改PZD长度。(我想同时读/写8/8PZD,当然改成8啦。可以是2、4、6、8)
如下图:
注意:除了上述两项,其他都不用设置。这只是个“声明”
实际存在几个USS驱动装置,就拖拽进来几个。
至此,启动OB就写完了。
顺便说一句,所有需要启动时赋值的数据、变量都写在这里。
上面的USS_DRV‘s其实只是即时的组态每一个驱动的报文;并没有真正和模块通讯!
下面“组态”和RS485模块的通讯。
这里先说一下USS通讯:应该注意到这是异步的、总线方式的通讯。总线上,每次只能和一个驱动交换数据,等待驱动的响应。一条报文的交换时间就“很长”。所以CPU只需要定时和485模块“打交道”就可以了。
先看一个表格:
摘自《S7-1200系统手册》
因为我选用19200速率。选个80mS启动一次RS485模块与某一驱动装置交换一次报文就够了。
为此,添加个新块。选OB组织块中的循环中断Cyclic_interrupt。扫描时间设定80mS。如下图:
按确认后,在打开的循环中断中,拖入一个USS_PORT指令图标:
1、输入端口PORT选硬件组态的485模块号
2、输入端口USS_DB选上面建好的USS_DRV_DB。
在左侧PLC变量表中新加一个变量表。建几个PORT端口用的变量(注意数据类型)。如下图
然后把它们拖到对应的端口。
这里要说明一下:因为网络、驱动装置未在线、出错时,需要看到是哪个。要把USS_DRV_DB中的扩展信息提出来。所以在USS_PORT调用后,读取USS_Extended_Error。
至此,循环中断就写完了
开始写主程序 组织块OB1(其实没啥可写的。呵呵)
在写主程序之前,先为每一台USS驱动准备一个数据块DB,来接收报文。
1、添加新块。选数据块。
2、取个合适的名称。我选个MM440_1_DB。(**个就是MM440_2_DB... 到第N个。有窍门,看下面��
如图:
如果驱动很多,可以用数组的方法写在一个DB里。但要考虑 触摸屏的读取问题。
数据块里面可按图示,添加变量(*好写好注释说明!)如下图:
你不需要反复填写DB!可以使用 Ctrl-C、Ctrl-V。复制、粘贴,然后改名称、改编号。有几个USS驱动
就做几个。
每台USS驱动的输出数据做完了。现在开始写主程序OB1了。
其实*好新建一个组织块OB,这样OB1“干净”
1、从右侧拖拽一个USS_DRIVE指令进来;它会弹出背景数据块的窗口;
2、一定要选已经建好的背景数据块DB!
3、双击打开前面建好的;该USS驱动的数据块(如:对应地址1建立的MM440_1_DB)。准备赋值。
如下图:
开始赋值 其实就是 拖 - 拽 - 放。呵呵
如下图:
注意:修改 输入的DRIVE地址。PZD_LEN长度(我需要=8PZD)
同理:再拖入一个USS_DRV指令到下一条语句。
打开**个地址的 DB 同上处理。。以此类推。。
见下图:
好了。主程序写完了。OK!
全部编译。保存项目。
在下载之前,先要把所有USS驱动设置一下(硬件系统见主题帖的图)
这些是MM440,我使用DriveMonitor来设置:
见下图: 只设置 COM口!千万别设置BOP口!
每一台USS驱动装置都设置完成后。
可以通过TIA 下载全部程序和块到S7-1200中了。
启动运行所有的USS装置。在TIA中,打开所有USS驱动的输出DB,点击监控按钮。
呵呵,通过WiFi,就看到了所有的结果。
如下图: