西门子滤波器6SL3000-0BE21-6DA0
BCD码(Binary-Coded Decimal)是二进制编码的十进制数的缩写,BCD码用4位二进制数表示一位十进制数。BCD码各位的数值范围为2#0000~2#1001,对应于十进制数0~9。BCD码不能使用十六进制的A~F(2#1010~2#1111)这6个数字。BCD码本质上是十进制数,因此相邻两位逢十进一。
BCD码的*高位二进制数是符号位,负数的符号位为1,正数为0。16位BCD码的范围为–999~+999。
下图的拨码开关将显示的数字转换为4位二进制数。PLC用12个数字量输入点读取的是3位BCD码,它的值为2#1000 0010 1001,即十六进制数16#829。
BCD码没有单独的表示方法,而是借用了十六进制的表示方法,因此二者很容易混淆。
下图是S7-300/400的BCD码和整数的相互转换指令,可以看到在指令中BCD码均用十六进制的形式表示。
在程序中,怎么知道一个数字是BCD码还是十六进制数呢?
1)看数据的来源和用途。BCD码一般用于输入和输出,例如来自拨码开关的数据是BCD码,送给显示电梯楼层的译码器芯片的是BCD码。
2)看手册的规定,例如数据类型DATE_AND_TIME中的日期和时间值是BCD码,计数器的预设值PV和当前计数值CV_BCD为BCD码。
怎样监视BCD码?
在变量表和程序状态监控中,用十六进制格式监视BCD码。
怎样输入BCD码?
从上图可以看出,BCD码用十六进制格式输入,其*高位(符号位)为16#F(2#1111)。BCD码的低3位各位只能是0~9,如果是16#A~16#F则会出错。
计数器的预设值PV是0~999的BCD码,可以用格式为C#的常数(C#1~C#999)作为计数器的预设值。
下图用MW42提供计数器的预设值PV,如果用MOVE指令将十进制数348(对应的十六进制数为16#15C)传送给MW42,进入RUN模式时,操作系统将它转换为BCD码时出错(16#15C不是BCD码),不能切换到RUN模式。
输入预设值348时,应改为将C#348传送给MW42,它会自动地变为W#16#348,当然也可以直接输入16#348。没有必要用I_BCD指令将348转换为BCD码W#16#348后,再传送给MW42。
**式编码器输出反映**位置的多位二进制数,由于制造上的原因,**式编码器一般采用格雷码。格雷码相邻的两个二进制数只有一位有变化。用PLC的输入模块读取到格雷码后,需要将它转换为普通的二进制数,然后将它转换为实际的位置值。
对于S7-200,下载附件graycode.zip后,解压缩得到库文件graycode.mwl。执行STEP 7 - Micro/WIN的菜单命令“文件”→“添加/删除库”,在指令树的“库”文件夹中可以看到安装好的库“GRAYCODE”。
"graycode.mwl" 指令库包括用于字节、字和双字格式的编码和解码的功能块。
功能块 BIN_GRAY_B、BIN_GRAY_W 和 BIN_GRAY_DW 把输入的字节、字和双字类型的二进制数编码成格雷码。
功能块 GRAY_BIN_B、GRAY_BIN_W 和 GRAY_BIN_DW 把输入的格雷码解码成字节、字和双字类型的二进制数
S7-300
• 适用于中低端性能要求的模块化小型 PLC 系统
• 各种性能的模块可以非常好地满足和适应自动化控制任务
• 简单实用的分布式结构和多接口网络能力,应用十分灵活
• 方便用户操作和无风扇的简易设计
• 当控制任务增加时,可自由扩展
• 大量的集成功能,功能非常强大 S7-300F
•故障安全型自动化系统,可满足工厂日益增加的安全需求
对于紧凑CPU 313C-2 PtP和CPU 314-2 PtP作业同步处理需要注意什么?
在用户程序中,不可以同时编程SEND作业和FETCH作业。
即:
只要SEND作业(SFB 63)没有*终止(DONE或ERROR),就不能调用FETCH作业(SFB 64)
(甚至在REQ=0的时候)。
只要FETCH作业(SFB 64)没有*终止(DONE或ERROR),就不能调用SEND作业(SFB 63)
(甚至在REQ=0的时候)。
在处理一个主动作业(SEND作业、SFB 63或FETCH作业、SFB 64)时,同时可以处理一个被动作业
(SERVE作业、SFB 65)。
14:可以将MICR.master420到440作为组态轴(位置外部检测)和CPU 317T一起运行吗?
可以,但在动力和精度方面,对组态轴的要求差别非常大。在高要求情况下,伺服驱动SIMODRIVE 611U、MASTERDRIVES MC或SINAMICS S必须和CPU 317T一起运行。在低要求情况下,MICROMASTER系列也能满足动力和精度要求。
15:如何在已配置为DP从站的两个CPU模块间组态直接数据交换(节点间通信)?
两个CPU站配置为DP从站,而且由同一个DP主站操作,它们之间的通信通过配置交换模式为DX可以完成直接数据交换。
16:如何使用SFC65,SFC66,SFC67 和 SFC68 进行通信?
对于单向基本通信,使用系统功能 SFC67 (X_GET)从一个被动站读取数据,使用系统功能SFC68(X_PUT)将数据写入一个被动站(服务器)。这些块只有在主动站中才调用。对于一个双向基本通信,调用站中的系统功能SFC65 (X_SEND),在该站中想将数据发送到另一个主动站。在同样为主动的主动接收站中,数据将通过系统功能SFC66 (X_RCV)记录。
什么是自由分配 I/O 地址?
地址的自由分配意味着您可对每种模块(SM/FM/CP)自由的分配一个地址。地址分配在 STEP 7 里进行。先定义起始地址,该模块的其它地址以它为基准。
自由分配地址的优点:因为模块之间没有地址间隙,就可以优化地使用可用地址空间。在创建标准软件时,分配地址过程中可以不考虑所涉及的 S7-300 的组态。
18:诊断缓冲器能够干什么?
更快地识别故障源,因而提高系统的可用性。评估STOP之前的后事件,并寻找引起STOP的原因。
诊断缓冲器是一个带有单个诊断条目的循环缓冲器,这些诊断条目显示在事件发生序列中;一个条目显示的是近发生的事件。如果缓冲器已满, 早发生的事件就会被新的条目所覆盖。根据不同的CPU,诊断缓冲器的大小或者固定,或者可以通过HW Config中通过参数进行设置。
19:诊断缓冲器中的条目包括哪些?
1) 故障事件
2) 操作模式转变以及其它对用户重要的操作事件
3) 用户定义的诊断事件(用SFC52 WR_USMSG)
在操作模式STOP下,在诊断缓冲器中尽量少的存储事件,以便用户能够很容易在缓冲器中找到引起STOP的原因。因此,只有当事件要求用户产生一个响应(如计划系统内存复位,电池需要充电)或必须注册重要信息(如固件更新,站故障)时,才将条目存储在诊断缓冲器中。
西门子模块6ES7313-5BG04-0AB0
4. 模拟量模块分辨率和转换精度的区别?
分辨率是A/D模拟量转换芯片的转换精度,即用多少位的数值来表示模拟量。以下举例说明10位分辨率和11位分辨率的区别。S7-200 SMART CPU模拟量0~20mA的通道值范围为0~27648。如果分辨率为10位,则表示当外部电流信号的变化大于0.01953125mA时,模拟量A/D转换芯片才认为外部信号有变化。如果分辨率为11位,则表示当外部电流信号的变化大于0.009765625mA时,模拟量A/D转换芯片即认为外部信号有变化。
5. S7-200 SMART I/O扩展模块DIAG指示灯以红色闪烁的原因?
S7-200 SMART I/O扩展模块的DIAG指示灯以红色闪烁的原因有两个,建议查看CPU的信息来确认具体报错原因,查看CPU信息的方法请见硬件诊断或诊断方法举例。
(1) 模块缺少24V直流供电电源;I/O扩展模块缺少24V直流供电电源时,所有通道指示灯也以红色闪烁。建议核对模块接线图,尤其是模块供电端含两排端子的,确定供电接线是否正确,以EM DR32为例
模拟量模块上通道断线或是输入值超量程。模拟量模块上通道断线或是输入值超量程,除了会引起模块的DIAG指示灯以红色闪烁,断线或是超量程的通道的指示灯也以红色闪烁,以提示用户存在故障通道。
Modbus TCP通信概述
MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品,显而易见,它覆盖了使用TCP/IP协议的“Intranet"和“Internet"环境中MODBUS报文的用途。协议的用途是为诸如PLC’s,I/O模块,以及连接其它简单域总线或I/O模块的网关服务的。
MODBUS/TCP 使MODBUS_RTU协议运行于以太网,MODBUS TCP使用TCP/IP和以太网在站点间传送MODBUS报文,MODBUS TCP结合了以太网物理网络和网络标准TCP/IP以及以MODBUS作为应用协议标准的数据表示方法。MODBUS TCP通信报文被封装于以太网TCP/IP数据包中。与传统的串口方式,MODBUS TCP插入一个标准的MODBUS报文到TCP报文中,不再带有数据校验和地址。
1. 通讯所使用的以太网参考模型
Modbus TCP传输过程中使用了TCP/IP以太网参考模型的5层:
第一层:物理层,提供设备物理接口,与市售介质/网络适配器相兼容
第二层:数据链路层,格式化信号到源/目硬件址数据帧
第三层:网络层,实现带有32位IP址IP报文包
第四层:传输层,实现可靠性连接、传输、查错、重发、端口服务、传输调度
第五层:应用层,Modbus协议报文
2. Modbus TCP数据帧
Modbus数据在TCP/IP以太网上传输,支持Ethernet II和802.3两种帧格式,Modbus TCP数据帧包含报文头、功能代码和数据3部分,MBAP报文头(MBAP、Modbus Application Protocol、Modbus应用协议)分4个域,共7个字节,如图1所示:
图1: MODBUS TCP报文
由于使用以太网TCP/IP数据链路层的校验机制而保证了数据的完整性,MODBUS TCP 报文中不再带有数据校验"CHECKSUM",原有报文中的“ADDRESS"也被“UNIT ID"替代而加在MODBUS应用协议报文头中。
3. Modbus TCP使用的通讯资源端口号
在Modbus服务器中按缺省协议使用Port 502 通信端口,在Modbus客户器程序中设置任意通信端口,为避免与其他通讯协议的冲突一般建议2000开始可以使用。
4. Modbus TCP使用的功能代码
按照使用的通途区分,共有3种类型分别为:
1) 公共功能代码:已定义好功能码,保证其性,由Modbus.org认可;
2) 用户自定义功能代码有两组,分别为65~72和100~110,无需认可,但不保证代码使用性,如变为公共代码,需交RFC认可;
3) 保留功能代码,由某些公司使用某些传统设备代码,不可作为公共用途。
按照应用深浅,可分为3个类别:
1) 类别0,客户机/服务器*小可用子集:读多个保持寄存器(fc.3);写多个保持寄存器(fc.16)。
2) 类别1,可实现基本互易操作常用代码:读线圈(fc.1);读开关量输入(fc.2);读输入寄存器(fc.4);写线圈(fc.5);写单一寄存器(fc.6)。
3) 类别2,用于人机界面、监控系统例行操作和数据传送功能:强制多个线圈(fc.15);读通用寄存器(fc.20);写通用寄存器(fc.21);屏蔽写寄存器(fc.22);读写寄存器(fc.23)。
5. Modbus TCP通讯应用举例
在读寄存器的过程中,以Modbus TCP请求报文为例,具体的数据传输过程如下:
1) Modbus TCP客户端实况,用Connect()命令建立目标设备TCP 502端口连接数据通信过程;
2) 准备Modbus报文,包括7个字节MBAP内请求;
3) 使用send()命令发送;
4) 同一连接等待应答;
5) 同recv()读报文,完成一次数据交换过程;
6) 当通信任务结束时,关闭TCP连接,使服务器可以为其他服务