菜鳥(niǎo)入行
級(jí)別: 論壇先鋒

精華主題: 0
發(fā)帖數(shù)量: 1379 個(gè)
工控威望: 1557 點(diǎn)
下載積分: 3686 分
在線時(shí)間: 177(小時(shí))
注冊(cè)時(shí)間: 2017-09-01
最后登錄: 2024-06-11
查看菜鳥(niǎo)入行的 主題 / 回貼
樓主  發(fā)表于: 2019-12-31 13:10
有很多人用三菱的PLC做定時(shí)停機(jī),主要是為了收尾款。

一般都是通過(guò)比較當(dāng)前時(shí)間,和PLC里設(shè)定的起始時(shí)間,然后進(jìn)行判斷

這樣用估計(jì)已經(jīng)有20年歷史了

今天我突然想到一個(gè)BUG,也不知道應(yīng)該不應(yīng)該說(shuō)出來(lái)

比如PLC 在2020年1月是到期了,不能用了。

我也解不了密碼。

但我另外拿一個(gè)觸摸屏,接上原來(lái)的PLC,修改一下PLC的時(shí)間,改向前半年。

那不是又能正常使用了么?
打個(gè)醬油,懂的不多
水平有限,能幫則幫
互相幫助,共同進(jìn)步
panguancheng
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 199 個(gè)
工控威望: 257 點(diǎn)
下載積分: 1491 分
在線時(shí)間: 43(小時(shí))
注冊(cè)時(shí)間: 2018-10-22
最后登錄: 2024-11-15
查看panguancheng的 主題 / 回貼
1樓  發(fā)表于: 2020-01-12 15:37
寫的一手騙流量的好帖,你這這些只能偏偏新手;給你一段觸摸屏的加密代碼你看看,看看有沒(méi)BUG:
各種觸摸屏的腳本語(yǔ)言格式可能不是很一樣,我這個(gè)是Kinco的,把頭文件和部分關(guān)鍵字換一下可以上維綸和昆侖;
           #include "macrotypedef.h"                
#include "math.h"                
                
/*                
    Read,Write Local address function:            
      int ReadLocal( const char *type, int addr, int nRegs, void *buf, int flag  );            
    int WriteLocal( const char *type, int addr, int nRegs, void *buf , int flag );            
                
    Parameter:     type     is the string of "LW","LB" etc;            
                
                
                
                
    return value : 1  ,Operation success            
                
                
     eg: read the value of local lw200 and write it to the lw202,with the codetype BIN,            
        The code is :        
                
        short buf[2] = {0};            
        ReadLocal("LW", 200, 2, (void*)buf, 0);        
        WriteLocal("LW", 202, 2, (void*)buf, 0);        
*/                
int MacroEntry()                
{                
    short Date[3]={0};            
    short Lic[8]={0};            
    short Cd[16]={0};            
    short Subb[6]={0};            
    short i,j;            
    short YTen,YGe,MTen,MGe,DTen,DGe,Y,M,D;            
    //short Year,Month,Dat;            
    ReadLocal("LW",10003,3,(void*)Date,0);  //獲取現(xiàn)在日期            
     int temp=Date[2]*10000+Date[1]*100+Date[0];            
    CuDG=temp;    //當(dāng)前日期組合            
                
                
    ReadLocal("RW",200,8,(void*)Lic,0);    //獲得8個(gè)字的授權(quán)號(hào)            
    for( i=0,j=0;i<16;i++)            
        {        
            if(i%2==0)    
                Cd=Lic[j] & 0xff;
            else    
                {
                
                
                }
        if(!(Cd>='A' && Cd<= 'Z' ) )        
            {    
                Fail=1;
                return 0;
            }    
                
        }        
WriteLocal("LW", 20, 16, (void*)Cd, 0);  //將拆解后的字符放到LW20-35中                
    if(Date[1]%2==0) //假如是偶數(shù)月            
        {        
            YTen=Cd[2]-'H';        
            YGe=Cd[4]-'E';        
            MTen=Cd[6]-'I';      
            MGe=Cd[8]-'J';        
            DTen=Cd[10]-'K';      
            DGe=Cd[12]-'F';      
        }        
    else            
        {            
            YTen=Cd[1]-'F';      
            YGe=Cd[5]-'E';        
            MTen=Cd[9]-'M';      
            MGe=Cd[11]-'H';      
            DTen=Cd[13]-'U';    
            DGe=Cd[15]-'M';      
        }        
Subb[0]=YTen;                
Subb[1]=YGe;                
Subb[2]=MTen;                
Subb[3]=MGe;                
Subb[4]=DTen;                
Subb[5]=DGe;                
                
WriteLocal("LW", 40, 6, (void*)Subb, 0);                
                
Y=YTen*10+YGe;                
M=MTen*10+MGe;                
D=DTen*10+DGe;                
Rq=20000000+Y*10000+M*100+D;                
Fail=0;                
                
if(Y>30 || Y<16 || M>12 || M <1 || D>31 || D<1 || Rq<=CuDG)                
    {            
        Fail=1;        
                
    }            
    else            
    {            
        Fail=0;        
        if((2000+Y-Date[2])>=2)        
            KGH=1;    
                
    }                                                  
    return 0;            
}