西门子PLCS7-200在使用EM231或是EM235模块需注意的地方:
在实际的使用中,使用EM231或是EM235模拟量模块进行模拟量信号采集时候,往往会出现以下几种情况:
(1)外面信号不管怎么变化,在模拟量转换后所得到的数字量要么是***小值,要么就是***大值32767。
(2)所得到的数字量波动比较大,不够稳定
出现这两种情况的原因可能在于我们对于这两种模块使用时候的一些细节没有注意,使用这两种模块的时候我们需要注意以下几个方面:
(1)需要设置正确的DIP开关,EM231或是EM235模块上都有DIP开关,其作用主要供用户正确设置其模拟量的输入量程及输入类型。DIP开关的设置应用于整个模块,一个模块只能设置为一种测量范围。DIP开关设置好后,必须重新上电,重新上电后,模块的设置才生效。若没有正确设置DIP开关,那么测量所得到的结果就不是你想要的结果。
EM231和Em235模块的DIP开关设置说明:
(2)正确的接线,对应不同类型的传感器需要按照其正确的接线方式进行接线。如图所示:
对于电压信号的接线:
电流信号接线图:
(3)如果使用电流信号输入的时候,对于未使用的通道需要进行短接,如上图所示
(4)对于使用的是不同的电源,即传感器电源和供电电源不是用一个电源的情况下需要做等电位连接,也就是说把他们各自的M端连接在一起。
(5)若使用的模拟量输入模块接线太长或绝缘不好的情况也可能出现采样所得的数字量波动比较厉害的情况,这种情况下可以考虑使用滤波功能对其进行滤波。在编程软件中的系统块里面可以设置其滤波功能,如图所示:
需要设置其采用数和死区。
采样次数区域包含了由几个采样的平均值计算得出的值。当N 与采样次数 相等时计算该值。死区定义了允许偏离于平均值的***大值。
诊断子功能码
各常用诊断子功能码定义如下:
Return Query Data(00)
诊断内容 | 原样返回查询报文 |
---|---|
子功能码 | 0x00,0x00 |
查询报文数据字段 | 任意16位数据 |
响应报文数据字段 | 同查询报文 |
Restart Communications Option(01)
诊断内容 | 重启通信选项 用于初始化并重新启动从站设备,清除所有通信事件计数器。 如果端口处于Listen Only Mode下,不返回响应;否则在重启之前返回响应 |
---|---|
子功能码 | 0x00,0x01 |
查询报文数据字段 | 0x00,0x00 保持事件记录 |
0xFF,0x00 清除事件记录 | |
响应报文数据字段 | 同查询报文 |
Return Diagnostics Register(02)
诊断内容 | 返回诊断寄存器 |
---|---|
子功能码 | 0x00,0x02 |
查询报文数据字段 | 0x00,0x00 |
响应报文数据字段 | 诊断寄存器的内容 |
Force Listen Only Mode(04)
诊断内容 | 强制只听模式 强制被寻址的从站设备进入只听模式,使得此设备与网络中的其他设备断开,不返回响应 |
---|---|
子功能码 | 0x00,0x0A |
查询报文数据字段 | 0x00,0x00 |
响应 |
Clear Counters and Diagnostic Register(10,0x0A)
诊断内容 | 清除计数器和诊断寄存器 |
---|---|
子功能码 | 0x00,0x0A |
查询报文数据字段 | 0x00,0x00 |
响应报文数据字段 | 同查询报文 |
Return Bus Message Count(11,0x0B)
诊断内容 | 返回总线报文计数 |
---|---|
子功能码 | 0x00,0x0B |
查询报文数据字段 | 0x00,0x00 |
响应报文数据字段 | 返回报文的计数值 |
Return Bus Communication Error Count(12,0x0C)
诊断内容 | 返回总线通信CRC差错计数 |
---|---|
子功能码 | 0x00,0x0C |
查询报文数据字段 | 0x00,0x00 |
响应报文数据字段 | 返回报文的CRC出错总数 |
Return Bus Exception Error Count(13,0x0D)
诊断内容 | 返回总线异常差错计数 |
---|---|
子功能码 | 0x00,0x0D |
查询报文数据字段 | 0x00,0x00 |
响应报文数据字段 | 返回异常响应的总数 |
Return Slave Message Count(14,0x0E)
诊断内容 | 返回从站设备报文总数 |
---|---|
子功能码 | 0x00,0x0E |
查询报文数据字段 | 0x00,0x00 |
响应报文数据字段 | 返回从站设备接收报文总数 |
Return Slave No Response Count(15,0x0F)
诊断内容 | 返回从站设备无响应计数 |
---|---|
子功能码 | 0x00,0x0F |
查询报文数据字段 | 0x00,0x00 |
响应报文数据字段 | 返回加电后没有返回响应的报文数量 |
Return Slave Busy Count(17,0x11)
诊断内容 | 返回从站设备忙计数 |
---|---|
子功能码 | 0x00,0x11 |
查询报文数据字段 | 0x00,0x00 |
响应报文数据字段 | 返回加电后异常响应忙的报文数量 |
Return Bus Character Overrun Count(18,0x12)
诊断内容 | 返回总线字符超限的计数 |
---|---|
子功能码 | 0x00,0x12 |
查询报文数据字段 | 0x00,0x00 |
响应报文数据字段 | 返回超限的报文数量 |
11(0x0B)获取通信事件计数器
功能说明
该功能码主要用于获取从设备通信计数器中的状态字和事件计数的值,本功能不支持广播模式。通过在通信报文之前和之后读取通信事件计数值,可以确定从设备是否正常处理报文。
对于正常完成报文处理和传输的场合,事件计数器增加1;而对于异常响应、轮询命令或读取事件计数器(即0x0B功能码)的场合,则计数器不变。通过【0x08】诊断功能中的子功能码【RestartCommuniaction Option (0x01)】和【Clear Counters and DiagnosticRegister(0x00A)】,可以复位事件寄存器。
响应报文
对于从设备,在正常情况下,响应报文返回2个字节的状态字和2个字节的事件计数。其中,如果从站设备处于忙状态,那么状态字将为0xFFFF,否则状态字将为0x0000.
12(0x0C)获取通信事件记录
功能说明
该功能码主要用于从从设备获取转状态字、事件计数、报文计数以及事件字节字段。其中状态字和事件计数与功能码11(0x0B)获取的值一致。
对于从站设备,在正常情况下响应报文包括一个2字节状态字字段、一个2字节事件计数字段、一个2字节消息计数字段以及0~64个字节的事件字段。因为事件字段是变长的,所以增加了一个1字节的数据长度字段,以方便读取响应数据。
15(0x0F)写多个线圈
功能说明
该功能码,用于将连续的多个线圈或离散输出设置为ON/OFF状态,支持广播模式,在广播模式下,所有从站设备的同一地址被统一修改。本功能码中,起始地址字段由2个字节构成,取值范围为0x00000xFFFF;而寄存器数量字段由2个字节构成,取值范围为0x00010x07B0.
查询报文
查询报文中,包含了请求数据字段,用于定义ON/OFF状态。数据字段中为逻辑1的位对应ON;逻辑0的位对应OFF。其中,ON/OFF与数据字段的对应关系可参考“01(0x01)读取线圈/离散量输出状态”中的内容
对于从设备,在正常情况下响应报文包括功能码、起始地址以及写入的线圈数量。