模拟量比例换算
因为A/D(模/数)、D/A(数/模)转换之间的对应关系,S7-200CPU内部用数值表示外部的模拟量信号,两者之间有一定的数学关系。这个关系就是模拟量/数值量的换算关系。
例如,使用一个0 - 20mA的模拟量信号输入,在S7-200 CPU内部,0 - 20mA对应于数值范围0 -32000;对于4 - 20mA的信号,对应的内部数值为6400 - 32000。
如果有两个传感器,量程都是0 - 16MPa,但是一个是0 - 20mA输出,另一个是4 -20mA输出。它们在相同的压力下,变送的模拟量电流大小不同,在S7-200内部的数值表示也不同。显然两者之间存在比例换算关系。模拟量输出的情况也大致相同。
上面谈到的是0 - 20mA与4 - 20mA之间换算关系,但模拟量转换的目的显然不是在S7-200 CPU中得到一个0 -32000之类的数值;对于编程和操作人员来说,得到具体的物理量数值(如压力值、流量值),或者对应物理量占量程的百分比数值要更方便,这是换算的***终目标。
如果使用编程软件Micro/WIN32中的PID Wizard(PID向导)生成PID功能子程序,就不必进行0 - 20mA与4 -20mA信号之间的换算,只需进行简单的设置。
通用比例换算公式
模拟量的输入/输出都可以用下列的通用换算公式换算:
Ov = [(Osh - Osl)*(Iv - Isl)/(Ish - Isl)] + Osl
其中:
Ov: | 换算结果 |
Iv: | 换算对象 |
Osh: | 换算结果的高限 |
Osl: | 换算结果的低限 |
Ish: | 换算对象的高限 |
Isl: | 换算对象的低限 |
【MODBUS协议整理——汇总】
1.MODBUS功能码简述
下表列出MODBUS支持的部分功能代码:以十进制表示。
表1.1 MODBUS部分功能码
代码 | 中文名称 | 寄存器PLC地址 | 位操作/字操作 | 操作数量 |
01 | 读线圈状态 | 00001-09999 | 位操作 | 单个或多个 |
02 | 读离散输入状态 | 10001-19999 | ||
03 | 读保持寄存器 | 40001-49999 | 字操作 | |
04 | 读输入寄存器 | 30001-39999 | ||
05 | 写单个线圈 | 单个 | ||
06 | 写单个保持寄存器 | |||
15 | 写多个线圈 | 多个 | ||
16 | 写多个保持寄存器 |
1.1功能码说明
功能码可以分为位操作和字操作两类。位操作的小单位为BIT,字操作的小单位为两个字节。
【位操作指令】 读线圈状态01H,读(离散)输入状态02H,写单个线圈06H和写多个线圈0FH。
【字操作指令】 读保持寄存器03H,写单个寄存器06H,写多个保持寄存器10H。
1.2寄存器地址分配
表1.2 MODBUS寄存器地址分配
寄存器PLC地址 | 寄存器协议地址 | 适用功能 | 寄存器种类 | 读写状态 |
00001-09999 | 0000H-FFFFH | 01H 05H 0FH | 线圈状态 | 可读可写 |
10001-19999 | 02H | 离散输入状态 | 可读 | |
30001-39999 | 04H | 输入寄存器 | ||
40001-49999 | 03H 06H 0FH | 保持寄存器 |
1.3寄存器种类说明
表1.3 MODBUS寄存器种类说明
寄存器种类 | 说明 | PLC类比 | 举例说明 |
线圈 状态 | 输出端口。可设定端口的输出状态,也可以读取该位的输出状态。可分为两种不同的执行状态,例如保持型或边沿触发型。 | DO 数字量输出 | 电磁阀输出,MOSFET输出,LED显示等。 |
离散 输入状态 | 输入端口。通过外部设定改变输入状态,可读但不可写。 | DI 数字量输入 | 拨码开关,接近开关等。 |
保持 寄存器 | 输出参数或保持参数,控制器运行时被设定的某些参数。可读可写。 | AO 模拟量输出 | 模拟量输出设定值,PID运行参数,变量阀输出大小,传感器报警上限下限。 |
输入 | 输入参数。控制器运行时从外部设备获得的参数。可读但不可写。 | AI 模拟量输入 | 模拟量输入 |
1.4 PLC地址和协议地址区别
PLC地址可以理解为协议地址的变种,在触摸屏和PLC编程中应用较为广泛。
1.4.1 寄存器PLC地址
寄存器PLC地址指存放于控制器中的地址,这些控制器可以是PLC,也可以使触摸屏,或是文本显示器。PLC地址一般采用10进制描述,共有5位,其中位代码寄存器类型。位数字和寄存器类型的对应关系如表1所示。PLC地址例如40001、30002等。
1.4.2 寄存器协议地址
寄存器协议地址指指通信时使用的寄存器地址,例如PLC地址40001对应寻址地址0x0000,40002对应寻址地址0x0001,寄存器寻址地址一般使用16进制描述。再如,PLC寄存器地址40003对应协议地址0002,PLC寄存器地址30003对应协议地址0002,虽然两个PLC寄存器寄存器通信时使用相同的地址,但是需要使用不同的命令访问,所以访问时不存在冲突。