S7 200 Modbus从站读写
- 格式:docx
- 大小:49.98 KB
- 文档页数:3
S7-200通过自由口控制Modbus变频器正负转频率写入等西门子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编程手册)。
S7-200 MODBUS RTU 从站通讯CPU 上的通信口(Port0)支持 Modbus RTU 从站通信协议S7-200 CPU上的通信口Port0可以支持Modbus RTU协议,成为ModbusRTU从站。
此功能是通过S7-200的自由口通信模式实现,因此可以通过无线数据电台等慢速通信设备传输。
如果想在S7-200 CPU之间、或者其他支持Modbus RTU的设备使用Modbus RTU 协议通信,需要由有S7-200CPU做Modbus主站。
S7-200 CPU做主站必须由用户自己用自由口模式,按相关协议编程。
详情请参考《S7-200系统手册》之相关章节。
要实现Modbus RTU通信,需要STEP 7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP7-Micro/WIN32 V3.2 Instruction Library(指令库)。
ModbusRTU 功能是通过指令库中预先编好的程序功能块实现的。
ModbusRTU从站指令库只支持CPU上的通信0口(Port0)。
基本步骤:1.检查Micro/WIN的软件版本,应当是STEP7-Micro/WIN V3.2以上版本。
2.检查Micro/WIN的指令树中是否存在ModbusRTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。
如果没有,须安装Micro/WIN32V3.2的Instruction Library(指令库)软件包;图1. 指令树中的库指令3.编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。
关于参数的详细说明,可在子程序的局部变量表中找到;图2. 调用Modbus RTU通信指令库图中参数意义如下:1.模式选择:启动/停止Modbus,1=启动;0=停止2.从站地址:Modbus从站地址,取值1~2473.波特率:可选1200,2400,4800,9600,19200,38400,57600,1152004.奇偶校验:0=无校验;1=奇校验;2=偶校验5.延时:附加字符间延时,缺省值为06.最大I/Q位:参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为1287.最大AI字数:参与通信的最大AI通道数,可为16或328.最大保持寄存器区:参与通信的V存储区字(VW)9.保持寄存器区起始地址:以&VBx指定(间接寻址方式)10.初始化完成标志:成功初始化后置111.初始化错误代码12.Modbus执行:通信中时置1,无 Modbus 通信活动时为 0。
S7-200之间进行MODBUS 通讯一、准备工作1、硬件准备:两个CPU226,一根通讯电缆, 两头均为九针公插头,可以采用DP头(插头接线为3、8,其中3为正,8为负。
2、指令库安装,指令库包括主站指令库和从站指令库(库文件见附件)①从站指令库解压缩后,按照安装向导即可完成从站指令的安装②右击下图中的“库”,点击“添加/删除库”,按照向导将主站指令安装进去二者均安装完成后,库下面会显示如下二、编写主站程序1、主站指令包括两块:MBUS-CTRL和MBUS-MSG,下面先对这两个块的参数进行解释MBUS-CTRL页脚内容1MBUS-MSG,2、例子程序见附件,下面对例子程序的每一个网络进行讲解1)、第一个扫描周期复位各个标志位和done位页脚内容22)、初始化完成后,置M0.1为1,开始读写功能3)、初始化完成后,M0.0会一直保持“on”状态页脚内容3Baud 波特率:设为9600,要与从站波特率对应4)、读从站实际输入值注:主站中Slave的值要与从站中的Addr的值一致First前面必须是脉冲,且其必须与EN端同步,故我们程序中的First和EN的条件是一样的5)、上个网络中的M0.2得电后,复位M0.1和EN端的M0.5,形成循环扫描页脚内容46)、第一个MSG的DONE端的M0.2得电后,启动下面网络的读写功能注:从站对应的V区地址为:2*(Addr-40001)+Holdstart.。
若这里的Addr=40100,而从站中的Holdstart=&VB0,则从站中对应的地址为2*(40100-40001)+&VB0=VB1987)、M0.3得电后,复位M0.28)、M0.3得电后,启动下面的MSG的读写功能页脚内容59)、DONE端的M0.4得电后,复位EN端的M0.310)、M0.4得电后,下网络使能注:写从站实际Q值时,Count值=1或8n(n=1、2、3…….)当Count为1时,Addr可以为任何离散输出,当Count为8n时,Addr=8m+1(m=0、1、2…..)页脚内容6三、编写从站程序1、从站指令包括两块:MBUS-INIT和MBUS-SLAVE,下面先对这两个块的参数进行解释MBUS-INITMBUS-SLAVE2、从站例子程序见附件四、注意事项注1:程序中不可使用库存储区占用的地址页脚内容7注2:同一个线圈不可在上位和下位中同时使用,比如Q0.1在下位中使用了,上位中就不可对其进行写功能,反之亦然。
西门子S7-200 PLC Modbus从站设置2013-01-27 11:43:43| 分类:PLC|举报|字号订阅西门子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之间的数值。
数值0禁止所有向输入和输出的读取。
建议使用的MaxIQ数值是128,该数值可在S7-200中存取所有的I和Q点。
S7-200modbus通讯轮询程序
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(S7-200modbus通讯轮询程序)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为S7-200modbus通讯轮询程序的全部内容。
S7-200 modbus 通讯轮询程序
符号表
2、变量初始化
3、启动读写指令必须放到MB初始化之前,否则不能轮询
4、读取仪表保持寄存器内容(1#仪表)
5、读取仪表保持寄存器内容(2#仪表)
6、读取仪表保持寄存器内容(3#仪表)
7、读取仪表保持寄存器内容(4#仪表)
8、读取仪表保持寄存器内容(5#仪表)
9、读取仪表保持寄存器内容(6#仪表)。
西门子S7-200 PLC Modbus从站设置2013-01-27 11:43:43| 分类:PLC|举报|字号订阅西门子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之间的数值。
数值0禁止所有向输入和输出的读取。
建议使用的MaxIQ数值是128,该数值可在S7-200中存取所有的I和Q点。
西门子200PLCmodbus通讯实例(带程序)
1、在实际应用中,现场不只有plc,还会有智能数显表,上位机通过2个设置多个串口分别读取PLC、智能仪表数据简单不过,但如何实现1个串口读取不同设备数据
2、首先配置好智能仪表从站通讯参数,拿9600 8 1 none 地址3举例
3、200PLC主站程序
第一步初始化,复位modbus库完成位,初始化完成后,启动读写指令m0.1置位
第二步,网络3,填写从站通讯参数
第3步M0.1置位读取从站数据,读取保持寄存器40001-40008 8个数据根据数据格式写入&VB1000,如40001 40002为32位浮点数,则保存在VB1000 VB1001 VB1002 VB1003中,依次类推,读取完成M2.1置位,复位读取从站保持寄存器M0.1 M2.3
读取输入寄存器,读取完成M2.2置位,复位M2,.1
M2.2置位,写数据开始,VB3000写入00001中,写完成,M2.3置位,开始读,M2.2复位。
来源:工控人家园、台达plc教程、工控产品有哪些、三菱plc安装、工控plc书籍、电工论坛、plc模拟量输入模块、工控论坛、()(微信/QQ:503660666) 欢迎分享本文,转载请保留出处!。
S7-200做主站S7-300 CP341做从站的Modbus RTU通讯Modbus RTU Communication – S7-200 as Master and S7-300 CP341 as Slave Getting-Started Edition (2010年6月)摘要本文档讨论使用S7-200做主站,S7-300 CP341做从站的Modbus RTU通讯。
关键词 CP341,Modbus RTU,功能码,S7-200Key Words CP341,Modbus RTU,Function Code,S7-200目录1. 概述2. 软件环境2.1 STEP7 V5.4 SP42.2 CP PTP Param V5.1 SP112.3 CP PTP Modbus Slave V3.1 SP72.4 STEP7 Micro/WIN V4.0 SP62.5 Toolbox_V32-STEP 7-Micro WIN 32 Instruction Library3. 硬件列表和接线3.1 硬件列表3.2 硬件接线3.2.1 接口定义3.2.2 接线示意图4. 组态设置和编程4.1 S7-200做Modbus主站的设置4.1.1 Modbus RTU主站库4.1.2 S7-200 Modbus主站编程4.2 CP341 做Modbus 从站的硬件组态4.2.1 硬件组态4.2.2 设置Modbus参数4.2.3 Modbus驱动的下载4.2.4 CP341做Modbus从站的编程5. 通讯测试5.1 FC01/05/15功能码5.2 FC02功能码5.3 FC03/06/16 功能码5.4 FC04 功能码5.5 Limits 栏6. 总结7. 相关参考资料附录-推荐网址1. 概述在现场应用中,很多仪表和设备仅支持Modbus RTU的通讯协议,第三方仪表可以做Modbus主站或从站,西门子的通讯模块CP341 / CP441-2 通过Dongle(硬件狗)可以扩展该协议,S7-200 集成的口可以支持自由口通讯,通过指令库也可以方便的实现Modbus RTU通讯。
S7-200芯片数据读写工具安装使用说明一、驱动的安装:1、将接收到的压缩包解压后,打开“USB口编程器驱动”文件夹(先不插编程器),鼠标双击运行里面的“SETUP”文件。
2、在弹出的窗口中点“INSTALL”按钮。
3、等待出现“驱动预安装成功”对话窗口后,点确定。
然后关闭安装窗口。
4、插入USB口24系列编程器硬件。
5、在弹出的发现新硬件窗口中选择自动安装即可,直到提示安装完成。
6、驱动安装完成后,依次按下面路径可以看到我的电脑—右键—属性—硬件—设备管理器—USB-IO。
说明驱动正常安装,编程器可以正常使用。
二、24芯片的位置方向:编程器IC座的脚位说明,如下图:上图中的红色标注文字在实际编程器中不存在,是为了说明脚位顺序而添加在图片上的。
三、读写应用程序的使用:将光盘中“USB口24系列编程器软件”文件夹复制到硬盘中,然后在该文件夹内的“USB口24系列编程器”文件上点鼠标右键,依次选择“发送到----桌面快捷方式”,这时您就可以使用桌面的图标启动编程器软件进行读写操作了。
下面介绍一下应用软件中的各部分功能用法:芯片选择:用于选择您想操作的芯片型号,直接鼠标点选相应的待操作的存储器芯片型号,及插在IC紧缩座上的芯片。
状态指示:底部左侧的文字用于显示当前是否已经插入编程器,但不检测是否插入芯片。
代码编辑区:中间的白色矩形区域是用于显示打开的文件内容或从存储器芯片中读出的数据内容,为十六进制代码。
打开按钮:打开存储器数据文件并显示在中间的编辑区内,准备写入芯片。
一般为BIN扩展名,也有特例的。
保存按钮:将编辑区内的内容保存到文件中,以备后用。
多数用于将芯片中的数据读出后保存起来。
读取按钮:将芯片中的内容读出并显示在编辑器内,以备编辑或保存成文件,注意实际芯片与界面选择的芯片要对应。
写入按钮:将编辑区内的内容写入芯片中,注意实际芯片与界面选择的芯片要对应。
写入完成会有提示。
如果编辑区中的内容长度小于所选择的芯片,只写入编辑区内容的长度为止,芯片从0地址开始写。
MCGS⼊门笔记3-与S7200(master)Modbus-Rtu通讯MCGS⼊门笔记3-与S7200(master)Modbus-Rtu通讯本⽂介绍通过485串⼝连接MCGS与S7200进⾏Modbus-Rtu通讯,MCGS为从站,S7200为主站。
S7200这个⽼古董,就是活在⼝中的东西,要不是项⽬需要,真的想不到还会⽤到这个,组态软件Micro/WIN也是年代久远,所以写了另⼀篇⽂章,S7200⼊门笔记。
Modbus通讯协议是⼯业全球流⾏的通讯的协议了,相⽐⼤家都熟悉,不熟悉的建议先了解下,有助于项⽬实现,如果我发布了我⾃⼰写的modbus的草稿,你能在博客页⾯找到这篇⽂章。
前⾯两篇⽂章链接:1. 组态MCGS这⼀部分跟上篇⽂章⽅法类似,这⾥省略的地⽅可能在前⾯能找到1.1组态通讯驱动添加串⼝,主要设置端⼝号,这⾥的端⼝号跟MCGS的端⼝号⼀致对应添加设备,从站要选择modbus串⼝数据转发设备,设置从站地址和添加通讯变量分别添加I0.0-I0.7、Q0.0-Q0.7、WORD40001-WORD40008变量(下图对应的是前篇⽂章S7300的图,仅供参考)1.2画⾯组态添加按钮,⽤于改变变量按下图操作,图⽐较乱。
按钮设置数据对象为取反可能更容易调试。
添加矩形显⽰,⽤于显⽰变量变化,相当于LED添加滑动块,⽤于改变多位整数,40001滑条设置0-65535对应的是16位⽆符号字变量。
40002设置为0-255对应低字节。
画⾯显⽰效果如图。
⼆、组态S7-2002.1组态软件和硬件S7200PLC组态软件是STEP7_MicroWin32。
组态软件因为年代久远,并不友好,所以不好上⼿,很多注意的地⽅,⽐如通讯下载不⽀持以太⽹,另外Modbus通讯需要安装指令库,这部分教程可以看另⼀篇⽂章,S7200⼊门笔记硬件是CPU 224XP CN REL 02.012.2测试程序编程关于程序编程,西门⼦官⽅出了⽐较完整的教程,强烈推荐,⾥⾯还有例程Modbus RTU 主站功能编程1. 调⽤ Modbus RTU 主站初始化和控制⼦程序使⽤ SM0.0 调⽤ MBUS_CTRL 完成主站的初始化,并启动其功能控制:2. 调⽤ Modbus RTU 主站读写⼦程序MBUS_MSG,发送⼀个Modbus 请求我这⾥⽤的是v1.0的modbus旧版本库指令,与官⽅有⼀点不同,官⽅的v1.2如下图v1.2指令官⽅说明⽐较清楚a.EN使能:同⼀时刻只能有⼀个读写功能(即 MBUS_MSG)使能注意:建议每⼀个读写功能(即 MBUS_MSG)都⽤上⼀个MBUS_MSG 指令的 Done 完成位来激活,以保证所有读写指令循环进⾏(见例程)。
Modbus-RTU一主8从通讯例程说明基于西门子S7-200系列PLC的Modbus通讯,写了一个一主多从的通讯例程,现就此通讯例程加以详细说明,以供大家工程开发过程中使用。
一:指令说明S7-200PLC的Modbus通讯,西门子本身没有直接的相关指令,所以需要给STEP7里面添加西门子官方提供的Modbus库文件。
添加好库文件后会出现下图所示。
点开【库】就会出现左下图所示,分别打开与Modbus有关的文件夹就会出现右下图所示的可以直接调用的指令。
【Modbus Master Port0(v1.2)】通讯口0作为Modbus主站用到的指令。
【MBSU_CTRL】通讯口0的Modbus主站初始化指令。
【EN】初始化指令必须每个扫描周期都使能【Mode】通讯端口模式设置:1:Modbus 0:默认协议(PPI)【Baud】通讯波特率:我们设置为9600【Parity】校验位:0无校验;1奇校验;2偶校验【Timout】通讯超时时间:我们设置为2000ms【MBUS_MSG】通讯口0的Modbus主站读写指令。
【EN】指令使能【First】指令触发,必须是上升沿触发-|P|-注:这里使能和触发最好使同一个触点【Slave】读写的从站号【RW】读写选择:0读取;1写入【Addr】对应从站的寄存器的Modbus起始地址【Count】访问的寄存器的数量(由起始地址开始)【DataPir】数据指针:写入的数据地址/读回的数据地址【Done】指令完成标志位【Error】错误代码:只在Done为1的时候有效【Modbus Master Port1(v1.2)】通讯口1作为Modbus主站用到的指令。
【MBSU_CTRL_P1】通讯口1的Modbus主站初始化指令。
【MBUS_MSG_P1】通讯口1的Modbus主站读写指令。
【Modbus Slave Port0(v1.0)】通讯口0作为Modbus从站用到的指令。
西门子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从站的寄存器地址(该地址内有我们需要的信息),那么这个地址要怎么填写呢,填写多少呢?这就要查看从站设备(这里是流量计)的“通信手册”了,因为每个厂家的设备都不一样,所以相同信息的寄存器地址也不一样。
学习s7-200之间的Modbus通讯参摘微信读书 书名:西门⼦PLC⼯业通信完全精通教程作者:向晓汉苏⾼峰关于S7-200两个PLC互相通信⼀、使⽤Modbus协议库⼆、Modbus的地址Modbus地址通常是包含数据类型和偏移量的5个字符值。
第⼀个字符确定数据类型,后⾯四个字符选择数据类型内的正确数值。
(1)主站寻址Modbus主站指令可将地址映射到正确功能,然后发送⾄从站设备。
Modbus主站指令⽀持下列Modbus地址:00001到09999是离散输出(线圈);10001到19999是离散输⼊(触点);30001到39999是输⼊寄存器(通常是模拟量输⼊);40001到49999是保持寄存器。
所有Modbus地址都是基于1,即从地址1开始第⼀个数据值。
有效地址范围取决于从站设备。
不同的从站设备将⽀持不同的数据类型和地址范围。
(2)从站寻址Modbus主站设备将地址映射到正确功能。
Modbus从站指令⽀持以下地址:00001⾄00128是实际输出,对应于Q0.0-Q15.7;10001⾄10128是实际输⼊,对应于I0.0-I15.7;30001⾄30032是模拟输⼊寄存器,对应于AIW0⾄AIW62;40001⾄04XXXX是保持寄存器,对应于V区。
所有Modbus地址都是从1开始编号的。
⽰例:三、相关指令介绍(⼀)做主站使⽤Modbus master库(1)初始化主设备指令MBUS_CTRL⽤于S7-200端⼝0(或⽤于端⼝1的MBUS_CTRL_P1指令)可初始化、监视或禁⽤Modbus通信。
EN:使能端,有信号则该指令执⾏Mode:输⼊的值⽤于选择通信协议。
输⼊值为 1 时,将 CPU 端⼝分配给 Modbus 协议并启⽤该协议。
输⼊值为 0 时,将 CPU 端⼝分配给PPI 系统协议并禁⽤ Modbus 协议。
Baud:波特率Parity:设置为与 Modbus 从站设备的奇偶校验相匹配。
S7-200做主站S7-300CP341做从站的ModbusRTU通讯讯Getting-StartedEdition(2022年6月)摘要本文档讨论使用S7-200做主站,S7-300CP341做从站的ModbuRTU通讯。
关键词CP341,ModbuRTU,功能码,S7-200KeyWordCP341,ModbuRTU,FunctionCode,S7-200目录1.概述2.软件环境2.1STEP7V5.4SP42.2CPPTPParamV5.1SP112.3CPPTPModbuSlaveV3.1SP72. 4STEP7Micro/WINV4.0SP62.5Toolbo某_V32-STEP7-MicroWIN32IntructionLibrary3.硬件列表和接线3.1硬件列表3.2硬件接线3.2.1接口定义3.2.2接线示意图4.组态设置和编程4.2.4CP341做Modbu从站的编程5.通讯测试5.1FC01/05/15功能码5.2FC02功能码5.3FC03/06/16功能码5.4FC04功能码5.5Limit栏6.总结1.概述在现场应用中,很多仪表和设备仅支持ModbuRTU的通讯协议,第三方仪表可以做Modbu主站或从站,西门子的通讯模块CP341/CP441-2通过Dongle(硬件狗)可以扩展该协议,S7-200集成的口可以支持自由口通讯,通过指令库也可以方便的实现ModbuRTU通讯。
本文以S7-200作为Modbu主站,CP341作为Modbu从站,实现ModbuRTU通讯,阐述两者在通讯方面的设置和注意事项。
2.软件环境2.1STEP7V5.4SP4用于编写S7-300/400程序,此软件需要从西门子购买,本文档中的300的程序是使用Step7V5.4SP4的软件编写。
2.2CPPTPParamV5.1SP11/CN/view/zh/277742762.4STEP7Micro/WINV4.0SP62.5Toolbo某_V32-STEP7-MicroWIN32IntructionLibrary3.硬件列表和接线3.1硬件列表表1硬件设备3.2硬件接线3.2.1接口定义S7-200的通讯口为RS485物理口(9针口),CP341是RS422/485的接口类型(15针口),两种设备的接口引脚的示意图如下所示,更详细的信息可以参考CP341及S7-200通信接口的手册。
S7200Modbus通信培训教程一、概述本教程旨在帮助您了解西门子S7200系列PLC的Modbus通信功能,掌握其配置和使用方法。
通过本教程的学习,您将能够独立完成S7200PLC与Modbus设备之间的通信配置,实现数据交换和控制功能。
二、准备工作1.已安装西门子STEP7-Micro/WIN编程软件。
2.S7200PLC系统已正常运行,具备通信接口(如RS232、RS485等)。
3.Modbus设备已正常运行,具备通信接口(如RS232、RS485等)。
三、Modbus通信配置1.新建项目2.添加硬件在项目树下,右键“PLC”,选择“添加新设备”,在弹出的对话框中选择S7200系列PLC,设置相应的设备名称和型号,“OK”完成添加。
3.配置通信接口双击项目树中的PLC设备,进入设备配置界面。
在“硬件”选项卡中,找到通信接口(如RS232、RS485等),右键,选择“属性”。
4.设置通信参数(1)波特率:根据Modbus设备的波特率设置,如9600、19200等。
(2)数据位:通常设置为8位。
(3)停止位:通常设置为1位。
(4)校验位:根据Modbus设备的校验方式设置,如无校验、偶校验等。
(5)从站地质:设置S7200PLC的Modbus从站地质,范围为1-247。
5.保存并编译完成通信参数设置后,“确定”保存设置。
在项目树下,右键“PLC”,选择“编译”,确保配置无误。
四、Modbus通信编程1.新建程序块2.编写Modbus通信程序(1)定义Modbus从站地质、功能码、数据地质和寄存器数量。
(2)使用Modbus指令(如MBUS_CTRL、MBUS_MSG等)进行数据传输。
(3)根据通信结果,进行数据处理和控制逻辑编写。
3.程序完成程序编写后,工具栏上的“”按钮,将程序到S7200PLC。
五、调试与运行1.连接Modbus设备将S7200PLC与Modbus设备通过通信线连接,确保接线正确。