PLC_30秒倒计时钟-七段码译码指令
- 格式:doc
- 大小:135.00 KB
- 文档页数:4
汇川PLC时间换算指令
汇川PLC 中,实现时间换算的指令是\" GetTimeIndirector ()\",它在指定的地址和日期范围内读取当前系统时钟信号的时间值,并将其转换为标准格式的时间,再传送给外部设备或上位机显示。
1、GetTimeIndirector 函数,是一个用于从指定的时间到指定的时间进行时间比较的函数。
它返回两个时间之间的差值。
函数原型: int getTimeIndirector (timevaltimeval,* stderr, Timeflagsinquent);参数: timeval—指定要查询的时间; stderr—指定要比较的时间段; Timeflagsinquent—指定比较的标志位,可以是任意的整数,如果不指定标志位,则使用默认值。
2、该函数是一个计数器,用来计算两个时间间隔的总和。
如果已知两个时间的总和,函数getTimeComplete ()返回当前时间,如果未知两个时间的总和,函数getTimeCalfocus ()返回两个时间间隔之间的最小值。
3、注意:函数getTimeCalfocus ()不能用于时间换算,因为它只是比较时间间隔的大小,而没有提供具体的操作。
4、程序例子:# include< iostream> void main (){
printf (\" CurrentData=% d\", timeval. getTimeIndirector ());
return1;}。
MITSUBISHI可编程FX系列指令一程序流程—功能00~0900CJ条件转移01CALL调用子程序02SRET从子程序返回03IRET中断返回04EI开中断05DI关中断06FEND主程序结束07WDT监视定时器08FOR循环开始09NEXT循环结束二传送和比较指令—功能10~1910CMP比较11ZCP区间比较12MOV传送13SMOV移位传送14CML求补运算15BMOV数据块传送16FMOV多点传送17XCH数据交换18BCD求BCD码19BIN求二进制码三算术和逻辑运算指令—功能20~29 20ADD加法21SUB减法22MUL乘法23DIV除法24INC加一25DEC减一26WAND字与27WOR字或28WXOR字异或29NEG求补四循环与移位—功能30~3930ROR循环右移31ROL循环左移32RCR带进位循环右移33RCL带进位循环左移34SFTR位右移35SFTL位左移36WSFR字右移37WSFL字左移38SFWRFIFO写39SFRDFIFO读五数据处理—功能40~4940ZRST区间复位41DECO解码42ENCO编码43SUMON位总数44BON检查位状态45MEAN求平均值46ANS标志置位47ANR标志复位48SQR平方根49FLT整数转换成浮点数六高速处理—功能50~5950REF刷新51REFF刷新与滤波处理52MTR矩阵输入53HSCS高速记数器置位54HSCR高速记数器复位55HSZ高速记数器区间比较速度检测56SPD脉冲输出Speed detect 57PLSY脉宽调制Pulse Y58PWM脉冲调制Pulse width modulation59PLSR带加减速脉冲输出七方便指令—功能60~6960IST状态初始化61SER寻找62ABSD绝对值凸轮顺控63INCD增量凸轮顺控64TTMR示教定时器65STMR专用定时器—可定义66ALT交替输出67RAMP斜坡输出68ROTC旋转台控制69SORT排序八外部I/O设备—功能70~79 70TKY十键输入71HKY十六键输入72DSW拨码开关输入73SEGD七段码译码74SEGL带锁存的七段码显示75ARWS方向开关76ASCASCII变换77PR打印78FROM读特殊功能模块79TO写特殊功能模块九外围设备SER—功能80~89 80RSRS通讯81PRUN8进制位传送82ASCI十六进制至ASCII转换83HEXASCII至十六进制转换84CCD校验码85VRRD电位器读入86VRSC电位器刻度8788PIDPID控制89十F2外部模块—功能90~9990MNETF-16N, Mini网91ANRDF2-6A, 模拟量输入92ANWRF2-6A, 模拟量输出93RMSTF2-32RM, 启动RM94RMWRF2-32RM, 写RM95RMRDF2-32RM, 读RM96RMMNF2-32RM, 监控RM97BLKF2-30GM, 指定块98MCDEF2-30GM, 机器码99十一浮点数—功能110~132 110ECMP浮点数比较111EZCP浮点数区间比较118EBCD浮点数2进制->10进制119EBIN浮点数10进制->1进制120EADD浮点数加法121ESUB浮点数减法122EMUL浮点数乘法123EDIV浮点数除法127ESOR浮点数开方129INT浮点数->整数130SIN浮点数SIN运算131COS浮点数COS运算132TAN浮点数TAN运算147SW AP上下字节交换十二定位—功能155~159 155ABS156ZRN157PLSY158DRVI159DRV A十三时钟运算—功能160~169 160TCMP161TZCP162TADD163TSUB166TRD167TWR169HOUR十四外围设备—功能170~177 170GRY171GBIN176RD3A177WR3A十五接点比较—功能224~246 224LD=(S1)=(S2)225LD>(S1)>(S2)226LD<(S1)<(S2)228LD<>(S1)<>(S2)229LD<=(S1)>=(S2)230LD>=(S1)>=(S2)232AND=(S1)=(S2)233AND>(S1)>(S2)234AND<(S1)<(S2)236AND<>(S1)<>(S2)237AND<=(S1)>=(S2)238AND>=(S1)>=(S2)240OR=(S1)=(S2)241OR>(S1)>(S2)242OR<(S1)<(S2)244OR<>(S1)<>(S2)245OR<=(S1)>=(S2)246OR>=(S1)>=(S2)特殊软元件一PC状态M8000RUN监控(a触点)M8001RUN监控(b触点)M8002初始脉冲(a触点)M8003初始脉冲(b触点)M8004发生出错M8005电池电压下降M8006电池电压下降锁存M8007电源瞬停检测M8008停电检测M8009DC24V关断D8001PLC型号及系统版本D8002存储器容量D8003存储器类型D8004出错M地址号D8005电池电压D8006电池电压下降检出电平D8007瞬停次数D8008停电检测时间D8009DC24V关断的单元编号二时钟M8011震荡周期10msM8012震荡周期100msM8013震荡周期1sM8014震荡周期1分钟M8015计时停止及预置M8016时间读出时显示停止M8017±30秒的修正M8018检测RTC卡盒是否插入M8019实时时钟(RTC)出错D8010当前扫描时间D8011最小扫描时间D8012最大扫描时间D8013秒D8014分D8015时D8016日D8017月D8018年D8019星期(0:星期日~6:星期六)三标志M8020零(加减运算结果为0时置位) M8021借位M8022进位M8023小数点运算标志M8024M8025HSC方式M8026RAMP方式M8027PR方式M8028FROM./TO指令执行中允许中断标志M8029指令执行完成D8028Z寄存器内容D8029V寄存器内容四PLC方式M8030电池LED灯灭指令M8031全清非保持存储器M8032全清保持存储器M8033停止时存储器保持M8034禁止所有输出M8035强制RUN方式M8036强制RUN信号M8037强制STOP信号M8038RAM文件寄存器全清零M8039恒定扫描方式D8039恒定扫描时间FX2N, FX2NC基本性能项目FX2N, FX2NC系列输入继电器X184点合计256点输出继电器Y184点辅助继电器M一般用500点M0~M499保持用(可变)524点M500~M1535保持用(固定)2048点M1024~M3071特殊用256点M8000~M8255状态继电器S初始化用10点S0~S9一般用490点S10~S499锁存用400点S500~S899报警用100点S900~S999定时器T100ms200点T0~T19910ms46点T200~T2451ms4点T246~T249100ms(积算)6点T250~T255模拟计数器C增计数一般用100点(16位)C0~C99 锁存用100点(16位)C100~C199加/减用一般用20点(16位)D200~D999锁存用15点(16位)C100~C199高速用一相10KHz 3点, 7KHz 3点或二相2KHz 2点(总计20KHz)数据寄存器D通用数据存储器一般用200点D0~D199保持用(可变)312点D200~D511保持用(固定)7488点D512~D7999特殊用256点D8000~D8255变址用16点V0~V7, Z0~Z7文件寄存器最大7000点D1000以后(可设)可指定1~14个块,每个块500点指针跳步跳步转移用128点P0~P127输入中断指针6点I00*~I50*定时器中断指针3点I6**~I8**计数器中断指针6点I010~I060频率主控用8点N0~N7常数十进制K32位-2147483648~+2147483647十六进制H32位0~FFFFFFFF(H)FX2N-16M-128M型1 输入输出16-256点2 内置RAM存储器(8000步)。
红用maxplus绿灯30秒倒计时计数器代码以下是使用 MAX+PLUS II 进行 30 秒倒计时计数器的示例代码:
```
// 定义计数器变量
unsigned int count = 0;
// 初始化计数器
void setup() {
// 设置计数器初始值为 0
count = 0;
// 设置绿灯闪烁频率为 250 Hz
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
delay(250);
digitalWrite(13, LOW);
delay(250);
}
// 更新计数器值
void loop() {
// 计数器递增
count++;
// 如果计数器值大于 30,则重置计数器并重新开始倒计时
if (count > 30) {
count = 0;
}
// 绿灯闪烁
if (count % 250 == 0) {
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
}
```
上述代码使用 MAX+PLUS II 的 COUNT 指令来计算倒计时时间,其中 COUNT 指令的参数为 30,表示需要倒计时 30 秒。
代码中的
`setup()` 函数和 `loop()` 函数分别用于设置计数器和绿灯闪烁
的频率和周期。
M 内部继电器默认6144 点(M0 ~ 6143)( 可更改)B 链接继电器默认2048 点(B0 ~ 7FF)( 可更改)T 定时器默认512 点(T0 ~ 511)( 可更改)( 低速定时器/ 高速定时器共用) 通过指令指定低速定时器/ 高速定时器低速定时器/ 高速定时器的计量单位是在参数中设置( 低速定时器:1 ~ 1000ms,单位1ms,默认100ms)( 高速定时器:0.1 ~ 100ms,单位0.1ms,默认10ms)ST累计定时器默认0 点( 低速定时器/ 高速定时器共用)( 可更改) 通过指令指定低速定时器/ 高速定时器低速定时器/ 高速定时器的计量单位是在参数中设置( 低速定时器:1 ~ 1000ms,单位1ms,默认100ms)( 高速定时器:0.1 ~ 100ms,单位0.1ms,默认10ms)C 计数器普通计数器: 默认512 点(C0 ~ 511)( 可更改)D数据寄存器默认6144 点(D0 ~ 7FF6143)( 可更改)W链接寄存器默认2048 点(W0 ~ 7FF)( 可更改)F 报警器默认1024 点(F0 ~ 1023)( 可更改)V变址继电器默认1024 点(V0 ~ 1023)( 可更改)SB链接特殊继电器 1536 点(SB0 ~ 5FF)软元件点数固定SW链接特殊寄存器1536 点(SW0 ~ 5FF)SM特殊继电器5120 点(SM0 ~ 5119)SD特殊寄存器5120 点(SD0 ~ 5119)MRD在某个控制线路的编制过程中,使用MRD指令就将堆栈底部单元里的内容(即在最后一次使用MPS指令时,推入堆栈的逻辑运算结果)读出。
MPS在某个控制线路的编制过程中,如果要求该控制线路同时联结几个线圈或特殊功能块,而且它们各自的控制条件略有不同,需要将某一个或几个触点的逻辑运算结果存放起来,以备后用,这时就需要使用MPS指令将该逻辑运算结果推入堆栈。
PLC程序详解(图文并貌)一、时间继电器:TON 使能=1计数,计数到设定值时(一直计数到32767),定时器位=1。
使能=0复位(定时器位=0)。
TOF 使能=1,定时器位=1,计数器复位(清零)。
使能由1到0负跳变,计数器开始计数,到设定值时(停止计数),定时器位=0。
如下图:图1:使能=1时,TOF(T38)的触点动作图图2:使能断开后,计数到设定值后,TOF(T38)的触点动作图(其中T38常开触点是在使能由1到0负跳变后计数器计时到设定值后变为0的)TONR 使能=1,计数器开始计数,计数到设定值时,计数器位=1。
使能断开,计数器停止计数,计数器位仍为1,使能位再为1时,计数器在原来的计数基础上计数。
以上三种计数器可以通过复位指令复位。
正交计数器A相超前B相90度,增计数B相超前A相90度,减计数当要改变计数方向时(增计数或减计数),只要A相和B相的接线交换一下就可以了。
二、译码指令和编码指令:译码指令和编码指令执行结果如图所示:DECO是将VW2000的第十位置零(为十进制的1024),ENCO输入IN最低位为1的是第3位,把3写入VB10(二进制11)。
三、填表指令(ATT)S7-200填表指令(ATT)的使能端(EN)必须使用一个上升沿或下降沿指令(即在下图的I0.1后加一个上升沿或下降沿),若单纯使用一个常开触点,就会出现以下错误:这一点在编程手册中也没有说明,需要注意。
其他的表格指令也同样。
四、数据转换指令使用数据转换指令时,一定要注意数据的范围,数据范围大的转换为数据范围小的发注意不要超过范围。
如下图所示为数据的大小及其范围。
(1)BCD码转化为整数(BCD_I)关于什么是BCD码,请参看《关于BCD码》。
BCD码转化为整数,我是这样理解的:把BCD码的数值看成为十进制数,然后把BCD到整数的转化看成是十进制数到十六进制数的转化。
如下图所示,BCD码为54,转化为整数后为36。
实训题目:三十秒钟倒计时钟——七段码译码指令
一、实训目的
1. 掌握PLC的基本逻辑指令;
2. 训练PLC编程的思想和方法;
3. 应用PLC技术将继电接触器控制系统改造为PLC控制系统;
4. 掌握七段码译码指令SEGD。
二、实训器材
1.可编程控制器1台(FX2N型);
2.按钮开关2个常开;
3.实训控制台;
4.计算机1台(已安装编程软件);
5.数码显示器2个;
6.连接导线若干。
三、实训内容与指导
1. 控制要求:将三十秒钟倒计时钟改造为PLC控制系统。
2. I/O分配:根据系统控制要求,确定PLC的I/O(输入输出口)。
3. 系统接线:根据系统控制要求和I/O点分配,画出电动机的系统接线图。
4. 程序设计:根据控制要求,设计梯形图程序。
5. 系统调试:
(1)输入程序:通过计算机梯形图正确输入PLC中。
(2)静态调试:按PLC的I/O接线图正确连接好输入设备,进行PLC的模拟静态调
试,观察PLC的输出指示灯是否按要求指示,否则,检查并修改程
序,直至指示正确。
(3)动态调试:按PLC的I/O接线图正确连接好输出设备,进行系统的空载调试,
设计一个三十秒钟倒计时钟。接通控制开关,两个数码管分别显示
“2”、“9”,即“29”。随后每隔1s,显示数字减1,减到“0”、“0”
时,返回“29”继续1s减1,断开控制开关停止显示。否则,检查
电路或修改程序,直至符合控制要求。
(4)修改、打印并保存程序:动态调试正确后,练习删除、复制、粘贴、删除连线、
绘制连线、程序传送、监视程序、设备注释等操作,最
后,打印程序(指令表及梯形图)并保存程序。
四、实训报告
1. 实训总结
实训之前,先要认清自己是否弄懂了“算数运算的四则运算指令”。然后通过加减乘除
指令和七段码译码指令把所要的结果算出来,这就需要一定的理论基础知识以及听课的认真
程度。在课堂上,经过老师逐条指令给我们分解,使我对该指令有了初步的认识,而光靠这
是不够的,而是需要课后大量的复习和反复的试验,才能弄懂以上指令。下面是对本次实训
的详细说明:
2. 实训各图
(1)I/O分配表:
输入 输出
输入继电器 输入元件 作用 输出继电器 输出元件 作用
X0 SB1 启动按钮 Y0~Y6 七段数码管 译码信号
X1 SB2 停止按钮 Y10~Y16 七段数码管 译码信号
(2)PLC控制梯形图:
(3)PLC的外部硬件接线图:
3. 实训操作步骤
M8002指令为初始脉冲。k0赋初始值给D0为“0”。当按下SB1时,x0闭合,m0自
锁。1s脉冲指令m8013有输入信号,实现1s一个脉冲送给INC加1指令,D0从“0”一直
加到“30”。SUB为减法指令,30减去D0得出的D1就是最终所要得出的倒计时。
因为显示一个十位数需要两个数码管,所以要分别取出个位数和十位数。DIV指令为二
进制数除法指令,用得出结果D1除以10,得出的二进制数D2,即该结果的十位数。而后,
为了方便取其个位数,用MUL乘法指令把D2乘以10得出D3,再用SUB减法指令,把结
果D1减去D3得出其个位数。
最终D2为倒计时的十位数,D4为个位数。再用SEGD七段码译码指令,把D2和D4
分别在y000和y010显示出来,得出一个两位数。当D1倒数到“0”时,利用RST指令返
回D0的初始值为“0”。按下SB2停止按钮,使x1断开,y000和y010没有输出信号,数
码管停止显示。
SB2 X0 X1 COM 启动按钮 停止按钮 P L C Y1 Y2 Y3 Y4 Y5 Y6 Y10 Y11 Y12 Y13 Y14 Y15 Y16 Y0 com1 com2 15V
SB1