s7-200 slaver 保持寄存器与Modbus从属符号重叠
西门子S7-200 SMART之Modbus RTU 通信常见问题及错误代码含义
常见问题1.S7-200 SMART 是否支持Modbus ASCII 通信模式?STEP 7-Micro/WIN SMART 软件未提供Modbus ASCII 通信模式指令库。
S7-200 SMART CPU若用于Modbus ASCII 通信时,则需要用户使用自由口通信模式进行编程。
2. S7-200 SMART CPU 集成的RS485 端口(端口0 )以及SB CM01 信号板(端口1 )两个通信端口能否同时作为Modbus RTU 主站或者同时作为Modbus RTU从站?S7-200 SMART V2.2版本支持两个通信端口同时做MODBUS RTU主站,不支持同时做MODBUS RTU从站。
3. S7-200 SMART CPU作为Modbus RTU 主站如何访问Modbus 地址范围大于49999 的保持寄存器?通常Modbus 协议的保持寄存器范围在40001 到49999 之间,这个范围对于多数应用来说已经足够了,但有些Modbus 从站保持寄存器区的地址会超出该范围。
Modbus RTU 主站协议库支持保持寄存器地址范围为(40001 到49999)或者(400001 到465536)。
如果Modbus 从站地址范围为400001 –465536,只需在调用MBUS_MSG 子程序时给Addr 参数赋相应的值即可,如416768。
4.S7-200 SMART CPU作为Modbus RTU 主站,多次调用MBUS_MSG 指令时,为什么该指令会出现6# 错误代码?同一时间只能有一条MBUS_MSG 指令处于激活状态,如果激活多条MBUS_MSG 指令,将执行第一条MBUS_MSG 指令,所有后续MBUS_MSG 指令将中止执行并出现6# 错误代码。
多条MBUS_MSG 指令的执行需要采用轮询方式。
5.S7-200 SMART CPU作为Modbus RTU 主站,从站故障或者通信线路断开时,主站会尝试发送多次请求报文,从而导致通信时间过长。
S7-200实现MODBUS通讯问题
S7-200实现MODBUS通讯问题在EVIEW触摸屏和S7-200 CPU 之间建立一个简单的Modbus 主-从通讯。
在S7-200控制系统应用中,Modbus RTU从站指令库只支持CPU上的通讯0口(Port0)。
要实现Modbus RTU通讯,需要Step7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装Step7-Micro/WIN32 V3.2 Instruction Library(指令库)。
Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。
一、基本过程如下:(一)使用Step7-Micro/WIN V3.2以上版本。
(二)安装Micro/WIN32 V3.2 Instruction Library(指令库)软件包,Micro/WIN的指令树中如图1所示。
图1(三)编程使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。
1、MBUS_INIT指令(初始化从站)MBUS_INIT指令使能和初始化或禁止Modbus通讯,MBUS_INIT指令必须无错误的执行,才能够使用MBUS_SLA VE指令。
2、MBUS_SLA VE指令MBUS_SLA VE指令用于服务Modbus主站的请求,必须在每个循环周期都执行,以便检查和响应Modbus请求。
编程如图2所示,图2二、注意事项(一)调用Step7-Mciro/WIN32 V3.2 Instruction Library(指令库)需要分配库指令数据区(Library Memory)。
库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。
如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。
选重目录树中的程序块,选择右键菜单里的库存储区,设置如图3所示;(二)由子程序参数HoldStart和MaxHold指定的保持寄存器区,是在S7-200 CPU的V数据存储区中分配,此数据区不能和库指令数据区有任何重叠,否则在运行时会产生错误,不能正常通讯(其中及可能造成Error的值为10(从属功能未启用))。
S7-200-Modbus通信全解
• Modbus 串行链路协议只有一个主站,可以有1~247个从站。 Modbus 通信只能从主站发起,从站在未收到主站的请求时,不能发 送数据或互相通信。
• Modbus 串行链路协议的通信接口可采用 RS-485 接口,也可使用 RS-232C 接口。其中RS-485 接口可用于远距离通信,RS-232C 接口 只能用于短距离通信。
共16条(1~16),其中西门子Modbus RTU协议库支持最常用的8条。 • 信息数据:N个字节,格式与功能码有关。 • CRC :循环冗余校验,两个字节。
Modbus 报文传输格式
• 西门子Modbus RTU协议库支持最常用的8条功能码如下表所示。
Modbus 报文传输格式
• RTU模式下,报文中的每个8位字节被转化为两个16进制字符,然后 以字节为单位进行传输,并采用CRC(循环冗余校验)方式进行校验。 RTU模式的优点在于同波特率下有着比ASCII模式更高的传输效率。
• (4)040001至04XXXX是保持寄存器,对应于V区。
• Modbus 从站协议允许您对Modbus主站可访问的输入、输出、模拟 输入和保持寄存器(V区)的数量进行限定。MBUS_INIT 指令的参数 MaxIQ 指定 Modbus 主站允许访问的实际输入或输出(I或Q)的最 大数量。MBUS_INIT 指令的 MaxAI 参数指定 Modbus 主站允许访问 的输入寄存器(AIW)的最大数量。MBUS_INIT 指令的MaxHold 参 数指定 Modbus 主站允许访问的保持寄存器(V存储区字)的最大数 量。
概述
S7-200-Modbus通信解析
14
S7-200
Hardware Software Workshop
Modbus 报文传输格式
• RTU模式下, 报文中的每个8位字节被转化为两个16进制字符, 然后以 字节为单位进行传输, 并采用CRC(循环冗余校验)方式进行校验。 RTU模式的优点在于同波特率下有着比ASCII模式更高的传输效率。
15
S7-200
Hardware Software Workshop
Modbus 报文传输格式
• 西门子专门为 Modbus RTU 通信开发了指令库,极大地简化了 Modbus RTU 通信的开发,以便于快速实现相关应用。通过 Modbus RTU 从站指令库,使得 S7-200 可作为 Modbus RTU 中的从站设备 集成到 Modbus 网络中,以实现与 Modbus 主站设备的通信。
• Modbus 串行链路协议只有一个主站, 可以有1~247个从站。Modbus 通信只能从主站发起, 从站在未收到主站的请求时, 不能发送数据或互 相通信。
• Modbus 串行链路协议的通信接口可采用 RS-485 接口, 也可使用 RS232C 接口。其中RS-485 接口可用于远距离通信, RS-232C 接口只能 用于短距离通信。
3
S7-200
Hardware Software Workshop
定义
• 使用 Modbus 通信协议是 Modicon 公司提出的一种报文传输协议, 它广泛应用于工业控制领域, 并已经成为一种通用的行业标准。不同 厂商提供的控制设置可通过 Modbus 协议连成通信网络, 从而实现集 中控制。
• 根据传输网络类型的区别, Modbus 通信协议又分为串行链路上的 Modbus 和基于 TCP/IP 协议的 Modbus。
S7-200 PLC 通过Moxa G3150与MACSV的Modbus通讯
员工内部交流资料S7-200PLC 通过MOXA G3150与MACSV的Modbus通讯编写:秦晓杰审核:审批:2013年1月S7-200 PLC 通过MOXA G3150与MACSV的Modbus通讯本文讲述S7-200系列PLC通过MOXA G3150 (GPRS)采用Modbus RTU协议与DCS系统建立通信连接的一般方法。
1、系统资源1.1、S7-200 226 CPU和MOXA G3150各一个。
1.2、和利时DCS(FM801)一套。
1.3、Modbus主站通信软件一套。
1.4、MOXA服务器软件、虚拟串口软件各一套。
1.5、S7-200通讯线缆一根。
1.6、DP接头一个,两芯线缆一根。
1.7、操作系统:Windows SP2中文专业版;PLC组态软件:MicroWIN V4.0 SP9;DCS组态软件:MACS V5.2.4中英文正式版。
2、PLC软硬件设置2.1、硬件说明:S7-200 PLC Port0或Port1口接口示意图:G3150端口接线:注:RS485口为5个端子,从左到右编号为1,2,3,4,5端口号。
RS422 4线制接法1+,2-,3+,4-,5GND。
RS485 2线制接法3+,4-,5GND。
2.2、PLC软件设置2.2.1、为Modbus指令库分配V存储器:2.2.2、编写通讯相关程序:编程所需功能块的位于如下库文件中:使用功能块MBUS_INIT在PLC程序首次扫描时使能和初始化Modbus通讯,当每次扫描时使用功能块Modbus_SLA VE响应Modbus主站的请求。
MBUS_INIT功能块管脚定义:参数意义选项EN 使能Mode 协议选择0=PPI, 1=MODBUSAddr 从站地址Baud 传输速率kbps 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 Parity 校验0=无校验, 1=奇校验, 2=偶校验Delay 超时时间msMaxIQ 可使用的数字输入输出点数MaxAI 可使用的模拟量输入点数MaxHold 保持寄存器字的最大数量HoldStart 保持寄存器的起始地址(40001)Done 完成标志位Error 错误代码Modbus_SLA VE功能块管脚定义:参数意义选项EN 使能Done 完成标志位Error 错误代码错误代码解析:0 无错误1 内存范围错误2 非法波特率或奇偶校验3 非法从属地址4 非法Modbus参数值5 保持寄存器与Modbus从属符号重叠6 收到奇偶校验错误7 收到CRC错误8 非法功能请求/功能不受支持9 请求中的非法内存地址10 从属功能未启用程序编译、下载到S7-200 PLC后,运行CPU。
西门子做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之间的数值。
S7-200 PLC特殊寄存器
S7-200 PLC SM特殊功能寄存器赋值与功能SMB0至SMB29(S7-200只读特殊内存)。
每次扫描循环后,S7-200 CPU操作系统将新改动写入特殊内存中存储的系统数据中。
如果从程序读取SMB0至SMB29,此为只读地址。
如果程序尝试对只读SM地址写入,Micro/WIN会编译程序,不会出错。
但是,CPU程序编译程序会拒绝程序,并显示“操作数范围错误,下载失败。
”程序可以读取存储在特殊内存地址中数据、评估当前系统状态、并使用有条件逻辑决定如何应答。
在运行模式中,对程序的连续扫描提供对所选系统数据的连续监管。
SMB0 系统状态位SMB1 指令执行状态位SMB2 自由端口接收字符SMB3 自由端口奇偶校验错误SMB4 中断队列溢出、运行时间程序错误、中断启用、自由端口传输器被强制SMB5 I/O错误状态位SMB6 CPU代码寄存器SMB8-SMB21 I/O模块代码和错误寄存器SMW22-SMW26 扫描时间SMB28-SMB29 模拟调整SMB30至SMB549(S7-200读取/写入特殊内存)根据要求,S7-200 CPU操作系统从特殊内存读取配置/控制数据,并将新改动写入存储在特殊内存中的系统数据。
程序可以读取和写入所有SM地址30或更大的地址,但是SM数据的普通用法根据每个地址的功能不同而异。
程序可以读取通常写入数据的SM地址。
程序可以在SM地址中读取和写入数据。
SM地址提供一种解释系统状态数据、配置系统选项和控制系统功能的方法。
在运行模式中,对程序的连续扫描提供对特殊系统功能的连续存取能力。
SMB30和SMB130 自由端口控制寄存器SMB31-SMW32 永久性内存(EEPROM)写入控制SMB34-SMB35 用于定时中断的时间间隔寄存器SMB36-SMB65 HSC0、HSC1和HSC2高速计数器寄存器SMB66-SMB85 PTO / PWM高速输出寄存器SMB86-SMB94和SMB186-SMB194 接收讯息控制SMW98 I/O扩充总线—通讯错误SMB136-SMB165 HSC3、HSC4和HSC5高速计数器寄存器SMB166-SMB194 用于PLC(脉冲)指令的PTO包络表SMB200-SMB549 为智能扩充模块提供的状态信息保留,例如EM 277 PROFIBUS-DP模块。
S7-200PLC MUDBUS从站通信
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 PLC Modbus从站设置
西门子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点。
s7200与v20变频器modbus通信详细教程
s7-200-与v20变频器-modbus 通信详细教程首先恢复出厂设置然后设置电机参数恢复出厂设置方法恢复之后就开始写入电机参数P0100[0] = 0P0304[0] = 400P0305[0] = 1.88P0307[0] = 0.75KWP0308[0] = 0.8P0310[0] = 50P0311[0] = 1395P1900[0] = 2此时出现一个感叹号目前变频器有报警信息然后按M键进入电机快速调试的下一步选择cn011出现P1080然后继续执行P1080[0] = 0.00P1082[0] = 50P1120[0] = 10sP1121[0] = 10S然后长按M键但是还是需要电机数据识别按下启动键后变频器开始数据识别等待一会后在显示菜单下长按m键绿灯开始闪烁在显示菜单下按m键进入参数列表键P0010[0]改成1接下来开始modbus设置P2014 设置为0 如设置100 会造成F72报错所以报F72错误设置P2014 的值为0即可这是连接方式红色连P+绿色连接N-然后L1 L2 L3接三相电输入UVW 接电机之后编写程序这是控制字确定后即可下载验证Done 完成位:读写功能完成位。
Error 错误代码:只有在Done 位为1时,错误代码才有效。
常用的控制字:047E :运行准备047F :正转启动0C7F :反转启动04FE :故障确认将这个值写入40100 vb10中即可VW10 控制字地址速度给定vw20读取状态vb30Vw32 实际值写入上坡时间vw50Modbus错误代码:Done 完成位:读写功能完成位Error 错误代码:只有在Done 位为1时,错误代码才有效代码描述0 无错误1 响应校验错误2 未用3 接收超时(从站无响应)4 请求参数错误(slave address, modbus address, count ,R/W)5 Modbus /自由口未使能6 Modbus 正在忙于其他请求7 响应错误(响应不是请求的操作)8 响应CRC校验和错误101 从站不支持请求的功能102 从站不支持数据地址103 从站不支持此种数据类型104 从站设备故障105 从站接收了信息,但是响应被延迟106 从站忙,拒绝了该信息107 从站拒绝了信息108 从站存储区奇偶错误然后写入启动准备控制字速度给定斜坡上升时间。
S7-200内置寄存器说明
PTO0脉冲数更新:1=写入新的脉冲数
PLS0_TimeBase
SM67.3
PTO0/PWM0时基:0=1口s/单位;1=皿$/单位
PWM0_Sync
SM67.4
PWM0同步更新:0=非同步更新;1二同步更新
PTO0_Op
SM67.5
PTO0:0二单段操作;1二多段操作
PLS0_Select
HSC2_Dir
SM57.3
HSC2计数方向控制:0二减计数;1二增计数
HSC2_Dir_Update
SM57.4
HSC2计数方向更新:0二无更新;1二更新方向
HSC2_PV_Update
SM57.5
HSC2预置值更新:0二无更新;1二更新预置值
HSC2_CV_Update
SM57.6
HSC2当前值更新:0-无更新;1=更新当前值
HSC2_Enable
SM57.7
HSC2使能:0二禁止;1二使能
PLS0_Err_Abort
SM66.4
PTO0包络中止:0二无错误;1二因6计算错误中止
PLS0_Cmd_Abort
SM66.5
PTO0包络中止:0二未因用户命令中止;1二因用户命令 中止
PLS0_Ovr
SM66.6
PTO0管道溢出:0二无溢出;1二管道溢出
Comm_Int_Ovr
SM4.0
当通信中断队列溢出时,置位为1(仅在中断程序内 有效)
Input_Int_Ovr
SM4.1
当输入中断队列溢出时,置位为1(仅在中断程序内 有效)
Timed_Int_Ovr
SM4.2
当定时中断队列溢出时,置位为1(仅在中断程序内 有效)
S7200SMARTModbusTCP服务器指令
xxxxx目录1摘要 (3)2MODBUS TCP服务器功能 (4)3Modbus TCP 服务器指令使用示例 (6)3.1MB_Server指令库安装 (6)3.2调用MB_Server指令库 (6)3.3MB_Server指令库错误代码 (8)1 摘要本文用于介绍S7-200 SMART Modbus TCP 服务器指令的使用。
伴随着STEP 7-Micro/WIN SMART V2.2 和S7-200 SMART CPU 固件V2.2的发布,S7-200 SMART CPU开始支持TCP、ISO-on-TCP和UDP等开放式用户通信。
STEP 7-Micro/WIN SMART V2.2版本软件安装MB_Server指令库后,S7-200 SMART CPU 还可以支持 Modbus TCP 服务器指令。
每个 MB_Server指令库只能创建一个Mdobus TCP连接,如果一个S7-200SMART 需要连接多个Modbus TCP 客户端,则需要购买多个名称不同的MB_Server指令库(例如MB_Server_0,MB_Server_1,MB_Server_2)。
2 MODBUS TCP服务器功能Modbus 设备间的数据交换是通过功能码来实现的。
S7-200 SMART CPU 调用MB_Server指令库作为MODBUS TCP服务器时支持功能码见表 1.所示。
表1. MB_Server指令库支持的Modbus功能码注意:当MODBUS TCP客户端使用功能码15 把多个离散量输出点的值写到S7-200 SMART CPU 的输出映像寄存器(Q 区)时,输出点的地址必须以字节边界起始(如 Q0.0 或 Q2.0),并且输出点的数目必须是 8 的整数倍。
S7-200 SMART CPU 作为 Modbus TCP服务器时支持以下 Modbus 地址(与CPU 地址的映射关系见表 2.所示):•00001 至 00256 是映射到 Q0.0 - Q31.7 的开关量输出线圈。
Modbus通讯错误代码
常见的错误代码有:3:基本上是从站无响应,从站地址错了102:从站不支持此种数据地址,地址40000,30000等不对,在从站中没有对应的地址103:从站不支持此种数据类型,类型不对,开头的4,3,1,0没有选择正确,应看清楚是读写型整型还是只读型整型还是读写型开关量。
读写型整型是4开头,只读型整型是3开头,读写型开关量是0开头,只读型开关量是1开头。
计算方法为:3个字符包含9-10个位(8个数据位+1或2个停止位),即27-30个位,在波特率为9600的情况下,传输速率约为3ms。
MODBUS最高能到多少波特率?38.4k应该没有问题;我公司是SIEMENS PLC 和MODBUS 通信,最大19200;这个跟从站有很大的关系,与所选的接口芯片有直接关系;西门子S7-200的居然可以达到115200最大的都是理论值,现实中用的很少;115200的话,就该用ASCii协议了,RTU估计是容易丢包了;根据需要设置,与串口通讯波特率一样,常用的有19200、38400;根据下位机的波特率来决定通讯的波特率。
RS485是硬件连接,modbus是软件协议,波特率是串口通信的比特流速率。
Modbus从属协议执行错误代码:错误代码说明0 无错误1 内存范围错误2 非法波特率或校验3 非法从属地址4 非法Modbus参数值5 保持寄存器与Modbus从属符号重叠6 收到校验错误7 收到CRC错误8 非法功能请求/功能不受支持9 请求中的非法内存地址10 从属功能未启用1、重新设置主站询问时间,波特率、奇偶检验,停止位。
2、主、从站地址不能相同。
范围1-2473、检查通信线连接是否正常。
4、可采用MODBUS 串口软件测试下从站是否正常。
错误是10是未使能。
1、编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE。
2、检查相关参数是否正常:、模式选择:启动/停止Modbus,1=启动;0=停止。
Smart200 PLC 双口Modbus做主站解决方法说明
如何实现Smart200 PLC 双口Modbus主站通讯Smart200 PLC经过测试,编程软件“STEP 7 Micro WIN SMART”自带的Modbus 库文件,如果对于port0和port1都做主站进行编程,会出现无法使用的情况,目前为止该版本还没有更新,只能借助于原S7-200 PLC中的库文件(“STEP 7 Micro WIN SP6”),进行该部分Modbus编程,然后再导入到“STEP 7 Micro WIN SMART”编程软件中,从而解决这个小Bug。
(此方法经测试有效,如有不明之处,可联系我公司销售代表或拨打热线电话:400-810-4288)具体操作过程第一步:安装S7-200调试软件“STEP 7 Micro WIN SP6”;第二步:导入Modbus程序库;第三步:在“STEP 7 Micro WIN SP6”中完成Modbus的通信编程(从指令集“库”处可以找到相关子程序,见下文详细描述),并保存;第四步:用“STEP 7 Micro WIN SMART”中打开上面的程序,完成后续程序编程,并下载到Smart200 PLC使用。
小贴士:对于程序,S7-200 和Smart200 PLC的两个编程软件可以互相打开,但下载时候必须区分,软件与硬件PLC必须一一对应。
如何在“STEP 7 Micro WIN SP6”中完成Modbus通信编程(A)注意端口选择,主站可以选择PLC的0口和1口,从站只能使用0口。
因此在选择子程序时要注意端口。
如下图。
(B)注意:需要给库分配地址(右键程序块)主站程序从站程序40001是从站中寄存器区的起始地址注意:由子程序参数HoldStart 和MaxHold 指定的保持寄存器区,是在S7-200 CPU 的V 数据存储区中分配,此数据区不能和库指令数据区有任何重叠,否则在运行时会产生错误,不能正常通信。
注意Modbus 中的保持寄存器区按“字”寻址,即MaxHold 规定的是VW 而不是VB 的个数。
modbus连接
利用modbus通讯第一:modbus通讯简介STEP 7-Micro/WIN指令库包含为Modbus通讯专门设计预先配置的子程序和中断例行程序,使与Modbus主设备和从站的通讯更加简便。
Modbus从站协议指令可以配置S7-200,将其用作Modbus RTU从站,与Modbus 主设备通讯。
Modbus主设备协议指令可以配置S7-200,将其用作Modbus RTU主设备,与一个或多个Modbus从站通讯。
Modbus指令安装在STEP 7朚icro/WIN指令树的"协议库"文件夹中。
有了这些新指令,您可以将S7-200用作Modbus设备。
当您在程序中加入Modbus 指令时,会在项目中自动增加一个或多个相关子程序。
Modbus主设备协议库有两个版本。
一个版本使用CPU的端口0,另一个则使用CPU的端口1。
端口1协议库的POU名中带有"_P1"(MBUS_CTRL_P1),表示POU使用CPU上的端口1。
在其它方面,这两个Modbus主设备协议库完全一致。
注意:Modbus从站协议库仅支持端口0通讯。
使用Modbus主设备协议的要求:初始化Modbus主设备协议可以为Modbus主设备协议通讯指定专用CPU端口。
当CPU端口被用于Modbus主设备协议通讯时,就无法用于任何其它用途,包括与STEP 7-Micro/WIN通讯。
MBUS_CTRL指令控制将端口0分配给Modbus 协议或PPI。
MBUS_CTRL_P1指令(来自端口1协议库)控制将端口1分配给Modbus主设备协议或PPI。
Modbus主设备协议指令影响与CPU通讯端口中自由端口通讯相关的所有SM位置。
Modbus主设备协议指令使用3个子程序和1个中断例程。
Modbus主设备协议指令要求两个Modbus主设备指令和支持例程有1620个字节的程序空间。
Modbus主设备协议指令的变量要求284个字节的V存储器程序块。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
保持寄存器与MODBUS从属符号重叠的具体意思?
作者主题
主题:保持寄存器与MODBUS从属符号重叠的具体意思?
2013-11-24 21:56:12楼主
本人在进行两台S7-200的modbus通讯时,主站侧没问题,从站的MBUS_INIT指令的出错代码为5,查资料说是“保持寄存器与modbus 从属符号重叠”,本人不知道是什么意思?同时MBUS_SLAVE指令的出错代码是10,望各位朋友能指点指点,这两条出错代码究竟是什么原因的?谢谢!
回复:保持寄存器与MODBUS从属符号重叠的具体意思?
2013-11-24 22:37:161楼
1.使用Modbus库指令,一定要分配库内存;
2.分配的库内存范围一定不要和可读取的内存范围有重复的地方,否则初始化不成功。
帮助:MaxHold参数设定供Modbus地址04xxx使用的V内存中的字保持寄存器数目。
例如,为了允许主设备存取2000个字节的V内存,将MaxHold设为1000个字的数值(保持寄存器)。
HoldStart参数是V内存中保持寄存器的起始地址。
该数值一般被设为VB0,因此HoldStart参数被设为&VB0(VB0地址)。
其他V内存地址可指定为保持寄存器的起始地址,以便在项目的其他地方使用VB0。
Modbus 主设备可存取V内存MaxHold个字数,从HoldStart开始。
如果HoldStart设为&VB0,MaxHold设为1000,即Modbus主设备可存取V内存从VB0开始,可存取1000个字,2000个字节。
则库内存的开始地址一定要从2000以上开始,否则初始化不成功,返回错误代码为5,即“保持寄存器与Modbus从属符号重叠”。