交易方式:
德邦代收:通过物流,快递第三方交易,安全快速!淘 宝咸鱼:通过网上交易,安全便捷!货到付款:10多年专业信誉担保,省心省事!特大金额 我们上门取货,现金收货。 同城当面交易。
以客户为中心, 坚持 长久 服务 满意 。 专业回收 专注西门子!
siemens 可编程控制器
1、 simatic s7 系列plc、s7200、s71200、s7300、s7400、et200
2、 逻辑控制模块 logo!230rc、230rco、230rcl、24rc、24rcl等
3、 sitop 系列直流电源 24v dc1.3a、2.5a、3a、5a、10a、20a、40a
4、hmi 触摸屏td200 td400ctp177,mp277 mp377
siemens 交、直流传动装置
1、 交流变频器 micromaster系列:mm、mm420、mm430、mm440、eco
midaster系列:mdv
6se70系列(fc、vc、sc)
2、全数字直流调速装置 6ra23、6ra24、6ra28、6ra70 系列
siemens 数控 伺服
1、840d、802s/c、802sl、828d 801d :6fc5210,6fc6247,6fc5357,6fc5211,6fc5200,6fc5510,
2、伺服驱动: 6sn1123,6sn1145,6sn1146,6sn1118,6sn1110,6sn1124,6sn1125,6sn1128
着眼未来 致力于oem用户的开发
哪里回收西门子,哪里回收西门子plc,哪里回收西门子模块,哪里回收西门子cpu模块,哪里回收西门子控制器模块,哪里回收西门子do模块
西门子电线电缆,西门子网卡,西门子接头,西门子维修等
s7-200做主站s7-300 cp341做从站的modbus rtu通讯1. 概述
在现场应用中,很多仪表和设备仅支持modbus rtu的通讯协议,第三方仪表可以做modbus主站或从站,西门子的通讯模块cp341 / cp441-2 通过dongle(硬件狗)可以扩展该协议,s7-200 集成的口可以支持自由口通讯,通过指令库也可以方便的实现modbus rtu通讯。本文以s7-200作为modbus 主站,cp341作为modbus 从站,实现modbus rtu通讯,阐述两者在通讯方面的设置和注意事项。
2. 软件环境
2.1 step7 v5.4 sp4
用于编写 s7-300/400程序,此软件需要从西门子购买,本文档中的300的程序是使用step7 v5.4 sp4的软件编写。
2.2 cp ptp param v5.1 sp11
串行通讯模板的驱动程序,安装此驱动后才能对ptp模板进行参数配置,并在step7中集成通讯编程需要使用的功能块。此驱动随购买模板一起提供,也可以从以下的链接下载:
2.3 cp ptp modbus sle v3.1 sp7
cp341或cp441-2用于modbus从站时,需要安装此驱动协议,但安装之前必须先安装ptp driver,此驱动可以在购买modbus dongle时选择购买,也可以从以下的链接下载
2.4 step7 micro/win v4.0 sp6
用于s7-200编程的软件,本文档中的200的程序是使用step7 micro/win 的软件编写。此软件可以从西门子下载中心免费下载,也可以从以下的链接下载。
自动化系统>>s7-200>>软件,文档编号s0002。
2.5 toolbox_v32-step 7-micro win 32 instruction library
s7-200实现modbus rtu功能,可以使用modbus的指令库,要使用西门子的标准指令库,必须先安装指令库的软件包 instruction library,安装后,可以在step 7-micro/win软件的库中找到modbus相关的指令,该软件包可以从以下的链接下载。自动化系统>>s7-200>>软件,文档编号s0010。
3. 硬件列表和接线
3.1 硬件列表
s7-300从站 cpu315-2dp 6es7 315-2ag10-0ab0
cp341 rs422/485 6es7 341-1ch01-0ae0
dongle 6es7 870-1ab01-0ya0
pc 适配器(usb) 6es7 972-0cb20-0xa0
s7-200主站 cpu 224xp 6es7 214-2bd23-0xb0
表1 硬件设备
3.2 硬件接线
3.2.1 接口定义
s7-200的通讯口为rs485物理口(9针口),cp341是rs422/485的接口类型(15针口),两种设备的接口引脚的示意图如下所示,更详细的信息可以参考cp341及s7-200通信接口的手册。
图1 s7-200 cpu通信口引脚定义
图2 s7-300 cp341 rs422/485 通讯口引脚定义
3.2.2 接线示意图
图3 硬件结构和接线示意图
4. 组态设置和编程
4.1 s7-200做modbus主站的设置
s7-200 cpu上的通信口在电气上是标准的rs-485半双工串行通信口,此串行字符通信的格式:1个起始位;7/8位数据位;1位奇/偶/无校验;1停止位。通信波特率可以设置为1200、2400、4800、9600、19200、38400、57600或112500,符合这些格式的串行通讯设备可以和s7-200进行自由口通讯,modbus rtu指令库就是使用自由口编程实现的。
4.1.1 modbus rtu主站库
使用modbus 主站指令库时需要注意的几点:
需要s7-200的编程软件是 micro/win v4.0 sp5及以上版本;modbus rtu 主站库对cpu的版本有要求,cpu 的版本必须为 2.00 或者 2.01(即订货号为 6es721*-***23-0ba*);modbus主站可读/写的最大数据量为120个字(指每一个 mbus_msg 指令);modbus 主站库支持port0和port1(从站库只支持port0口),本例中用port0;使用modbus 库时必须对库存储区进行分配,见下图设置,而且分配的空间不能和程序中其它空间冲突,否则编译调用会报错。
图4 库存储区设置
modbus主站库支持的功能码和地址对应关系:
modbus 地址 读 / 写 modbus 从站须支持的功能
00001~09999 读 功能1:读输出点
数字量输出 写 功能5:写单个输出点
功能15:写多个输出点
10001~19999 读 功能2:读输入点
数字量输入
30001~39999 读 功能4:读输入寄存器
输入寄存器
40001~49999 读 功能3:读保持寄存器
保持寄存器 写 功能6:写单个寄存器
功能16:写多个寄存器
表2需要从站支持的功能
4.1.2 s7-200 modbus主站编程
编程时,使用sm0.0调用mbus_ctrl完成主站的参数初始化,详细见下表,参数的说明也可以从子程序的局部变量表中找到。
图5 modbus rtu 主站初始化
图中各参数含义如下
编号 符号/含义 说 明
a en / 使能 必须保证每一扫描周期都被使能(使用sm0.0)。
b mode / 模式 为1时使能为modbus协议;为0时恢复为ppi协议。
c baud / 波特率 支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200。
d parity / 校验 校验方式选择:0=无校验;1=奇校验,2=偶校验。
e timeout / 超时 主站等待从站响应的时间,以毫秒为单位,典型的设置值为 1000毫秒,允许设置的范围为1-32767。这个值必须设置足够大以保证从站有时间响应。
f done / 完成位 初始化完成,此位会自动置1。
g error / 错误位 初始化错误代码。
表3
调用 modbus rtu 主站读写子程序mbus_msg,发送一个modbus 请求。
图6 调用modbus rtu 主站读写子程序
图中各参数含义如下
编号 符号/含义 说 明
a en / 使能 同一时刻只能有一个读写功能使能。
b first / 读写请求位 每一个新的读写请求必须使用脉冲触发。
c sle / 从站地址 可选择的范围1–247。
d rw / 读写操作位 0=读, 1=写。
e addr / 读写从站的数据地址 选择读写的数据类型:
00001 至 0xxxx - 开关量输出
10001 至 1xxxx - 开关量输入
30001 至 3xxxx - 模拟量输入
40001 至 4xxxx - 保持寄存器。
f count / 数据的个数 通讯的数据个数(位或字的个数)。
g daptptr / 数据指针 如果是读指令,读回的数据放到这个数据区中;
如果是写指令,要写出的数据放到这个数据区中。
h done / 完成位 读写功能完成位。
i error / 错误代码 只有在done位为1时,错误代码才有效。
表4
从上图中可见,s7-200作为modbus rtu主站,波特率9.6kb/s,偶校验,连接从站的站地址是3,数据存储区为vb2000开始的区域。
4.2 cp341 做modbus 从站的硬件组态
4.2.1 硬件组态
图7 s7-300侧硬件组态
4.2.2 设置modbus参数
图8 消息桢字符结构
按照上述操作设置参数,从上图可以看出,本例中的传输波特率9.6kb/s,1位起始位,8位数据位,偶校验位,1位停止位,从站站地址是3,主从通讯设备的字符帧格式和波特率等参数设置需要一致。
图9 rs422/485 接口组态
rs422/485接口只能一个有效,接口的选择只需要组态而不需要在硬件上短接。
图10 dongle时,需要cpu停机
图11 从站驱动后结果
4.2.4 cp341做modbus从站的编程
从step7 软件下的example目录中,找到项目名“zxx21_05_ptp_com_modsl”的项目,打开,然后将modbus通讯模块fb80传递到用户项目中,打开路径如下所示。
图12 modbus sle 例程打开路径
ob1中调用fb80编程如下:
图13 fb80程序块调用
cp卡初始化正常后,cp_start,cp_start_fm和cp_start_ok为1信号,否则cp_start_error为1,同时可以从error_nr察看错误信息,也可以在硬件组态中在线后的cp341的诊断缓冲区察看详细的错误信息,错误信息对照和处理方式可以参考
《s7-300以用于ptp cp modbus 协议rtu格式s7的可装载驱动程序为从站》的手册。
fb80的各参数含义如下
laddr 硬件组态中cp341的起始逻辑地址,本例中为256
start_timer 初始化超时定时器,本例中为t120
start_time 初始化定时器时间,本例中为5s
ob_mask i/o访问错误屏蔽位,本例中为true(i/o访问错误已屏蔽)
cp_start fb初始化使能位,本例中为m0.0
cp_start_fm cp_start 初始化的上升沿位,本例中为m0.1
cp_ndr 从cp卡写操作位,本例中为m0.2
cp_start_ok 初始化完成且无错误,本例中为m0.3
cp_start_error 初始化完成,但有错误,本例中为m0.4
error_nr 错误号,本例中为mw2
error_info 错误信息,本例中为mw4
表5
5. 通讯测试
modbus rtu格式通信协议是以主从的方式进行数据传输的,在传输的过程中主站是主动方,即主站发送数据请求报文到从站,从站返回响应报文。modbus 系统间的数据交换是通过功能码来控制的,以下对现场常用的功能码进行分类测试,关于功能码的详细信息请参考手册。
5.1 fc01/05/15功能码
cp341从站的通讯区域配置
图14 fc01/05/15 参数组态界面
fc01、fc05、fc15对应的数据区为位输出,数据的传递以位为单位,可以读写操作,用户地址区为0xxxx,modbus地址在信息传递中从0开始。如上图,左边为信息传递地址(地址区不能冲突),右边对应的是s7-300的数据区。例如左边信息传递地址从0 ~ 7对应用户地址区为00001 ~ 00008,对应s7-300的m10.0 ~ m10.7,并且以此为例说明fc01功能码的通讯。
s7-200主站程序调用
图15 功能码fc01使用
s7-200主站,用功能码fc01读取从站8点数字量输出,接收的数据存放在vb2000开始的区域,测试截图结果如下。
图16 fc01功能码数据交换
5.2 fc02功能码
cp341从站的通讯区域配置
图17 fc02 参数组态界面
fc02对应的数据区为位输出,数据的传递以位为单位,只读操作,用户地址区为1xxxx,modbus地址在信息传递中从0开始,如上图,左边为信息传递地址(地址区不能冲突),右边对应的是s7-300的数据区。例如左边信息传递地址从0 ~ 7对应用户地址区为10001 ~ 10008,对应s7-300的m20.0 ~ m20.7,并且以此为例说明fc02功能码的通讯。
s7-200主站程序调用
图18 功能码fc02使用
s7-200主站,用功能码fc02读取从站8点数字量输入,接收的数据存放在vb2000开始的区域,测试截图结果如下。
图19 fc02功能码数据交换
5.3 fc03/06/16 功能码
cp341从站的通讯区域配置
图20 fc03/06/16参数组态界面
fc03/06/16 对应的数据区为寄存器,数据的传递以字为单位,可以读写操作,用户地址区为4xxxx,modbus地址在信息传递中从0开始。如上图,左边为信息传递地址,右边对应的是s7-300的数据区,左边传输地址不可改,右边只对应一个数据区。例如用户地址
区为40001 ~ 40004,对应s7-300数据区为db1.dbw0 ~ db1.dbw6,并且以此为例说明
fc03功能码的通讯。
s7-200主站程序调用
图21功能码fc03使用
s7-200主站,用功能码fc03读取从站4个字寄存器,接收的数据存放在vb2000开始的区域,测试截图结果如下。
图22 fc03功能码数据交换
5.4 fc04 功能码
cp341从站的通讯区域配置
图23 fc04参数组态界面
fc04对应的数据区为寄存器输入,数据的传递也以字为单位,只读操作,用户地址区3xxxx,modbus地址在信息传送中从0开始。如上图,左边为信息传递地址,右边对应的是s7-300的数据区,左边传输地址不可改,右边只对应一个数据区。例如用户地址区为30001 ~ 30004,对应s7-300数据区为db1.dbw0 ~ db1.dbw6,并且以此为例说明fc04功能码的通讯。
s7-200主站程序调用
图24功能码fc04使用
s7-200主站,用功能码fc04读取从站4个字输入寄存器,接收的数据存放在vb2000开始的区域,测试截图结果如下。
图25 fc04功能码数据交换
5.5 limits 栏
图26 limits 参数组态界面
对于写功能码fc05、06、15、16,可以禁用或限制访问相关s7-300存储区,即使用这些功能码时,s7-300存储区需要在设定的最小和最大的范围之间,如果访问的区域超出这个范围,则访问会被拒绝,同时输出报错误信息。
6. 总结
本文档以s7-200为主站和cp341为从站简单介绍了modbus rtu通讯,关于通讯的组态设置,编程以及常用功能码的使用,其具体的使用可以作为西门子串行通讯模块与第三方的仪表、设备等进行串行通信的参考
门子s7-200 plc接绝对型编码器问题推荐文档: 西门子工程师推荐本文档!
文档
涉及产品
问题1:s7-200 plc可以连接绝对型编码器吗?
解答:s7-200 plc可以连接绝对型编码器,但应注意以下几点:
(1)s7-200 plc可连接并行输出的绝对型编码器。串行输出、总线型输出、变送一体型输出等绝对型编码器需plc具有相应的接口或组态能力,不能与西门子s7-200 plc 直接连接。
(2)接入s7-200 plc 的绝对型编码器信号输出是格雷码。如是纯二进制码,在数据刷新时可能有多位变化,读数会在短时间里造成错码。
(3)绝对型编码器在每圈的每个位置都有编码,由于 plc数据更新受程序扫描周期的影响,因此经plc读取并换算后的编码器位置值相对于编码器当前位置值存在一定的误差。
(4)对绝对型编码器进行接线时,必须确保其与plc输入点连接好。如有个别连接不良点,该点电位始终是0,将会造成错码而无法判断。
问题2:s7-200 plc与绝对型编码器怎样接线?
解答:并行输出的绝对型编码器输出有多少位就要占用plc的多少位接点,以s7-200 plc cpu224 为例,如使用12位输出的单圈绝对型编码器(pnp集电极开路输出) ,需要占用cpu224的12位输入点。绝对型编码器的12位信号输出线l0—l11依次接入cpu224 的i0.0—i0.7,i1.0—i1.3。如图1所示:
图1 cpu224输入端与绝对型编码器接线图
问题3:怎样处理格雷码码值?
解答:西门子s7-200 plc的寄存器中地址越高,字节位越低。如在输入寄存器中iw0 的
ib0 是高字节,ib1是低字节,因此必须将iw0 中的格雷码值左循环8 次,将高、低位字节调换一次位置得到正确排序的格雷码值存入vw0中。如图2所示:
图2 字循环左移8次
而且,由于接入12位输出的单圈绝对型编码器,需屏蔽掉iw0字内的i1.4—i1.7,将需要的格雷码数据存入vw2中。如图3所示:
图3 逻辑与运算
在实际应用中,为了计算编码器转过的角度或位置,需使用格雷码指令gray_bin_w功能块将格雷码解码为字类型的标准二进制码,对应放到vw4中。如图4所示:
全国回收(siemens)西门子触摸屏