泰州地区西门子模块代理商
工业以太网是一个功能强大的区域和单元网络,符合 IEEE 802.3(以太网)和 802.11 a/b/g/h(无线局域网)标准,可用于工业应用。以太网是用于全球联网基本的因特网技术。
如今,在办公区中已有众多不同的企业内网、企业外网和互联网可供选择,通过工业以太网,也可以将它们用于工厂和过程自动化。
以太网技术已经与交换机、全双工模式和自动侦测功能成功地结合使用了多年,使网络性能能够满足您的要求。由于兼容性一致,可以逐步引进新技术,因此用户可以选择所需的数据传输速率。
以太网目前占有 90% 以上的市场份额,是当今局域网领域中的全球。
以太网具有很大优势:
连接方法简捷,可快速调试
由于现有网络容易扩展,具有高度可用性
高数据传输速率及必要时可通过交换技术获得扩展性能,以太网的通讯性能几乎不受限制
可实现不同应用领域的联网,例如办公环境与生产环境
由于采用 WAN(广域网,如 ISDN 或 Internet)进行连接,可在整个公司范围内实现与安全部件的通讯,且可保持数据完整性
通过持续的兼容性开发,实现投资安全
通过工厂范围内的时钟控制,可实现整个工厂范围内基于时间的事件分配
SIMATIC NET 依赖这种可靠的技术。西门子已经在全球有电磁干扰的恶劣工业环境中提供了几百万个连接。
SIMATIC NET 对以太网技术进行了重大改进,以适应工业环境:
用于严酷工业环境的网络部件。
通过具有 RJ45 技术的 FastConnect 电缆接线系统进行快速本地组装
通过高速冗余和冗余电源实现故障安全网络
通过简单、有效的信令概念,持续监控网络部件
面向未来的网络部件,配有新型 SCALANCE X 工业以太网交换机系列
控制层上大量数据的千兆通讯,如 WinCC,web 应用程序,多媒体应用程序等
工业以太网提供有以下通讯功能/服务:
编程器/OP 通讯
包括集成的通讯功能,可通过 SIMATIC、SIMOTION 和 SINUMERIK 自动化系统与每个 HMI 设备和 SIMATIC 编程器(STEP 7)进行数据通讯。PROFINET/工业以太网和 PROFIBUS 支持编程器/OP通讯.
S7 通讯
S7 通讯是一项用于 S7-400 的集成通讯功能(系统功能块),或用于 S7-300 的可装入功能块,这项功能已经在 SIMOTION、SINUMERIK 和 SIMATIC S7/WinAC 环境下进行了优化。它可用于连接 PC 与工作站。 每个作业的用户数据量大为 64 KB。
S7 通讯提供简单、功能强大的通讯服务以及与软件接口无关的网络。
开放式通讯
通过开放式通讯 (SEND/RECEIVE),SIMATIC S7 控制器可与其他 SIMATIC S7 和 SIMATIC S5 控制器(S5 兼容通讯)、PC 和第三方系统进行通讯。 另外,为了方便地连接 HMI 站,还提供有 FETCH 和 WRITE 功能。
Modbus RTU测试结果
在STEP 7 Professional V11 UPD4软件中打开该项目CPU1215C DC/DC/DC的“监控表”,触发“MB_MASER”指令的输入位M10.0。PLC主站将从站ZKA-4488-RS485地址30001中的数值11,30002中的数值12,30003中的数值13,30004中的数值14,30005中的数值15,分别读取到了地址DB3.DBW0,DB3.DBW2,DB3.DBW4,DB3.DBW6,DB3.DBW8中,如下图12所示:
图12 Modbus RTU测试结果
S7-1200 Modbus RTU通信模式的多地址或多站点轮询多个CM 1241 RS485 通讯模块之间可以使用 PROFIBUS 电缆相互连接。可以将 1 个主站和多 31 个 MODBUS 从站使用 PROFIBUS 电缆连接组网。
S7-1200 Modbus RTU轮询需要通过上一条”MB_MASTER“指令输出位“Done“=1来触发下一条“MB_MASTER“指令。具体说明及编程思路请参考以下链接:
如何使用STEP 7(TIA Portal)V11为SIMATIC S7-1200建立Modbus RTU通讯?
MB_COMM_LOAD和MB_MASTER指令STATUS错误代码STATUS(W#16#) | 说明 |
0000 | 端口无错误 |
8180 | 端口ID值无效 |
8181 | 波特率值无效 |
8182 | 奇偶校验值无效 |
8183 | 流控制值无效 |
8184 | 响应超时值无效 |
8185 | MB_DB参数不是MB_MASTER或MB_SLAVE的背景数据块 |
表5 MB_COMM_LOAD指令STATUS错误代码
STATUS(W#16#) | 说明 | |
0000 | 无错误 | |
80C8 | 从站超时。检查波特率,奇偶校验和从站的接线 | |
80D1 | 接收方发出了暂停主动传输的流控制请求并在指定的等待时间内未重新激活该传输。 如果接收方在等待时间内未检测到 CTS,则在硬件流控制期间也会生成该错误。 | |
80D2 | 由于没有从 DCE 接收到 DSR 信号,传送请求终止 | |
80E0 | 接收缓冲区已满,消息被终止 | |
80E1 | 奇偶校验错误,消息被终止 | |
80E2 | 组帧错误,消息被终止 | |
80E3 | 超时错误,消息被终止 | |
80E4 | 指定长度超出总缓冲区大小,消息被终止 | 无效端口ID值 |
8186 | Modbus站地址无效 | |
8188 | 对于广播调用,参数 MODE 的值无效。 | |
8189 | 数据地址值无效 | |
818A | 数据长度值无效 | |
818B | 指向本地数据源/目标的指针无效 | |
818C | DATA_PTR的指针无效:使用指向位存储区或访问类型为“标准 - 与 S7-300/400 兼容”的数据块的指针。 | |
8200 | 端口正忙于处理传送请求 |
表6 MB_MASTER指令STATUS错误代码(指令的通信和组态错误消息)
STATUS(W#16#) | 从站的响应代码 | 说明 |
8380 | - | CRC错误 |
8381 | 01 | 不支持此功能码 |
8382 | 03 | 数据长度错误 |
8383 | 02 | 数据地址错误或地址超出 DATA_PTR 的有效范围 |
8384 | >03 | 数据值错误 |
8385 | 不支持此数据诊断代码 | |
8386 | 响应中的功能代码与传送中的功能代码不匹配 | |
8387 | 响应的从站错误 | |
8388 | 从站对写请求的响应不正确 |
表7 MB_MASTER指令STATUS错误代码(Modbus 协议的错误消息)
4 连接超时参数
S7-1200 Mobus RTU通信网络中包含多个从站站点时,由于轮询的网络特性,只能同时读或写一个站点数据。因此有如下因素,会影响到终整体的轮询时间:
1. 通信速率(波特率)设置时间
2. 每个站点的通信数据量
3. 站点数量
4. 通信距离
5. 各站点连接时间
无论是由于信号干扰,硬件质量引起的从站掉站或是由于工程需要暂时关闭站点,此时都会由于“各站点连接时间”的增加而使通信系统的轮询时间大大延长。在S7-1200的Modbus RTU通信中,主要有三个参数与“各站点连接时间”的设置相关。
1. 从站响应时间RESP_TO如图1所示,V2.x版本的MB_COMM_LOAD初始化块可设置从站响应时间RESP_TO参数:
设置单次连接从站的可响应时间,范围为5ms到65535ms(默认值为1000ms);即如从站在此时间段内未作出响应,则MB_MASTER将在发送指定次数的重试请求后终止请求并提示错误信息80C8。
图1. RESP_TO参数设置
注意:如图2所示,Modbus从站的执行频率须至少小于RESP_TO设置的响应时间(需要考虑响应延迟时间),才可以正常通讯。
图2. 从站响应时间
2.重试次数RETRIES在初始化功能块MB_COMM_LOAD的背景数据块中,可设置重试次数RETRIES参数:
主站在返回无响应错误代码0x80C8 之前的重试次数。(默认值为2次)
注意:此参数表示初次连接无响应后,再次连接的次数;即以默认2次为例,实际尝试连接次数为3次。
图3 RETRIES参数设置
注意:在更改RETRIES参数后,需要重新使能MB_COMM_LOAD功能块的REQ管脚,否则更改参数不生效。
3. 主站定时参数Blocked_Proc_Timeout当由于某些原因(如已发出主站请求,但在彻底完成该请求前停止调用主站功能块时),造成Done及Error均没有置1时,需要提供一个定时时间,在时间到达后置位,以便执行下一个功能块或轮询下一个站点。
MB_Master的背景数据块中提供了主站定时参数Blocked_Proc_Timeout(范围0S到5.5S,默认3S)
此前的RESP_TO 是针对从站响应时间的,而Blocked_Proc_Timeout则是针对主站的定时时间,此功能参数用于防止单个 MB_Master 指令独占或锁定对端口的访问。
图4. Blocked_Proc_Timeout参数设置
5 Modbus RTU 主站常问问题
S7-1200 是否支持 Modbus ASCII 通信模式?
西门子不提供支持上述通信模式的的现成指令,需要用户自己用自由口模式编程。
Modbus RTU指令V1和V2两个版本有什么区别?
Modbus RTU指令版本 V2 将参数 “REQ” 和 “DONE” 添加到“MB_COMM_LOAD”指令。而且,“MB_MASTER”和“MB_SLAVE ”指令的“MB_ADDR ”参数现在允许一个 UInt 值以进行扩展寻址。
同一CPU程序中是否可以同时使用V1和V2两个不同版本的Modbus RTU指令?
不能在同一CPU 程序中同时使用V1(V1.x)和V2(V2.y)指令版本。用户程序的 Modbus 指令必须具有相同的主版本号;主版本组内的各个指令可具有不同的次版本号。
S7-1200 通信模块CM1241是否可作为Modbus RTU主站或作为Modbus RTU从站?
对S7-1200 通信模块CM1241组态并编程调用“MB_COMM_LOAD”指令,可将其设置为Modbus RTU通信模式。通过编程调用“MB_MASTER”指令,S7-1200 通信模块CM1241可作为Modbus RTU主站,或调用“MB_SLAVE”指令,S7-1200 通信模块CM1241可作为Modbus RTU从站。
注意:无论S7-1200 通信模块CM1241作为Modbus RTU主站还是从站,都需要调用“MB_COMM_LOAD”指令进行编程。
由于某一个从站掉站引起的轮询周期时间延长,如何减小此影响?
通常,S7-1200可同时调整两个参数:从站响应时间 RESP_TO和重试次数 RETRIES,用于减小Modbus从站掉站或暂时关闭而增大的轮询周期时间。
例:系统默认的尝试连接次数为3次,每次1S,总计3S;
可根据项目实际工况适当减小从站响应时间RESP_TO。这一时间无法估算,建议多次测试,确认每个从站都能够正常稳定连接情况下,将此时间设置的尽量小。
以设置500ms为例。再将RETRIES设置为0。即对于每个从站,主站只尝试连接一次,总计耗时500ms。
MB_MASTER报错8200(端口正忙于处理传送请求),如何处理?
此情况是由于MB_MASTER的DONE或ERROR均未置位从而与后续MB_MASTER冲突导致。确保接通下一个MB_MASTER的时间大于Blocked_Proc_Timeout的设定时间(默认3S)。
如何检查S7-1200 通信模块CM1241是否已被成功设置为Modbus RTU通信模式?
可在程序或监控表中查看“MB_COMM_LOAD”指令的输出位“DONE”,“ERROR”以及“STATUS”状态来判断S7-1200 通信模块CM1241是否已被成功设置为Modbus RTU通信模式。
如果该模块被成功设置为Modbus RTU通信模式:“MB_COMM_LOAD”指令输出位“DONE”=1,“ERROR”=0,输出状态字“STATUS”=0;
如果该模块未被成功设置为Modbus RTU通信模式:“MB_COMM_LOAD”指令输出位“DONE”=0,“ERROR”=1,输出状态字“STATUS”输出错误代码。具体错误原因可查看“MB_COMM_LOAD指令STATUS错误代码”表。
执行“MB_MASTER”指令,总是显示输出位“Busy”=1,为什么?
因为端口正忙于处理传送请求。出现该错误时请检查“MB_MASTER“指令输入位”REQ“是否为上升沿触发,或是否有其它的多个“MB_MASTER”指令在执行。
通过执行“MB_MASTER”指令无法写入或读取Modbus RTU丛站地址的数据,但程序中监视“MB_MASTER”指令错误位“Error”=0,错误代码“STATUS”=16#0,为什么?
“MB_MASTER”指令上一请求因错误而终止后,ERROR 位将保持为 TRUE 一个扫描周期时间,并且 STATUS 参数中的错误代码值仅在 ERROR =TRUE 的一个扫描周期内有效,因此无法通过程序或监控表查看到。可采用如下所示的编程方式将ERROR 和 STATUS 参数读出。
图13 捕捉错误代码
S7-1200 作为Modbus RTU 主站,如何对Modbus RTU从站进行0-65535扩展寻址?
通常,“MB_MASTER”指令的背景数据块“MB_MASTER_DB”中的“EXTENDED_ADDRESSING”默认为0,可以对Modbus RTU从站地址0-247进行访问。
将“MB_MASTER”指令的背景数据块“MB_MASTER_DB”中的“EXTENDED_ADDRESSING”设置为1,才能对Modbus RTU从站进行0-65535扩展寻址。可按照如下步骤设置“EXTENDED_ADDRESSING”:
首先找到“系统块”→“程序资源”,双击“MB_MASTER_DB”,在“MB_MASTER”指令的背景数据块“MB_MASTER_DB”中查看“EXTENDED_ADDRESSING”。
图14 扩展地址区
在“监控表”内输入“MB_MASTER_DB.EXTENDED_ADDRESSING”,将该位置1。