复杂数据类型
- 运用条件:长度超过32位或者由多个基本数据构成
- 主要类型:时间型(DATE AND TIME)、数组型(ARRAY)、结构型(STRUCT)、字符串型(STRING)
- 用户自定义数据类型(UDT):用户自定义数据类型
参数数据类型
1.TIMER:长度:16位 示例:Contact time :TIMER SI#Contact_time
2.COUNTER: 长度:16位 示例:NoComPacrs:COUNTER LC#No_Com_Pacrs
3.BLOCK_FB/BLOCK_FC/BLOCK_DB/BLOCK_SDB: 长度:16位 示例:Recall:BLOCK_FB UC#Recall
Pointer:长度:48位 示例:Measure:POINTER L P##Measure
ANY: 长度:80位 示例: Measured Values:ANY L P##Meas_Values
不同数据类型表示方法
符号 | 说明 |
B#16#,W#16#,DW#16# | 十六进制字节/字/双字常数 |
D# | IEC日期常数 |
L# | 32位整数常数 |
P# | 地址指针常数 |
S5T# | S5时间常数(16位) |
T# | IEC时间常数 |
TOD# | 实时时间常数(16位/32位) |
C# | 计数器常数(BCD编码) |
2# | 二进制常数 |
B(b1,b2) B(b1,b2,b3,b4) | 常数,2B或4B |
SETP7硬件组态注意事项
- 1号插槽电源模块PS 2号插槽CPU 3号插槽IM 4号---依次为信号模块/功能模块/通讯模块
- 设备维护时需要更换模块时 需要重新组态和下载程序
S7-300存储区域
I/O区域(P) PII PIQ 位(Bit)存储器 数据块
注意点:1.模拟量的采集和输出时会用到PIW256/PQW258
2.通讯数据区域也可用到PIW/PQW
S7-300位逻辑指令
- S7300里面的上升沿和下降沿是需要设置地址的,而200里的上升沿和下降沿是不需要设置地址的
- .ENG 地址下降沿检测/.POS 地址上升沿检测
S7-300定时器
S_PULSE 脉冲定时器
S_PEXT 扩展脉冲定时器
S_ODT 接通延时定时器
S_ODTS 保持性接通延时定时器
S_PULSE 脉冲定时器
S_OFFDT 断电延时定时器
在CPU的存储器中,为定时器保留有存储区(T区),该定时器为每个定时器保留一个十六位的字。梯形逻辑指令支持256个定时器,可以参考有关技术手册,来建立有效数量的定时器
可以访问定时器存储区:1.定时器指令 2.利用时钟计时刷新定时器字
定时器的时间值
S7-300的时间刷新按照时基规定的时间间隔为单位减少时间值。时间值逐渐连续减少一直到等于0,时间值可以二进制、十六进制和BCD码格式输入到累加器1的低位字。可预装时间值格式示例:
W#16#wxyz (其中W=时基,即为时间间隔或分辨率。其中xyz为BCD码的格式的时间值)。
S5T#aH_bM_dMS (其中H=小时,M=分钟,S=秒,MS=毫秒,a,b,c,d由用户定义)
时基自动选择,时间值按其所取时基取整为下一个较小的数。
定时器的时基
定时器字的位12和位13包含二进制码的时基,时基定义时间值递减的单位,最小时基为10ms,最大时基为10S.
时基 | 时基的二进制码 |
10ms | 00 |
100ms | 01 |
1S | 10 |
10S | 11 |
注:定时器的最大范围不可超过2h46m30s,对于范围极限分辨率太高的时间值(例如:2h10ms),将向下舍入为一个有效的分辨率
分辨率 | 定时范围 |
0.01S | 10MS-9S_990MS |
0.1S | 100MS-1M_39S_900MS |
1S | 1S-16M_39S |
10S | 10S_2H_46M_30S |
定时器单元中的位组态
正在上传…重新上传取消
定时器功能说明
正在上传…重新上传取消
计数器
存储区
存储区域:C区
梯形逻辑指令集支持256个计数器(C0-C255)
计数器指令访问计数器存储区唯一功能
计数器的计数值
计数器字的位0至位9包含二进制码的计数值,当计数器置位时,计数值传送至计数器字。计数值范围从0-999
比较指令
比较双方需要同种数据类型且为有符号数
I是INT型/D是DINT型/R是Real型
传送指令
MOVE(赋值指令)可以由使能(EN)输入端的信号激活,将在输入端IN的特定值复制到输出端OUT的特定地址中,ENO和EN具有相同的数据状态。
支持的数据类型:BYTE(字节)、WORD(字)、DWORD(双字)数据对象,用户自定义的数据类型(例如数组或结构)必须使用系统功能“BLKMOVE”(SFC20)进行复制。
功能:赋值(可用于清零)、复制 注意:输入和输出的数据类型、存储空间、可以不一样
绝对值、平方、平方根
绝对值运算(ABS)、平方(SQR)、平方根(SQRT)
适用数据类型:浮点型(Real)
三角函数
正弦(SIN)和反正弦(ASIN)
余弦(COS)和反余弦(ASIN)
正切(TAN)和反正切(ATAN)
使用时需要进行换算
转换指令
转换指令可以读取参数IN的内容,并进行转换或更改符号。其结果可以在OUT中查询。其具体指令如下
BCD_I | BCD码转换为整数 |
I_BCD | 整数转换为BCD码 |
BCD_DI | BCD码转换为双整数 |
I_DINT | 整数转换为双整数 |
DI_BCD | 双整数转换为BCD码 |
DI_Real | 双整数转换为浮点型 |
INV_I | 整数的二进制反码/逐位取反 |
INV_DI | 双整数的二进制反码/逐位取反 |
注意:使用时位数要保持一致,整数16位,双整数32位
NEG_I | 整数的二进制补码(整个数值进行取反) |
NEG_DI | 双整数的二进制补码 |
NEG_R | 浮点数求反 |
ROUND | 舍入为双整数 |
TRUNC | 舍去小数取整为双整数 |
CEIL | 上取整(去除小数点加1) |
FLOOR | 下取整(直接去除小数点) |
注意:与200不同的是,TRUNC指令在四舍五入时,输出的数值会返回到距离其最近的偶数的值
BCD(Binary Code Decimal Number)码含义:
用四位二进制的组合来表示一位十进制数,即用二进制编码的十进制数。
BCD码多出现在时钟指令
移位指令
普通移位指令,高位溢出,低位自动补零
整型和双整型的移位,右移时符号位自动填补,因为INT和DINT是带符号数