⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zdjjc.lst

📁 织带机产量检测系统的监测终端。RS-485总线
💻 LST
📖 第 1 页 / 共 4 页
字号:
 906   4                                    if (UartBuf[2] > 15)
 907   4                                        goto MODBUSOVER;
 908   4                                    
 909   4                                    pBuf = UartBuf+3;
 910   4      
 911   4                                        if (UartBuf[2] == 0)  //当前班记录
 912   4                                        {
 913   5                                                //送当前班数据   
 914   5                                //织带长度
 915   5                                UartBuf[3] = RunLength.b[0];
 916   5                                UartBuf[4] = RunLength.b[1];
 917   5                                //织带累计时间
 918   5                                UartBuf[5] = RunTime.b[0];
 919   5                                UartBuf[6] = RunTime.b[1];
 920   5                                //调试带长度
 921   5                                UartBuf[7] = DebugLength.b[0];
 922   5                                UartBuf[8] = DebugLength.b[1];
 923   5                                //调试带累计时间
C51 COMPILER V7.50   ZDJJC                                                                 02/27/2006 21:10:46 PAGE 16  

 924   5                                UartBuf[9] = DebugTime.b[0];
 925   5                                UartBuf[10] = DebugTime.b[1];
 926   5                                //异常脉冲次数 
 927   5                                UartBuf[11] = PulseCheat.b[0];
 928   5                                UartBuf[12] = PulseCheat.b[1];
 929   5                                //累计停机次数
 930   5                                UartBuf[13] = 0;
 931   5                                UartBuf[14] = curMotorStopCount;
 932   5                                //累计停机时间
 933   5                                UartBuf[15] = curMotorStopTimeLength.b[0];
 934   5                                UartBuf[16] = curMotorStopTimeLength.b[1];
 935   5                                                //经线断次数
 936   5                                                UartBuf[17] = JingCutCount;
 937   5                                                //经线断时间
 938   5                                                UartBuf[18] = JingCutTime;
 939   5                                                //纬线断次数
 940   5                                                UartBuf[19] = WeiCutCount;
 941   5                                                //纬线断时间
 942   5                                                UartBuf[20] = WeiCutTime;
 943   5                                                //底线断次数
 944   5                                                UartBuf[21] = DiCutCount;
 945   5                                                //底线断时间
 946   5                                                UartBuf[22] = DiCutTime;
 947   5                                                //卷绕断次数
 948   5                                                UartBuf[23] = JuanCutCount;
 949   5                                                //卷绕断时间
 950   5                                                UartBuf[24] = JuanCutTime;
 951   5                                //班开始结束时间
 952   5                                C24GetBuf (GROUP_TIME+GroupIndex*4, Time, 4);
 953   5                                UartBuf[25] = Time[0];
 954   5                                UartBuf[26] = Time[1];
 955   5                                UartBuf[27] = Time[2];
 956   5                                UartBuf[28] = Time[3];
 957   5                                //当班日期
 958   5                                v_Get1302(Time); 
 959   5                                UartBuf[29] = Time[3];
 960   5                                UartBuf[30] = Time[4];
 961   5                                UartBuf[31] = Time[5];
 962   5                                UartBuf[32] = Time[6];
 963   5                                QueryIndex = RecordIndex;
 964   5                                        }
 965   4                                        else
 966   4                                        {
 967   5                                        if (RecordIndex < UartBuf[2])
 968   5                                            QueryIndex = RecordIndex + RECORDCOUNT - UartBuf[2]; 
 969   5                                        else
 970   5                                            QueryIndex = RecordIndex - UartBuf[2]; 
 971   5      
 972   5                                        //读指定班数据
 973   5                                            C24GetBuf (RECORD_ROOT + QueryIndex*32, pBuf, 30);        
 974   5                                    } 
 975   4                                        UartBuf[2] = QueryIndex;
 976   4                                        UartLength = 35;
 977   4                                    break;
 978   4                               case 0x85:
 979   4                                    pBuf = UartBuf+2;
 980   4                                    //读当前设备时间
 981   4                                        v_Get1302 (pBuf);
 982   4                                        UartLength = 11;
 983   4                                    break;
 984   4                               case 0x86:
 985   4                                    pBuf = UartBuf+2; 
C51 COMPILER V7.50   ZDJJC                                                                 02/27/2006 21:10:46 PAGE 17  

 986   4                                    //写当前设备时间
 987   4                                        v_Set1302 (pBuf);
 988   4                                        UartLength = 4;
 989   4                                    break;
 990   4                               case 0x87:
 991   4                                    BaudIndex = UartBuf[2];
 992   4                                        C24SetBuf (BAUD_RATE, &BaudIndex, 1);
 993   4                                        InitBaud(); 
 994   4                                        UartLength = 4;
 995   4                                        break;
 996   4                           case 0x88:
 997   4                                    pBuf = UartBuf+2;
 998   4                                    uKValue.b[0] = UartBuf[2];
 999   4                                        uKValue.b[1] = UartBuf[3];
1000   4                                        C24SetBuf (KVALUE_H, pBuf, 2);
1001   4                                        UartLength = 4;
1002   4                                        break;
1003   4                               default:
1004   4                                    goto MODBUSOVER;
1005   4                               }
1006   3      
1007   3                               if (RxAddress != 0 &&
1008   3                                   UartBuf[0] == Address) 
1009   3                               {
1010   4                                   //计算CRC校验码               
1011   4                                   CRC.w = CRC16(UartBuf, UartLength-2);
1012   4                                   UartBuf[UartLength-2] = CRC.b[0];
1013   4                                   UartBuf[UartLength-1] = CRC.b[1];
1014   4                                   //发送一字节,触发连续发送中断
1015   4                                       EN_SEND = TRUE;
1016   4                                   SBUF = UartBuf[0];
1017   4                               }
1018   3                       }
1019   2               }
1020   1      MODBUSOVER:
1021   1           REN = TRUE;        
1022   1               RecOver = FALSE;
1023   1      }
1024          
1025          void CutCheck (void)     //断线检测
1026          {
1027   1           if (RunStatus)
1028   1               {
1029   2                   if (JingStatus && (!JING_PIN))
1030   2                   {
1031   3                       JingCutCount ++;
1032   3                   }
1033   2               
1034   2                   if (WeiStatus && (!WEI_PIN))
1035   2                   {
1036   3                       WeiCutCount ++;
1037   3                   }
1038   2               
1039   2                   if (DiStatus && (!DIXI_PIN))
1040   2                   {
1041   3                       DiCutCount ++;
1042   3                   }
1043   2               
1044   2                   if (JuanStatus && (!JUAN_PIN))
1045   2                   {
1046   3                       JuanCutCount ++;
1047   3                   }
C51 COMPILER V7.50   ZDJJC                                                                 02/27/2006 21:10:46 PAGE 18  

1048   2      
1049   2                   if (!JING_PIN)
1050   2                   {
1051   3                       displayBuf[6] |= 0x08;
1052   3                   }
1053   2      
1054   2                   if (!WEI_PIN)
1055   2                   {
1056   3                       displayBuf[6] |= 0x10;
1057   3                   }
1058   2                      
1059   2                   if (!DIXI_PIN)
1060   2                   {
1061   3                       displayBuf[6] |= 0x20;
1062   3                   }
1063   2      
1064   2                   if (!JUAN_PIN)
1065   2                   {
1066   3                       displayBuf[6] |= 0x40;
1067   3                   }
1068   2      
1069   2                   JingStatus = JING_PIN;
1070   2                   WeiStatus = WEI_PIN;
1071   2                   DiStatus = DIXI_PIN;
1072   2                   JuanStatus = JUAN_PIN;      
1073   2               }
1074   1      }
1075          
1076          uchar BCDToBin (uchar uBCD)
1077          {
1078   1           uchar uBin;
1079   1               
1080   1               uBin = ((uBCD & 0xF0) >> 4) * 10 + (uBCD & 0x0F);
1081   1               return uBin;
1082   1      }
1083          
1084          void CountTime (void)
1085          {
1086   1               uchar idata Time[7];
1087   1               uchar SubMin;
1088   1               //读第一次时间
1089   1               if (!TimeStatus)
1090   1               {
1091   2                   v_Get1302 (Time);
1092   2                       FirstMin = BCDToBin(Time[1]);
1093   2                       TimeStatus = TRUE;  
1094   2               }
1095   1               else
1096   1               {
1097   2                   v_Get1302 (Time);
1098   2                       NextMin = BCDToBin(Time[1]);
1099   2      
1100   2                       if (NextMin >= FirstMin)
1101   2                           SubMin = NextMin - FirstMin;
1102   2                       else
1103   2                               SubMin = 60 - FirstMin + NextMin;
1104   2      
1105   2                       if (SubMin != 0)
1106   2                       {
1107   3                           if (RunStatus)
1108   3                               {
1109   4                           RunTime.w += SubMin;
C51 COMPILER V7.50   ZDJJC                                                                 02/27/2006 21:10:46 PAGE 19  

1110   4                                       
1111   4                                       if (MOTOR)
1112   4                                           curMotorStopTimeLength.w += SubMin;
1113   4                               }
1114   3                       else
1115   3                           DebugTime.w += SubMin;
1116   3                                       
1117   3                               if (!JING_PIN)
1118   3                       {
1119   4                               JingCutTime += SubMin;
1120   4                                       if (JingCutCount == 0)
1121   4                                           JingCutCount = 1;
1122   4                       }
1123   3      
1124   3                       if (!WEI_PIN)
1125   3                       {
1126   4                           WeiCutTime += SubMin;      
1127   4                                       if (WeiCutCount == 0)
1128   4                                           WeiCutCount = 1;
1129   4                       }
1130   3                      
1131   3                           if (!DIXI_PIN)
1132   3                       {
1133   4                           DiCutTime += SubMin;
1134   4                                       if (DiCutCount == 0)
1135   4                                           DiCutCount = 1;
1136   4                       }
1137   3      
1138   3                       if (!JUAN_PIN)
1139   3                       {
1140   4                           JuanCutTime += SubMin;
1141   4                                       if (JuanCutCount == 0)
1142   4                                           JuanCutCount = 1;
1143   4                       }      
1144   3                                  
1145   3                               TimeStatus = FALSE;
1146   3                       }
1147   2                      
1148   2               }      
1149   1      }
1150          
1151          void main ()
1152          {
1153   1               uchar idata TimeBuf[7];
1154   1               uchar data i, j;
1155   1      
1156   1               RstStatus = RST_PIN;
1157   1              
1158   1               InitParam ();
1159   1               
1160   1               while (TRUE)
1161   1               {        
1162   2                    if (IsReceive)
1163   2                {
1164   3                        for (i=0; i<TIMEOUT; i++)
1165   3                             for (j=0; j<TIMEOUT; j++)
1166   3                             {
1167   4                                  if (RecOver)
1168   4                                          { 
1169   5                                              ModbusProcess();
1170   5                                              break;
1171   5                                      }  
C51 COMPILER V7.50   ZDJJC                                                                 02/27/2006 21:10:46 PAGE 20  

1172   4                                }
1173   3                            IsReceive = FALSE;
1174   3                            Rindex = 0;                   
1175   3                }
1176   2                        
1177   2                        if (KeyFlag)
1178   2                    {
1179   3                        KeyProc();
1180   3                        KeyFlag = FALSE;
1181   3                } 
1182   2                    
1183   2                    if (GroupSaveCount >= 100)
1184   2                    {
1185   3                        //换班
1186   3                        GroupSaveCount = 0;
1187   3                        v_Get1302 (TimeBuf);
1188   3                        ChangeGroup(TimeBuf[2], TimeBuf[1]);            
1189   3                } 
1190   2      
1191   2                        CutCheck (); 
1192   2                        CountTime (); 
1193   2           }
1194   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   5325    ----
   CONSTANT SIZE    =    536    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1      33
   IDATA SIZE       =     89      60
   BIT SIZE         =     14       2
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -