说明
如果用 S7 模拟量模块替换了 S5 模拟量模块,除了 R64 块外,不能再使用其它标准块。这是由于它们只能直接连接到模拟量模块的输入和输出上。 不管用何种方法,由于模块的分辨率有所不同,标准块可能存在提供错误结果的风险。
不过,如果在 S5 程序中没有使用任何标准接口,可以把模拟量值转换增加到现有的程序中。
S5 模块缺省分辨率是 2048 ,但 S7 模块通常的分辨率为 27648 (S7 格式)。
在转换 S5 程序时必须考虑到分辨率的变化,以便不会歪曲评估结果。
下图清晰的描述了其中的关系。
图. 1: 在块之间进行数据转换的示意图
变量定义:
a = S5 模拟量输入模块的输出值
b = S5 CPU的输出值
c = 模拟量输出模块的输出值
d = S7 模拟量输入模块的输出值
e = 转换后输出到 S7 模拟输出模块的值
X = S5 模拟模块的分辨率
Y = S7 模拟模块的分辨率
如果使用分辨率为 2048 的 S5 标准接口,则使用下面的转换因子:
公式 1:转换来自 S7 输入模块的输出值
对于模拟量输出,同样必须在 S5 控制程序中执行转换。缺省情况下,S5模拟量输出 模块分辨率为 1024 。因此,在本文中转换公式为:
公式 2:转换老 S5 程序的输出值
有些 S5 接口不支持 2048/1024 个单位,例如使用 R64 块时。该块使用 16384 的分辨率。通常,下面两个公式适用于模拟数值的转换。
公式 3:转换 S7输入模块的 输出值时的通用公式
公式 4:转换老 S5 程序所用的通用公式
注意
使用 4-20 mA 接口时,不进行格式调整,因为 S7 模块并不会导致 512 个单位转换。
下面的例子清晰的演示了这种转换。
举例
用一个 ET200S 替代 S5 模拟量输入模块 AE460。而且用一个 S7 模块替代一个 S5 模拟量输出模块。在 S5 程序中通过 R64 块评估值。为了能够继续 使用现有程序,在 S5 程序处理模拟量之前,必须对新的输入的值进行转换。
此时不能将模拟数值直接与 R64 块的输入相连。模拟量模块组的数值必须经过一个因子转换(不能通过参数 COM REG 设置该因子),并且必须将其 预先设置为 R64 规定的格式。同样通过 R64 块计算好的输出值,必须通过一个因子对 R64 模拟格式的数值进行转换再将其输出到 S7 模拟量输出模块。
正如前面所述,R64 模块采用 16384 的分辨率(模拟格式)。因此,必须重新计算转换因子。公式 3 和公式 4组合起来应用。
公式 5:使用 R64 块时转换 S7 模块的输出值
公式 6:转换 S5 控制程序的输出值
1. SIWAREX MS称重模块简介
SIWAREX MS称重模块集成在SIMATIC S7-200系统中,主要特征如下:
利用STEP 7 MicroWin版本4.0 SP2及更高版本进行配置;
分辩率高达16位的重量测量或力的测量;
精度0.05 %;
可以在20 ms或33 ms之间选择的快速测量时间;
使用SIWATOOL MS软件,通过RS 232接口很容易地实现校秤;
允许理论校秤;
更换模块后*重新校订,只需重新下载校秤数据即可;
适用于1类防爆区域的本质安全称重传感器电源(SIWAREX IS选项);
诊断功能。
2. 设备及软件列表
该实验中用到的硬件和软件如下:
设备名称 订货号 数量
CPU224 DC/DC/DC 214-1AD21-0XB0 1
SIWAREX MS称重模块 7MH4930-0AA01 1
称重传感器 7MH4103-3AC01 1
PC/PPI 电缆 6ES7 901-3BF20-0XA0 1
或6ES7 901-3DB30-0XA0
SIWATOOL连接电缆(可选) 7MH4 702-8CA 1
屏蔽连接端子 6ES5 728-8MA11 1
软件 说明
STEP7 Micro/Win 4.0 SP2及更高版本
配置软件包 包含Micro/Win程序库、SIWATOOL MS软件及使用手册
3. 添加称重库指令
添加库文件,步骤如下:
选择要添加的两个库文件,如下图所示:
已经添加的两个库文件如下所示:
建议**次使用西门子称重模块的用户到下列网站下载上述库文件和相应例子程序:
http://www..cn/download/DocList.aspx?TypeId=5&CatFirst=36&CatSecond=-1&CatThird=-1
4. 库文件参数说明
4.1 MicroScale_V20参数说明
西门子6ES5095-8MC03
一个SIWAREX MS需要占用PLC200的4个模拟量输入和4个模拟量输出,其地址通过参数“First_AIW、Second_AIW、Third_AIW、Fourth_AIW”及“First_AQW、Second_AQW、Third_AQW、Fourth_AQW”*,该地址可以通过下列方式获取:
从下图可以看出,在该例子程序中称重模块输入和输出的起始地址分别为AIW0和AQW0
FirstVB_Pointer:每个称重模块要占用PLC的V区内的20个字节来存储相关的参数,该区域的始地址由“FirstVB_POINTER”*, 如&VB200,那么重量存储在VW202中,其他字节的含义请参考SIWAREX MS使用手册。
Lib_Error:称重模块的故障代码,它已经包含在上述20字节中,其地址为FirstVB_POINTER+18,如果FirstVB_POINTER为200,则Lib_Error对应地址为VW218
4.2 MicroScale_additional说明
FirstVB:与MicroScale功能块的FirstVB_POINTER地址相同;
DR_Point:在称重模块内部参数以数据记录DR的方式存储,例子程序中已经建立了这些数据记录,如下图所示:
这些数据记录占用V区186个字节,起始地址通过DR_Point*。
Command_Code:命令代码
DR: 要读或写的数据记录的编号,如DR3
Offset:要访问的数据在数据记录中的偏移量
Length:要访问的数据长度,以byte为单位
Command_Trigger:命令触发,与Command_Code配合使用,执行某个命令;
注意: 如果Offset和Length同时为0,则表示对整个数据记录进行操作;
5. 如何设定砝码重量、小数点个数、传感器特征值、量程、重量单位等
以修改标定砝码重量为例进行说明:
(1) 在状态表DR3中找到砝码重量对应的变量VW6,然后写入砝码重量
由于在SIWAREX MS内部,重量通过一个Word进行存储,那么砝码重量与小数点位数有关。称重模块默认显示两位小数,如果砝码50kg,则需要写入5000;如果没有小数点,则输入50即可
这样就把砝码重量50.00kg写入PLC中;
(2)将PLC中的砝码重量通过命令255写入称重模块,DR、Offset和Length分别为3、6和2,如下图所示。Command_Trigger设置为1,命令执行。
(3)通过读数据记录命令254,查看数据是否已经写入称重模块,如下图所示。
此时DR3的VW6已经为5000,即50.00kg
通过SIWATOOL MS软件也可以看到此时已经修改成功。
修改其他参数,如量程,只需要在DR3的VW28中输入量程,如10000,即100.00kg。
MicroScale_additional的Offset和Length改为28和2,其他操作同上。
6. 零点标定
将秤体清空,执行零点标定,重量显示变为0kg
此时重量VW202变为0kg,如下所示
此时在SIWATOOL MS中也可以看到,重量已经变为0kg,如下图所示:
7. 砝码标定
把50kg的砝码放在秤体上,然后执行命令4,如下图所示:
标定后VW202显示砝码重量5000,即50.00kg,如下图所示:
此时在SIWATOOL MS中也可以看到,重量已经变为50.00kg,如下图所示:
标定结束后,通过命令254将DR3中的数据读取上来,如下图所示:
注意:读取整个数据记录的内容时,Offset和Length默认为0,只输入DR即可
1.概述
1.1 S7-1200 的PROFINET 通信口
S7-1200 CPU 本体上集成了一个 PROFINET 通信口,支持以太网和基于 TCP/IP 的通信。使用这个通信口可以实现 S7-1200 CPU 与编程设备的通信,与HMI屏的通信,以及与其它 CPU 之间的通信。这个PROFINET 物理接口是支持10/100Mb/s的 RJ45口,支持电缆交叉自适应,因此一个的或是交叉的以太网线都可以用于这个接口。
1.2 S7-1200支持的协议和大的连接资源
S7-1200 CPU 的PROFINET 通信口支持以下通信协议及服务
? TCP
? ISO on TCP ( RCF 1006 )
? S7 通信 (端)
通信口所支持的大通信连接数
S7-1200 CPU PROFINET 通信口所支持的大通信连接数如下:
? 3个连接用于HMI (屏) 与 CPU 的通信
? 1个连接用于编程设备(PG)与 CPU 的通信
? 8个连接用于Open IE ( TCP, ISO on TCP) 的编程通信,使用T-block 指令来实现
? 3个连接用于S7 通信的端连接,可以实现与S7-200,S7-300以及 S7-400 的以太网S7 通信
S7-1200 CPU可以同时支持以上15个通信连接,这些连接数是固定不变的,不能自定义。
TCP(Transport Connection Protocol)
TCP是由 RFC 793描述的协议,可以在通信对象间建立、的服务连接。如果数据用TCP协议来传输,传输的形式是数据流,没有传输长度及信息帧的起始、结束信息。在以数据流的传输时接收方不知道一 条信息的结束和下一条信息的开始。因此,发送方必须确定信息的结构让接收方能够识别 。在多数情况下TCP应用了IP (Internet protocol) ,也就是“TCP/IP 协议”, 它位于 ISO-OSI 参考模型的*四层。
协议的特点:
? 与硬件绑定的通信协议
? 适合传输中等到大量的数据 (<=8192 bytes)
? 为大多数设备应用提供
– 错误恢复
– 流控制
– 可靠性
? 一个基于连接的协议
? 可以灵活的与支持TCP协议的第三方设备通信
? 具有路由兼容性
? 只可使用静态数据长度
? 有确认机制
? 使用端口号进行应用寻址
? 大多数应用协议,如TELNET、FTP都使用TCP
? 使用 SEND/RECEIVE 编程接口进行数据需要编程来实现
1.3 硬件需求和需求
硬件:
① S7-1200 CPU
② S7-300 CPU + CP343-1(支持S7 Client)
③ PC(带以太网卡)
④ TP以太网电缆
:
① STEP 7 Basic V10.5
② STEP 7 V5.4
2. ISO on TCP 通信
S7-1200 CPU 与S7-300/400 之间通过ISO on TCP 通信,需要在双方都建立连接,连接对象选择“Unspecified”。
所完成的通信任务为:
① S7-1200将DB3里的100个字节发送到S7-300的DB2中
② S7-300将输入数据IB0发送给S7-1200的输出数据区QB0。
2.1 S7-1200 CPU 的组态编程
组态编程与 S7-1200 CPU 之间的通信基本相似 (见 6.3 ),这里简单描述一下步骤:
① 使用STEP 7 Basic V10.5 新建一个项目
在STEP 7 Basic 的“Portal View”中选择 “Create new project”创建一个新项目
② 添加新设备
然后“Project view”,在“Project tree”下双击“Add new device”,在对话框中选择所使用的S7-1200 CPU添加到机架上,命名为 PLC_1。
③ 为 PROFINET 通信口分配以太网地址
在“Device View”中 CPU 上代表PROFINET 通信口的绿色小方块,在下方会出现PROFINET 接口的属性,在 “Ethernet addresses”下分配IP 地址为 192.168.0.1 ,子网掩码为255.255.255.0。
④ 在 S7-1200 CPU 中调用“TSEND_C”通信指令并配置连接参数和块参数
在主程序中调用发送通信指令,“Project tree” > “ PLC_1”>“Program blocks”>“Main”主程序中,从右侧窗口“Instructions”> “Extended Instructions”>“Communications”下调用“TSEND_C”指令,并选择“Single Instance”生成背景 DB块。然后单击指令块下方的“下箭头”,使指令展开显示所有接口参数。
然后,创建并定义发送数据区 DB 块。通过“Project tree”>“ PLC_1”> “Program blocks” >“Add new block” ,选择 “Data block”创建 DB 块,选择寻址,“OK”键,定义发送数据区为 100个字节的数组。
根据所使用的参数创建符号表,如图1所示。
配置连接参数,如图2所示。
配置块接口参数,如图3所示。
图1 创建所使用参数的符号表图PLC tag
图2 配置连接参数
图3 配置 TSEND_C 块参数
⑤ 调用“TRCV”通信指令并配置块参数如图6 47所示。
因为与发送使用的是同一连接,所以使用的是不带连接的发送指令“TRCV”,连接“ID”使用的也是“TSEND_C”中的“Connection ID”号,如图4所示。
图4 配置 T_RCV 块参数
2.2 S7-300 CPU 的ISO on TCP通信的组态编程
① 使用STEP 7 新建一个项目并进行硬件组态
创建完新项目,在项目的窗口下,右键菜单里,选择“Insert New Object”>“SIMATIC 300 Station” ,一个S7-300 站。
为了编程方便,我们使用时钟脉冲通信任务,在CPU的“Properties”>“Cycle/Clock Memory”中设置,如图5所示。
图5 设置时钟脉冲
每一个时钟位都按照不同的周期/在0和1之间切换变化,见表1。
表1:时钟位
位 7 6 5 4 3 2 1 0
周期(S) 2 01. Jun . . . . .
(Hz) 0.5 0.625 1 Jan 25 2 02. Mai 5 10
② 配置以太网模块
“HW Config”中,组态所使用的 CPU 及“CP343-1”模板。并新建以态网 Ethernet (1) ,配置“CP343-1”模板IP 地址为:192.168.0.2,子网掩码为: 255.255.255.0 。如图6所示。配置完硬件组态及属性,编译存盘并下载所有硬件组态。
图6 S7-300 硬件配置
③ 网络组态
打开 “NetPro” 配置网络,选中 CPU,在连接列表里建立新的连接并选择连接对象和通信协议,如图7所示。
图7 创建新的连接并选择 ISO-on-TCP 协议
这时会跳出通用信息,如图8所示。
图8 通用信息
然后,“Addresses”配置通信双方的IP 地址及TSAP 地址,如图9所示。
图9 配置通信的IP 地址及TSAP 地址
配置完连接并编译存盘后,将网络组态下载到CPU300中。
④ 编程
在OB1中,从“Libraries”>“SIMATIC_NET_CP”>“CP300”下,调用FC5(AG_SEND)、FC6(AG_RECV)通信指令。创建接收数据区为 DB2,定义成100个字节的数组。
CALL “ AG_RECV” //调用FC6
ID :=1 // 连接号,要与连接配置列表中一致,见图8
LADDR :=W#16#100 //CP的地址,要与配置中一致,见图8
RECV :=P#DB2.DBX 0.0 BYTE 100 //接收数据区
NDR :=M10.0 //为1时,接收到新数据
ERROR :=M10.1 //为1时,有故障发生
STATUS :=MW12 //状态代码
LEN :=MW14 //接收到的实际数据长度
CALL “AG_SEND” //调用FC5
ACT :=M0.2 //为1时,发送任务
ID :=1 // 连接号,要与连接配置中一致
LADDR :=W#16#100 //CP的地址,要与配置中一致
SEND :=IB0 //发送数据区
LEN :=1 //发送数据的长度
DONE :=M10.2 //为1时,发送完成
ERROR :=M10.3 //为1时,有故障发生
STATUS :=MW16 //状态代码
2.3 监控通信结果
下载S7-1200和S7-300中的所有组态及程序,监控通信结果,如图10、图11所示。
在S7-1200 CPU中向DB3中写入数据:“11”、“22”、“33”,则在S7-300中的DB2块收到数据也为“11”、“22”、“33”。
在S7-300 CPU中,将“2#1111_1111”写入IB0,则在S7-1200 CPU中QB0中收到的数据也为“2#1111_1111”。
图10 S7-1200监控表
图11 S7-300 变量表
3. TCP 通信
使用TCP 协议通信,除了连接参数的定义不同,通信双方的其它组态及编程与前面的ISO on TCP 协议通信完全相同。
S7-1200 CPU中,使用 TCP 协议与S7-300通信时,PLC_1的连接参数,如图12所示。通信伙伴 S7-300 的连接参数,如图13所示。
图12 S7-1200 的TCP连接参数的配置
图13 S7-300 的TCP连接参数的配置
5,【山东】:17地级市——济南、青岛、淄博、枣庄、东营、烟台、潍坊、济宁、泰安、、日照、莱芜、临沂、德州、聊城、菏泽、滨州
28县级市——章丘、胶南、胶州、平度、莱西、即墨、滕州、龙口、莱阳、莱州、招远、蓬莱、栖霞、海阳、青州、诸城、安丘、高密、昌邑、兖州、曲阜、邹城、乳山、文登、荣成、乐陵、临清、禹城
6,【江苏】:13地级市——南京、镇江、常州、无锡、苏州、徐州、连云港、淮安、盐城、扬州、泰州、南通、宿迁
27县级市——江阴市、宜兴市、市、新沂市、金坛市、溧阳市、常熟市、张家港市、太仓市、昆山市、吴江市、如皋市、通州市、海门市、启东市、东台市、大丰市、高邮市、江都市、仪征市、丹阳市、扬中市、句容市、泰兴市、姜堰市、靖江市、兴化市
7,【安徽】:17地级市——合肥、蚌埠、芜湖、淮南、亳州、阜阳、淮北、宿州、滁州、安庆、巢湖、马鞍山、宣城、黄山、池州、铜陵
5县级市——界首、天长、明光、桐城、宁国
8,【浙江】:11地级市——杭州、嘉兴、湖州、宁波、金华、温州、丽水、绍兴、衢州、舟山、台州
22县级市——建德市、富阳市、临安市、余姚市、慈溪市、奉化市、瑞安市、乐清市、海宁市、平湖市、桐乡市、诸暨市、上虞市、嵊州市、兰溪市、义乌市、东阳市、永康市、江山市、临海市、温岭市、龙泉市
9,【福建】:9地级市——福州、厦门、泉州、三明、南平、漳州、莆田、宁德、龙岩
14县级市——福清市、长乐市、永安市、石狮市、晋江市、南安市、龙海市、邵武市、武夷山、建瓯市、建阳市、漳平市、福安市、福鼎市
10,【广东】:21地级市——广州、深圳、汕头、惠州、珠海、揭阳、佛山、河源、阳江、茂名、湛江、梅州、肇庆、韶关、潮州、东莞、中山、清远、江门、、云浮
22县级市——城市、从化市、乐昌市、南雄市、台山市、开平市、鹤山市、恩平市、廉江市、雷州市 吴川市、高州市、化州市、高要市、四会市、兴宁市、陆丰市、阳春市、英德市、连州市、普宁市、市
11,【海南】:2地级市——海口、三亚
6县级市——琼海、文昌、万宁、五指山、儋州、东方
12,【云南】:8地级市——昆明、曲靖、玉溪、保山、昭通、丽江、普洱、临沧
9县级市——安宁市、宣威市、个旧市、开远市、景洪市、楚雄市、大理市、潞西市、瑞丽市
13,【贵州】:4地级市——贵阳、六盘水、遵义、安顺
9县级市——清镇市、赤水市、仁怀市、铜仁市、毕节市、兴义市、凯里市、都匀市、福泉市
14,【四川】:18地级市——成都、绵阳、德阳、广元、自贡、攀枝花、乐山、南充、内江、遂宁、广安、泸州、达州、眉山、宜宾、雅安、资阳
14县级市——都江堰市、彭州市、邛崃市、崇州市、广汉市、什邡市、绵竹市、江油市、峨眉山市、阆中市、华蓥市、万源市、简阳市、西昌市
15,【湖南】:13地级市——长沙、株洲、湘潭、衡阳、岳阳、郴州、永州、邵阳、怀化、常德、益阳、张家界、娄底
16县级市——浏阳市、醴陵市、湘乡市、韶山市、耒阳市、常宁市、武冈市、临湘市、汨罗市、津市市、沅江市、资兴市、洪江市、冷水江市、涟源市、吉首市
16,【湖北】:12地级市——武汉、襄樊、宜昌、黄石、鄂州、随州、荆州、荆门、十堰、孝感、黄冈、咸宁
24县级市——大冶市、丹江口市、洪湖市、石首市、松滋市、宜都市、当阳市、枝江市、老河口市、枣阳市、宜城市、钟祥市、应城市、安陆市、汉川市、麻城市、武穴市、赤壁市、广水市、仙桃市、天门市、潜江市、恩施市、利川市
17,【河南】:17地级市——郑州、洛阳、开封、漯河、安阳、新乡、周口、三门峡、焦作、平顶山、信阳、南阳、鹤壁、濮阳、许昌、商丘、驻马店
21县级市——巩义市、新郑市、新密市、登封市、荥阳市、偃师市、汝州市、舞钢市、林州市、卫辉市、辉县市、沁阳市、孟州市、禹州市、长葛市、义马市、灵宝市、邓州市、永城市、项城市、济源市
18,【山西】:11地级市——太原、大同、忻州、阳泉、长治、晋城、朔州、晋中、运城、临汾、吕梁
11县级市——古交、潞城、高平、介休、永济、河津、原平、侯马、霍州、孝义、汾阳
19,【陕西】:10地级市——西安、咸阳、铜川、延安、宝鸡、渭南、汉中、安康、商洛、榆林
3县级市——兴平市、韩城市、华阴市
20,【甘肃】:12地级市——兰州、天水、平凉、酒泉、嘉峪关、金昌、白银、武威、张掖、庆阳、定西、陇南
4县级市——玉门市、敦煌市、临夏市、合作市
21,【青海】:1地级市——西宁
2县级市——格尔木、德令哈
22,【江西】:11地级市——南昌、九江、赣州、吉安、鹰潭、上饶、萍乡、景德镇、新余、宜春、抚州