S7-224XP与FC302做Modbus通讯例子
西门子S7-200Modbus通信与变频器通信实例
西门子S7-200通过自由口需要控制英威腾变频器的正负转停止和故障复位,运行频率控制以及分二次读取运行速度等12条变频器信息。
程序略微变动适应所有Modbus RTU需要控制。
下面是程序,可以直接导入程序后写入PLC试验ORGANIZATION_BLOCK 主程序:OB1TITLE=BEGINNetwork 1// 主程序,初始化并查执各变频器指令// 一.功能介绍// 该程序专为英威腾CHF系列变频器编写。
英威腾CHF系列变频器内置国际标准的MODBUS通信协议。
程序运行时,变频器作为MODBUS协议从站接收来自CPU224 PLC的通信指令,实现起停、频率给定、监控等功能。
// CHF系列矢量变频器在与CPU224通信前须做好以下准备工作:// 1.确认己安装好CHF系列变频器的通讯卡,并将卡上的端口跳线置于RS485端;// 2.用一根带9针阳性插头的串口通信电缆连接在CPU224 PLC的自由通信口端,电缆另一端的第5、3、8线分别接在CHF变频器RS485通讯卡的GND、485+、485一端子上,其余线屏蔽不用;// 3.预先设置变频器以下参数:// PC.00=1 //变频器通讯地址为1// PC.01=3 //通讯波特率9.6K// PC.02=1 //通讯数据偶校验8位数据位1位停止位// P0.03=2 //变频器的运行指令采用通讯方式// P3.01=7 //变频器的A频率设定采用通讯方式(注意P3.04/P3.05对P3.01通讯频率的影响)// 二.程式结构说明// 该程序由1个主程序3个子程序及2个中断程序组成。
子程序里包含了变频器的起停、复位、查询功能指令,由主程序调用。
中断程序为发送及接收指令提供中断支持。
// main //主程式,初始化并查执各变频器指令// sbr0 //CRC校验子程序// sbr1 //通讯端口初始化子程序// sbr2 //发送变频器写入06/读取03指令,共8个字节// intO //接收完成中断程序// int1 //发送完成中断程序LD SM0.1CALL SBR1 //调用初始化子程序,使能PORT0自由口模式Network 2// 接收完成后延时10mS M4.4接通,运行下一次发送数据LDN M4.0AN M4.1TON T35, 1 // 通讯完成后延时10mS M4.4=1,允许下一次通讯,A T35= M4.4 //主要是为了Modbus RTU二次通讯中间3.5字符间隔时间Network 3// 如果发送或接收超时,延时0.2秒复位M4.0/M4.1,这里暂时设置5秒是为了方便调试LD M4.0O M4.1TON T199, 50A T199R M4.0, 2 //发送或接收超过0.2秒没有完成,复位发送/接收Network 4 // 调用Modbus06写入指令,通讯成功,这里暂时不用,可以作打手频率设定,不知道是否支持广播写入,广播写入主要是变频器故障复位和三个打手频率设定.给棉变频器如果需要用PID控制没有必要用PLC的PID// 当VW110≠VW300时把VW110写入变频器,VW110范围(+10000~-10000)÷10000×50Hz// 地址为变频器地址;字节为发送的字节数量=8个字节;指令=03为读取指令,06为写入指令;数据地址=2000H 为英威腾变频器设置频率的地址;数据内容为写入2000H的内容,范围+10000~0~-10000// 运行命令权限最高,如果运行命令没有完成,程序将会一直执行下去,直到运行命令完成LDN M8.1 //没有发送运行命令,当运行命令发送过程中不能够发送频率写通讯AW<> VW300, VW110 //发送的数据VW110与通讯完成返回的数据不等A M4.4 //允许发送S M8.0, 1 //发送为写运行速度命令,为了接收信息时保存到VW300用CALL SBR3, 1, 8, 6, 16#2000, VW110 //把VW110数据写入到变频器地址1的2000H寄存器Network 5// 控制变频器正负转停止和故障复位同时有几个输入时执行最后的指令LD SM0.0LPSA I5.1 //运行命令MOVW 1, VW304LRDA I5.3 //反转命令MOVW 2, VW304LRDA I5.2 //停车命令MOVW 5, VW304LPPA I5.4 //故障复位命令MOVW 7, VW304Network 6 // 设定英威腾变频器1000H通信控制命令,来控制变频器正负转和停止等操作命令// 控制变频器运转英威腾变频器地址1000H 01正转运行02反转运行03正转点动04反转点动05停车06自由停车07故障复位08点动停车LDW<> VW304, VW302 //运行命令VW304与接收的返回信息比较,不相等将一直发送下去A M4.4S M8.1, 1 //为了把返回信息的保存到VW302寄存器CALL SBR3, 1, 8, 6, 16#1000, VW304 //把命令内容VW304写入到英威腾变频器的1000H地址Network 7 // 调用Modbus读取,不要读取范围以外的内容,不然会报错误// 读取变频器状态3000H 运行速度3001H 设定速度3002H 母线电压3003H 输出电压3004H 输出电流3005H运转速度// 当有其他重要的读写命令时该通讯暂停// 分2次读取英威腾变频器3000H~3005H 3008H~3013H信息,本来英威腾变频器说明书说可以连续读取16条信息,不过我读取16条信息返回数据没有CRC校验内容,不知为何,本来是试验程序,有时需要连续读取多条信息,就试验读取2次12条信息LDN M8.0AN M8.1 //程序没有发送写频率和运行命令时才能够读取变频器数据A M4.4LPS //调用查询变频器INCB VB270 //启动T37延时断开计时器A V270.0S M8.2, 1MOVW 16#3000, VW272 //读取3000H开头的连续6条信息LRDAN V270.0S M8.3, 1MOVW 16#3008, VW272 //读取3008H开头的连续6条信息LPPCALL SBR3, 1, 8, 16#03, VW272, 6END_ORGANIZATION_BLOCKSUBROUTINE_BLOCK 初始化:SBR1TITLE=通讯端口初始化子程序// 该程序在PLC的第一个扫描周期运行,主要是设置CPU224自由端口的通信格式、数据接收格式及复位各寄存区(参见西门子S7-200编程手册)。
两个PLC之间的Modbus通讯经典案例
如何用 S7-200 实现 Modbus 通信说明:用下面的例程你可以在 S7-200 CPU 之间建立一个简单的 Modbus 主-从通讯。
这个例子是关于 Modbus 功能码 6 的(写从站保持寄存器),也可以作为其他所支持的功能码的基本参数设置步骤:1, 2, 3, 4, 5, 15 和16 。
要求:要使用 Modbus 协议必须先获得并在 STEP 7 Micro/Win 中安装指令库 (条目17470979)。
Modbus 主站协议只被 STEP 7 Micro/Win V4.0 SP5 及其以上版本支持。
1. 硬件设置例程中的 Modbus 通讯是在两个 S7-200 CPU 的 0 号通讯口间进行的(最好每个 CPU 都有两个通讯口)。
在主站侧也可以用相应库文件 "MBUS_CTRL_P1" 和"MBUS_MSG_P1"通过1号通讯口通信。
通讯口 1 用 Micro/WIN 与 PG 或 PC 建立连接,两个 CPU 的通讯口 0 通过 Profibus 缆进行连接(电缆的针脚连接为3,3,8,8 -> 见图 01)。
另外,需要确定逻辑地M相连。
图012. 参数匹配对于 MODBUS 通讯,主站侧需要程序库 "MBUS_CTRL" 和 "MBUS_MSG",从站侧需要程序库 "MBUS_INIT" 和 "MBUS_SLAVE"。
在 Micro/WIN 中您需要为主站和从站新建一个项目,程序与参数设置见图02。
必须要保证主站与从站的“Baud”和“Parity” 的参数设置要一致,并且程序块 "MBUS_MSG" 中的 "Slave" 地址要与程序块 "MBUS_INIT" 中的 "Addr" 所设置的一致 (见图02)。
(完整word版)西门子s7-200与新华DCS的Modbus通讯
多套西门子S7—200 PLC与新华DCS的Modbus通讯以金川项目为例一、硬件组成:1)西门子S7-200PLC 2套2)两芯屏蔽线 2条3)网线(T568B标准) 1根4)NPORT(串口服务器) (以5230I为例) 1个5)工业交换机 1个6)新华DCS系统 1套二、硬件连接1)硬件接线:如图2:PLC与NPORT之间的电缆(双芯屏蔽电缆)接法:1、PLC处接串口0,红色线接3端,蓝色线接8端,标准的RS485接法;2、NPORT处接port1,红色线接R+/D+,蓝色线接R—/D—,PLC1接NPORT的PORT1口,PLC2接PORT2口。
所有绿色线代表网线,按T568B接法,如图1所示。
图1 T568B线序1#交换机PLC1PLC2新华DCS 工程师站PORT2PORT1图2 硬件连接图2)硬件测试测试网线:拔掉NPORT 到1#交换机的交换机端网线,用电脑对NPORT 的IP 进行设置(NPORT5230I 的初始IP 为:192.168.127。
254),将其IP 设置为与C 网在同一子网内(如222.222。
221。
88,具体方法见NPOT 的设置).三、 NPORT 配置在工程师站安装NPORT 5230I 驱动程序“NPort Administration Suite ”.安装完毕后在开始菜单中选择程序,然后再选择刚安装好的NPort Administration Suite NPort Administrator 。
打开后选择Search (自动查找在网络内的Nport ),或点Search IP 输入NPORT 的IP 进行搜索如果通讯正常,那么将显示如下界面配置Nport 5230I设置NPORT 的端口通信方式,本例为com4和com5口端口参数为:9600,偶校验,8位数据位,1位停止位,RTS/CTS,Enable,RS485 2wire.操作模式一定要设置为Real COM Mode,设置好时区,其他参数可以不用设置。
西门子做modbus从站与MODSCAN通讯
西门子200做modbus从站与MODSCAN32通讯一.准备工作:1.西门子200编程软件: STEP 7 MicroWIN SP92.西门子200PLC一个:CPU224XP3.编程电缆一条:USB-PPI4.串口软件:二.modbus通讯概念:西门子S7200做Modbus从站需要使用MBUS_INIT、MBUS_SLAVE即可。
MBUS_INIT指令被用于启用和初始化或禁止Modbus通讯。
在使用MBUS_SLAVE指令之前,必须正确执行MBUS_INIT指令。
指令完成后立即设定"完成"位,才能继续执行下一条指令。
在每次扫描且EN输入打开时执行该指令。
应当在每次通讯状态改变时执行MBUS_INIT指令。
因此,EN输入应当通过一个边缘检测元素用脉冲打开,或者仅在首次扫描时执行。
"模式"输入数值选择通讯协议:输入数值1将端口0指定给Modbus协议并启用协议;将输入数值0指定给PPI,并禁用Modbus协议。
"波特"参数将波特率设为1200、2400、4800、9600、19200、38400、57600或115200。
"地址"参数将地址设为1和247之间(包括1和247)的数值。
"校验"参数被设为与Modbus主设备校验相匹配。
可接受的数值为:*0-无校验*1-奇数校验*2-偶数校验"时延"参数通过将指定的毫秒数增加至标准Modbus信息超时的方法延长标准Modbus信息结束超时条件。
该参数的典型数值在有线网络上应为0。
如果您在使用带有纠错功能的调制解调器,将时延设为50至100毫秒的数值。
如果您在使用扩展频谱无线电,将时延设为10至100毫秒的数值。
"时延"数值可以是0至32767毫秒。
MaxIQ参数将供Modbus地址00xxxx和01xxxx使用的I和Q点数设为0至128之间的数值。
超实用,非常典型的Modbus通讯项目案例,十分钟学会
超实用,非常典型的Modbus通讯项目案例,十分钟学会本文主要介绍两部分,1.简单介绍Modbus通讯相关知识。
2.通讯案例详解。
一.Modbus通讯介绍1.通讯概述Modbus具有两种串行传输模式:分别为ASCII和RTU。
Modbus是一种单主站的主从通信模式,Modbus网络上只能有一个主站存在,主站在Modbus网络上没有地址,每个从站必须有唯一的地址,从站的地址范围为0 - 247,其中0为广播地址,从站的实际地址范围为1 - 247。
Modbus RTU 使用主/从站网络,其中整个通信仅由一个主站设备触发,而从站只能响应主站的请求。
主站将请求发送到一个从站地址,并且只有该地址上的从站做出响应。
Modbus RTU是用于网络中通信的标准协议,使用RS232 或RS422/485 连接在网络中的 Modbus 设备之间进行串行数据传输。
l 注: Modbus 从站地址为 0 时会向所有从站发送广播帧(从站均不响应)。
2.Modbus 通讯协议Modbus的通讯协议可在网上查阅相关详细资料,这里简单说明:数据传送帧结构顺序是,主站和从站/从站和主站之间的数据通信从从站地址开始,接下来是功能代码。
随后传输数据。
数据字段的结构取决于使用的功能代码。
帧的最后传送的是校验和 (CRC)。
二.通讯案例详解案例背景:一套以西门子S7_1200PLC作为控制器的控制系统(带HMI面板),与一套加湿器控制系统(单片机)进行Modbus RTU通讯,读取和写入加湿器数据,并通过控制面板进行显示和设置加湿器参数,以及通过HMI面板手动控制加湿机的充水、排水、加湿和停机。
(与除湿机的通讯只是该项目中的一部分,这里只介绍与加湿机的通讯部分,其他控制部分未说明)加湿器的参数如下图l 注:PLC的控制系统作为主站,加湿器控制系统为从站1. 硬件及软件需求硬件:CPU 1215C AC/DC/Rly(订货号:6ES7 215-1BG40-0XB0)CM 1241 (RS422/485)(订货号:6ES7 241-1CH32-0XB0)HMI面板KTP1200 Basic PN(订货号:6AV2 123-2MB03-0AX0)屏蔽电缆(用于通讯)l 注:本项目采用RS485接线方法, 3号针脚--RS485信号 B(+) ;8号针脚--RS485信号A(-);5号针脚--接屏蔽等电位点。
两个PLC之间的Modbus通讯经典案例
两个PLC之间的Modbus通讯经典案例如何用 S7-200 实现 Modbus 通信说明:用下面的例程你可以在S7-200 CPU 之间建立一个简单的Modbus 主-从通讯。
这个例子是关于 Modbus 功能码 6 的(写从站保持寄存器),也可以作为其他所支持的功能码的基本参数设置步骤:1, 2, 3, 4, 5, 15 和16 。
要求:要使用 Modbus 协议必须先获得并在 STEP 7 Micro/Win 中安装指令库 (条目17470979)。
Modbus 主站协议只被 STEP 7 Micro/Win V4.0 SP5 及其以上版本支持。
1. 硬件设置例程中的 Modbus 通讯是在两个 S7-200 CPU 的 0 号通讯口间进行的(最好每个CPU 都有两个通讯口)。
在主站侧也可以用相应库文件"MBUS_CTRL_P1" 和"MBUS_MSG_P1"通过1号通讯口通信。
通讯口1 用 Micro/WIN 与 PG 或 PC 建立连接,两个 CPU 的通讯口 0 通过Profibus 缆进行连接(电缆的针脚连接为3,3,8,8 -> 见图 01)。
另外,需要确定逻辑地M相连。
图012. 参数匹配对于MODBUS 通讯,主站侧需要程序库"MBUS_CTRL" 和"MBUS_MSG",从站侧需要程序库 "MBUS_INIT" 和 "MBUS_SLAVE"。
在 Micro/WIN 中您需要为主站和从站新建一个项目,程序与参数设置见图02。
必须要保证主站与从站的“Baud”和“Parity” 的参数设置要一致,并且程序块"MBUS_MSG" 中的"Slave" 地址要与程序块 "MBUS_INIT" 中的 "Addr" 所设置的一致 (见图02)。
S7-200PLC之间进行Modbus通讯实验
1、硬件组态:S7-200PLC CPU 224XP、S7-200PLC CPU 226、维控触屏LEVI 777T、S7-200PLC之间通讯用RS485通讯电缆、S7-200PLC与维控触屏通讯用RS485通讯电缆、编程用USB/PPI电缆。
主从站设定:CPU 224XP主站,CPU 226为从站。
2、通讯端口及设定:主站CPU 224XP PORT0用于Modbus通讯、PORT1用于连接编程电缆。
从站CPU 226 PORT0用于Modbus通讯、PORT1用于连接维控触摸屏COM1(PPI 协议)。
各端子对应接线如下图。
3、实验内容:①主站读从站输入点信号、V存贮区变量;②主站控制从站输出点、写入从站整数变量及浮点数变量并在触摸屏(与从站相连)上显示;③从站读取主站发送数据并处理。
4、CPU226从站通讯初始化编程如下所示。
从站地址规定为6,端口PORT0通讯波特率9600,无校验、无延迟,允许存取所有的I、Q(MaxIQ=128)、和AI(MaxAI=32)数值,保持寄存器的存贮空间为VB3000开始的1000个字。
5、为从站程序块指定库存贮区,注意:程序中不可使用库存储区占用的地址。
6、在维控触屏中下载用于监控Modbus通讯结果的画面程序,如下图。
其中包括从站本机输入点I0.0~I0.7的状态、输出点Q0.0~Q0.7(受主上控制),以及从站Modbus通讯保持寄存器VB3000~VB3013内容、整数VW3000、浮点数VD3000和VD3008内容等。
7、准备好主站通讯程序。
为主站程序块指定库存贮区,注意:程序中不可使用库存储区占用的地址。
程序如下所示(上电初始化程序实际应用时要放在网络1),其中主站输入点I1.0用于触发数据传送,VB3000用于存贮读从站输入点数据,VB5000用于存贮要写入从站控制输出点的数据,VB6000用于存贮要写入从站V存贮区的数据,VB7000用于存贮由从站读取的V存贮区数据(用于验证写从站结果)。
西门子CPU224XP与G120变频器通信实例指导
S7-200与变频器通信指导——北狼2016.3.1一、系统配置1.软件装有STEP7MicroWIN(需安装有modbus库)软件的PC一台,本例使用PC系统为Win764位系统,西门子软件型号为V4.0STEP7 MicroWIN SP9。
2.硬件CPU型号:CPU224XP变频器型号:G120系列控制面板型号:CU240B-2二、G120与S7-200接线CU240B-2的RS485接口在控制单元的底部,共有5个接线端子,其中从左到右,2号端子为RS485P(B),3号端子为RS485N(A),这两端子用于通信数据的发送和接收。
图2-1PLC和控制器接线图S7-200SMART作为MODBUS通信主站,其通信端口和变频器从站的接线如图2-1。
在通信网络的首、末端需要使用终端电阻。
对于S7-200,需要在通信端口端子3和8之间连接一阻值为120欧姆的电阻(本例用的西门子专用的总线连接器)。
对于变频器,若有多个变频器,则把通信网络末端的CU240B-2终端电阻拨码开关拨到ON 位置即可;中间位置的CU240B-2,终端电阻拨码开关必须拨到OFF 位置。
本例中,S7-200使用CPU 自带通信端口1和变频器进行通信。
三、变频器参数设置新变频器测试电机之前需要经过快速调试和电机识别,若变频器参数出现混乱后可进行恢复出厂设置操作。
注:如何使用面板修改参数请参看G120CU240B 调试手册1、快速调试(1)按方向键选择“SETUP ”界面,按“OK ”键进入后会显示出厂复位功能“RESET ”,若需要恢复出厂设置,按“OK ”键进行选择,按方向键选择“YES ”,再按“OK ”键确认,面板显示“BUSY ”,变频器开始恢复出厂设置;若不需要出厂复位,按“下”方向键进行下一个参数设置。
(3)变频器参数设置,参数设置是本例使用的数据,其中参数P1300、P0100、P1900在本例G120变频器快速调试中不需设置。
s7的200 300 冗余400与第三方dcs的modbus通讯
s7的200 300 冗余400与第三方dcs的
modbus通讯
有个项目,现有一个s7-200(cpu为224,只有一个通讯接口且已被占用),一个s7-200(cpu为226,两个通讯端口,port0空闲,port1占用),另外一个s7-300的cpu为315-2pn/dp (两个以太网口未用),还有一套s7-400h系统(cpu为414-7h)。
现在想与第三方dcs进行modbus通讯,是否需要增加什么硬件和通讯线?另外如何写发送数据的程序?
问题补充:
能提供一下,关于这几个plc和dcs通讯的例子?
最佳答案
1、s7-200(cpu为224,只有一个通讯接口且已被占用),增加一个em277模块,将目前与cpu通讯的设备转到em277上,然后用cpu的通讯口进行modbus通讯。
如果不改变现有通讯方式,只能加cp243将数据先传给s7-300,然后再进行modbus通讯。
2、s7-200(cpu为226,两个通讯端口,port0空闲,port1占用),可以直接用空闲的通讯口进行modbus通讯。
3、s7-300的cpu为315-2pn/dp(两个以太网口未用),增加cp341(带modbus硬件狗),进行modbus通讯。
4、s7-400h系统(cpu为414-7h),在et200m上增加cp341(带modbus硬件狗),进行modbus通讯。
S7-200 MODBUS使用说明
MaxAI
设置可使用的字输入寄 整型 存器(AI)的个数
数值范围
备注
1 到 247 之间
1200、2400、
4800、9600、
19200、38400、
57600、115200
0--无校验
所有设置使用一个
1--奇校验
停止位。
2--偶校验
0 到 32767
单位:毫秒
其数值可为 0 建议 MaxIQ 的取值
指令的执行结果。
2. MBUS_SLAVE 指令
MBUS_SLAVE 指令用于服务来自 Modbus 主站的请求,必须在每个循环周期都执行,
以便检查和响应 Modbus 请求。当 EN 输入接通时,该指令在每一循环周期内执行。
MBUS_SLAVE 指令无输入参数。
参数说明:
参数地址 说明
类型
Done
7 = 响应错误(响应不是请求的操作)
8 = 响应 CRC 校验和错误
101 = 从站不支持请求的功能
102 = 从站不支持数据地址
103 = 从站不支持此种数据类型
104 = 从站设备故障
105 = 从站接受了信息,但是响应被延迟
106 = 从站忙,拒绝了该信息
107 = 从站拒绝了信息
108 = 从站存储器奇偶错误
Parity 校验
0=无校验, 1=奇校验, 2=偶校验
Delay 超时时间 ms
MaxIQ 可使用的数字输入输出点数
2)
MaxAI 可使用的模拟量输入点数
2)
MaxHold 保持寄存器字的最大数量
2)
HoldStart 保持寄存器的起始地址(40001)
Done 完成标志位
西门子200做modbus从站与MODSCAN32通讯
西门子200做modbus从站与MODSCAN32通讯一.准备工作:1.西门子200编程软件:V4.0 STEP 7 MicroWIN SP92.西门子200PLC一个:CPU224XP3.编程电缆一条:USB-PPI4.串口软件:MODSCAN32_V4.A01二.modbus通讯概念:西门子S7200做Modbus从站需要使用MBUS_INIT、MBUS_SLAVE即可。
MBUS_INIT指令被用于启用和初始化或禁止Modbus通讯。
在使用MBUS_SLAVE指令之前,必须正确执行MBUS_INIT指令。
指令完成后立即设定"完成"位,才能继续执行下一条指令。
在每次扫描且EN输入打开时执行该指令。
应当在每次通讯状态改变时执行MBUS_INIT指令。
因此,EN输入应当通过一个边缘检测元素用脉冲打开,或者仅在首次扫描时执行。
"模式"输入数值选择通讯协议:输入数值1将端口0指定给Modbus协议并启用协议;将输入数值0指定给PPI,并禁用Modbus协议。
"波特"参数将波特率设为1200、2400、4800、9600、19200、38400、57600或115200。
"地址"参数将地址设为1和247之间(包括1和247)的数值。
"校验"参数被设为与Modbus主设备校验相匹配。
可接受的数值为:*0-无校验*1-奇数校验*2-偶数校验"时延"参数通过将指定的毫秒数增加至标准Modbus信息超时的方法延长标准Modbus信息结束超时条件。
该参数的典型数值在有线网络上应为0。
如果您在使用带有纠错功能的调制解调器,将时延设为50至100毫秒的数值。
如果您在使用扩展频谱无线电,将时延设为10至100毫秒的数值。
"时延"数值可以是0至32767毫秒。
MaxIQ参数将供Modbus地址00xxxx和01xxxx使用的I和Q点数设为0至128之间的数值。
MODBUS通讯协议及PLC编程通讯实例
MODBUS通讯协议及编程ModBus通讯协议分为RTU协议和ASCII协议,我公司的多种仪表都采用ModBus RTU 通讯协议,如:YD2000智能电力监测仪、巡检表、数显表、光柱数显表等。
下面就ModBu s RTU协议简要介绍如下:一、通讯协议(一)、通讯传送方式:通讯传送分为独立的信息头,和发送的编码数据。
以下的通讯传送方式定义也与MO DBUS RTU通讯规约相兼容:初始结构= ≥4字节的时间地址码 = 1 字节功能码 = 1 字节数据区 = N 字节错误校检 = 16位CRC码结束结构= ≥4字节的时间地址码:地址码为通讯传送的第一个字节。
这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。
并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。
主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。
功能码:通讯传送的第二个字节。
ModBus通讯规约定义功能号为1到127。
本仪表只利用其中的一部分功能码。
作为主机请求发送,通过功能码告诉从机执行什么动作。
作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。
如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。
数据区:数据区是根据不同的功能码而不同。
数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。
CRC码:二字节的错误检测码。
(二)、通讯规约:当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。
返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。
如果出错就不发送任何信息。
1.信息帧结构地址码:地址码是信息帧的第一字节(8位),从0到255。
这个字节表明由用户设置地址的从机将接收由主机发送来的信息。
其实,Modbus通讯很简单!——手把手教你
其实,Modbus通讯很简单!——手把手教你主要内容:•S7-200 PLC Modbus通讯概述•S7-200 PLC Modbus通讯指令•S7-200 PLC Modbus通讯常问问题(1)Modbus通讯S7-200的Modbus通讯:•S7-200只支持Modbus RTU协议,不支持Modbus ASCII协议;•Modbus是一种单主站的主/从通信模式。
一条Modbus网络上同时只能有一台主站,从站可以有若干个(如下图所示)。
从站的地址范围为1-247;•一个Modbus通讯的传输字符应包括一个起始位,8个数据位,1个或0个校验位(奇偶校验或无校验可选择),以及一个停止位•在S7-200 CPU通信口上实现的是RS485半双工通信,使用的是S7-200的自由口功能。
上图是一个典型的主站和从站的网络结构,对于Modbus主站而言可以对从站进行读或者写的操作,其中它所支持的功能码(FC,Function Code)包括主站左侧表格中所述功能,例如功能码为'01'时表示读取单个/多个线圈(DO)状态或功能码为'04'时表示读取单个/多个输入寄存器(AI)状态。
而对于从站,我们只需要把Modbus的标准地址和从站的地址对应关系建立好就可以了,S7-200的从站与Modbus标准的对应关系如从站右侧表格所示。
表中左侧是Modbus 标准地址码,其中1-128对应于S7-200的Q0.0-Q15.7,10001-10128对应于S7-200的I0.0-I15.7,30001-30032对应于AIW0-AIW62,40001-4xxx对应的是S7-200的保持寄存器(V区),它的范围是T-T+2*(xxxx-1),T表示的是V区的起始地址,这一点由Modbus从站的指令所决定的。
Modbus的主站指令叫做MBUS_MSG,通过这条指令可以将Modbus的标准报文发给从站,例如在上图例子当中从站的第一个字节是03,表示的是从站的地址,FC功能码为03,表示的是读取单个/多个保存寄存器,Modbus标准地址是40001,长度是10。
变频器与224XP通讯
变频器内置国际标准的MODBUS(从站)通信协议,配合系列变频器专用通讯卡,可非常方便的实现远程通讯控制功能。
通讯卡上提供RS232及RS485两种物理通讯端口,用户可通过设置卡上的跳线选择。
下面以西门子S7-200系列PLC变频器建立通讯并实现对变频器起停、频率给定、监控等功能的控制。
变频器作为MODBUS协议从站接收来自CPU224 PLC的通信指令,。
变频器在与CPU224通信前须做好以下准备工作:1.确认已安装好变频器的通讯卡,并将卡上的端口跳线置于RS485端;2.用一根带9针阳性插头的串口通信电缆连接在CPU224 PLC的自由通信口端,电缆另一端的第5、3、8线分别接在CHV变频器RS485通讯卡的GND、485+、485-端子上,其余线屏蔽不用;3.预先设置变频器以下参数:PC0.0=1 //变频器通讯地址为1PC0.1=3 //通讯波特率9.6KPC0.2=1 //通讯数据偶校验P0.01=2 //变频器的运行指令采用通讯方式P0.03=7 //变频器的A频率设定采用通讯方式二.PLC内存使用说明西门子S7-200系列PLC的自由通讯端口编程必定会用到两个指令,即XMT(发送)指令和RCV(接收)指令。
编写程序时需要为这两个指令指定数据缓冲区,一般以最低位数为0的地址作为数据缓冲区的起始地址。
1.发送指令XMT缓冲区(写/读)VB100 //xmt指令要发送的字节个数VB101 //变频器通讯地址(01)VB102 //modbus功能码(06/03)VB103 //变频器被写地址高位/变频器被读起始地址高位VB104 //变频器被写地址低位/变频器被读起始地址低位VB105 //被写数据高位/被读数据字个数高位VB106 //被写数据低位/被读数据字个数低位VB107 //被发送数据CRC低位VB108 //被发送数据CRC高位2.接收指令RCV缓冲区VB200 //rcv指令要接收的字节个数VB201 //变频器地址(01)VB202 //modbus功能码(06/03)VB203 //变频器被写地址高位/被读数据字节个数高位VB204 //变频器被写地址低位/被读数据字节个数低位VB205 //被写数据高位/被读数据高位VB206 //被写数据低位/被读数据低位VB207 //被接收数据CRC低位VB208 //被接收数据CRC高位VB217 //被接收数据CRC验算低位VB218 //被接收数据CRC验算高位2.CRC校验子程序(SBR0)变频器内置的MODBUS协议采用RTU传输格式,该格式使用CRC校验方式对每次发出或接收的数据帧进行校验。
西门子S7-200--MODBUS通信协议和支持MODBUS-RTU协议的电磁流量计、超声波流量计的通信实例
西门子S7_200 MODBUS通信协议和支持MODBUS RTU协议的电磁流量计、超声波流量计的通信实例S7_200系列PLC有一个通信口的也有两个通信口的,这两个口都支持MODBUS通信协议,不过要添加MODBUS库文件(SP6版本的step7 micro/win 软件自带有MODBUS库文件)。
下面根据具体的项目来说明MODBUS的使用:在项目中要采集进水流量的瞬时流量、日累计、月累计、年累计量,流量计本身有4~20mA信号输出和脉冲信号输出,这些输出信号都是瞬时量,只能转换为瞬时流量,而累积量就要通过编写程序来累加,而且信号的传输衰减和计算过程产生的误差就会造成和实际的流量相差很多,现在很多的流量计(包括其他的测量设备)都设计有通讯口,尤其是支持MODBUS协议,所以首选通信方式采集数据,这样可以直接读取我们想要的数据,只需做稍微的数据转换就可以的,同时也减小了工作量提高准确性(实际是按照流量收取费用的)。
实际的硬件连接:10套s7-200组成PPI网络(其中一个200站做主站),有一个从站要采集两个不同厂家的流量计的相关信息。
PPI网络层已经用去了一个端口0,还剩下一个端口1,那么就用这个端口并设置为自由口协议,在程序中调用MODBUS程序块并填写好必要的信息就可以了(其实调用MODBUS程序块时,程序块内就已经设置好端口为自由口协议了)。
图1.MODBUS库文件图2.控制指令图3.控制指令这里MBUS_CTRL_P1指令要一直调用,有一点要指明:图2中的程序是读取其中一台流量计的,图3是读取另一台流量计的,这两个流量计是不一样的。
这里最重要的是MBUS_MSG_P1指令中地址“Addr”的填写,其实这里要填写Modbus从站的寄存器地址(该地址内有我们需要的信息),那么这个地址要怎么填写呢,填写多少呢?这就要查看从站设备(这里是流量计)的“通信手册”了,因为每个厂家的设备都不一样,所以相同信息的寄存器地址也不一样。
西门子S7200及变频器MODBUS通讯实例详解
西门子S7200与变频器MODBUS通讯实例详解西门子S7200PLC简介西门子S7-200PLC在实时模式下具有速度快,具有通讯功能和较高的生产力的特点。
一致的模块化设计促进了低性能定制产品的创造和可扩展性的解决方案。
来自西门子的S7 - 200微型PLC可以被当作独立的微型PLC解决方案或与其他控制器相结合使用。
Modbus通讯协议简介Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。
ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。
其系统结构既包括硬件、亦包括软件。
它可应用于各种数据采集和过程监控。
ModBus网络只有一个主机,所有通信都由他发出。
网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。
采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。
1 MODBUS RTU协议在S7-200中的应用原理1.1 MODBUS RTU协议与S7-200相互关系简介S7-200 CPU上的通讯口Port0可以支持MODBUS RTU协议,成为MODBUS RTU从站。
此功能是通过S7-200的自由口通讯模式实现,因此可以通过无线数据电台等慢速通讯设备传输。
想在S7-200 CPU与其他支持MODBUS RTU的设备使用MODBUS RTU协议通讯,需要由有S7-200 CPU做MODBUS主站。
S7-200 CPU做主站必须由用户自己用自由口模式,按相关协议编程。
2 从站指令的用法:S7-200控制系统应用中,MODBUS RTU从站指令库只支持CPU上的通讯0口(Port0)。
要实现MODBUS RTU通讯,需要Step7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装Step7-Micro/WIN32 V3.2 Instruction Library(指令库)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
S7-224XP 与FC302做Modbus 通讯通讯例例子
FC302需要设置8组通讯参数组通讯参数。
1.通过写入多个线圈方式0F 写入控制字启动变频器写入控制字启动变频器。
写入颠倒写入颠倒。
slave=1,rw=1,addr=1,count=16,dataptr=&vb2000,vw2000=16#047C
01 0F 00 00 00 10 02 04 7C CRC
最后变频器+plc 时,发现控制字是反的7C04,所以,应将Vw2000=16#7C04(颠倒)。
01 0F 00 00 00 10 02 7C 04 CRC
2.通过写入多个线圈方通过写入多个线圈方式式0F 写入控制字停止变频器写入控制字停止变频器。
写入颠倒写入颠倒。
slave=1,rw=1,addr=1,count=16,dataptr=&vb2000,vw2000=16#3C04(颠倒)
01 0F 00 00 00 10 02 3C 04 CRC
3.通过读取多个线圈方式读取状态字通过读取多个线圈方式读取状态字。
读取颠倒读取颠倒。
slave=1,rw=0,addr=33,count=16,dataptr=&vb2000,vw2000=16#0000
读取结果vw2000=16#0706,也应颠倒,实际为16#0607,与变频器参数16-03相符合。
4.通过读通过读取多个线圈方式读取取多个线圈方式读取取多个线圈方式读取输出频率输出频率输出频率((开环开环)),,反馈信号反馈信号反馈信号((闭环闭环))。
读取颠倒 slave=1,rw=0,addr=49,count=16,dataptr=&vb2000,vw2000=16#0000
读取结果vw2000=16#3313,也应颠倒,实际为16#1333,与变频器参数16-01=15hz 相符合,
[1333/4000]*50≈15hz 。
5.通过写入通过写入保持寄存器方式保持寄存器方式4xxxxx (450010,),修改参考值为修改参考值为25hz ,
(25/50*4000=2000)注意变频器多个参考值通道叠加注意变频器多个参考值通道叠加。
不颠倒
slave=1,rw=1,addr=450010,count=1,dataptr=&vb2000,vw2000=16#2000
结果与变频器预置参考值叠加。
6.通过读取通过读取保持寄存器保持寄存器保持寄存器方式方式,4xxxxx (450200)读取状态字读取状态字。
不颠倒
slave=1,rw=0,addr=450200,count=1,dataptr=&vb2000,vw2000=16#0000
读取结果vw2000=16#0F07,与实际变频器参数16-03相符合,注意不颠倒。
7.通过通过写入保持寄存器写入保持寄存器写入保持寄存器方式方式,4xxxxx (450000)写入控制字启动变频器写入控制字启动变频器。
不颠倒 slave=1,rw=1,addr=450000,count=1,dataptr=&vb2000,vw2000=16#047C
结果变频器启动,16-00=047C ,注意不颠倒。
8.通过通过读取保持寄存器读取保持寄存器读取保持寄存器方式方式,4xxxxx (450210)读取变频器实际值读取变频器实际值。
不颠倒
slave=1,rw=0,addr=450210,count=1,dataptr=&vb2000,vw2000=16#0000
读取结果vw2000=16#1FFF ,与实际变频器参数16-86=2000Hex 相符合,注意不颠倒。
9.通过通过写入保持寄存器写入保持寄存器写入保持寄存器方式方式,4xxxxx (450000)写入控制字停止变频器写入控制字停止变频器。
不颠倒 slave=1,rw=1,addr=450000,count=1,dataptr=&vb2000,vw2000=16#043C
结果变频器停止,16-00=043C ,注意不颠倒。
10.通过通过读取保持寄存器读取保持寄存器读取保持寄存器方式方式,4xxxxx (416000)读取参数16-00。
不颠倒
slave=1,rw=0,addr=416000,count=1,dataptr=&vb2000,vw2000=16#0000
读取出的数据与参数16-00=043C 相同,注意不颠倒。
11.通过通过写入保持寄存器写入保持寄存器写入保持寄存器方式方式,4xxxxx (401220)改写参数1-22。
不颠倒
slave=1,rw=1,addr=401220,count=1,dataptr=&vb2000,vw2000=16#017C ,即380V 结果参数1-22=380,注意不颠倒。
注意:线圈颠倒(包括本例中没有的写频率),保持寄存器不颠倒。
参数的读写,注意只乘10不减1。
然后前面在加4。