hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
@@ -102,6 +102,7 @@ @Scheduled(fixedDelay = 1000) public void inBigStorageTask() throws Exception { S7DataDLPOne s7DataDLPOne = s7SerializerDLPOne.read(S7DataDLPOne.class); log.info("进片任务开始{}",s7DataDLPOne); // ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1A.DLP1A.mesControl"); // if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) { Boolean inkageEntity = s7DataDLPOne.getMesControl(); @@ -347,6 +348,7 @@ public void outBigStorageTask() throws Exception { Date startDate = new Date(); S7DataDLPTwo s7DataWLTwo = s7SerializerDLPTwo.read(S7DataDLPTwo.class); log.info("出片任务开始{}",s7DataWLTwo); // ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1B.DLP1B.mesControl"); // if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) { Boolean inkageEntity = s7DataWLTwo.getMesControl(); hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@ spring: profiles: active: dev active: yw application: name: cacheVerticalGlass liquibase: @@ -15,8 +15,8 @@ thread-name-prefix: task-cacheVertical mybatis-plus: mapper-locations: classpath*:mapper/*.xml configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # configuration: # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mes: sequence: order: true hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/config/S7Config.java
@@ -16,22 +16,22 @@ @Bean(name = "s7SerializerCC") public S7Serializer s7SerializerCC() { // S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.80"); S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191"); S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.80"); // S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191"); return S7Serializer.newInstance(s7PLC); } @Bean(name = "s7SerializerSPOne") public S7Serializer s7SerializerSPOne() { // S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.15"); S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191"); S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.15"); // S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191"); return S7Serializer.newInstance(s7PLC); } @Bean(name = "s7SerializerSPTwo") public S7Serializer s7SerializerSPTwo() { // S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.21"); S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191"); S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.21"); // S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191"); return S7Serializer.newInstance(s7PLC); } } hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
@@ -89,6 +89,7 @@ @Scheduled(fixedDelay = 1000) public void rawStorageTask() throws Exception { S7DataCC S7DataCCOne = s7SerializerCC.read(S7DataCC.class); log.info("仓储通讯读取{}",S7DataCCOne); String requestWord = S7DataCCOne.getRequest().toString(); String confireWord = S7DataCCOne.getConfirmation().toString(); String reportWord = S7DataCCOne.getReportWord().toString(); hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/s7/entity/S7DataCC.java
@@ -12,43 +12,6 @@ @Data public class S7DataCC { // @S7Variable(address = "DB1.0", type = EDataType.UINT16) // private Integer request; // // @S7Variable(address = "DB1.2", type = EDataType.UINT16) // private Integer requestId; // // @S7Variable(address = "DB1.4", type = EDataType.UINT16) // private Integer reportWord; // // @S7Variable(address = "DB1.6", type = EDataType.UINT16) // private Integer reportId; // // @S7Variable(address = "DB1.8", type = EDataType.UINT16) // private Integer inCar; // // @S7Variable(address = "DB1.10", type = EDataType.UINT16) // private Integer taskWord; // // @S7Variable(address = "DB1.12", type = EDataType.UINT16) // private Integer taskId; // // @S7Variable(address = "DB1.14", type = EDataType.UINT16) // private Integer startSlot; // // @S7Variable(address = "DB1.16", type = EDataType.UINT16) // private Integer endSlot; // // @S7Variable(address = "DB1.18", type = EDataType.UINT16) // private Integer taskSending; // // @S7Variable(address = "DB1.20", type = EDataType.UINT16) // private Integer confirmation; // // @S7Variable(address = "DB1.22", type = EDataType.UINT16) // private Integer confirmationId; @S7Variable(address = "DB38.0", type = EDataType.UINT16) private Integer request; hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@ spring: profiles: active: dev active: yw application: name: glassStorage liquibase: hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/logback-spring.xml
New file @@ -0,0 +1,169 @@ <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="10 seconds"> <!-- logger上下文名称(根据业务修改) --> <contextName>glassStorage</contextName> <!-- 定义了一个名为serverName的属性,它的值来自于logging.file.name,如果没有找到该属性默认为MyServerName(根据业务修改) --> <springProperty name="serverName" source="logging.file.name" defaultValue="glassStorage"/> <springProperty name="logging.path" source="logging.file.path" defaultValue="././logs/"/> <!-- 彩色日志依赖的渲染类 --> <!-- 定义了一个名为clr的转换规则,它使用org.springframework.boot.logging.logback.ColorConverter类进行转换,这个元素通常用于将日志输出中的文本着色,以便更容易地区分不同的日志级别或其他信息 --> <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/> <!-- WhitespaceThrowableProxyConverter和ExtendedWhitespaceThrowableProxyConverter都是用于将异常信息转换为字符串,并将其中的换行符替换为空格,以便更容易地在日志输出中显示的类。它们之间的区别在于,ExtendedWhitespaceThrowableProxyConverter在输出异常信息时会包含更多的详细信息,例如异常的类名、方法名和行号等 --> <!-- 定义了一个名为wex的转换规则,它使用org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter类进行转换,这个元素通常用于将异常信息转换为字符串,并将其中的换行符替换为空格,以便更容易地在日志输出中显示 --> <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/> <!-- 定义了一个名为wEx的转换规则,它使用org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter类进行转换,这个元素通常用于将异常信息转换为字符串,并将其中的换行符替换为空格,以便更容易地在日志输出中显示 --> <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/> <!-- 彩色日志格式 --> <!-- value值是日志输出模板, :-是属性名和其默认值之间的分隔符,作用与:相同 --> <!-- 定义日志输出格式的转换规则,%d{yyyy-MM-dd HH:mm:ss.SSS}表示日期和时间,%clr表示将输出文本着色,{faint}表示使用淡色 --> <!-- %5p表示日志级别输出右对齐,左边以空格填充 --> <!-- ${PID:- }表示进程ID,%clr表示将输出文本着色,{magenta}表示使用洋红色 --> <!-- -表示一个分隔符 --> <!-- %t:显示产生该日志的线程名;%15:若字符长度小于15,则左边用空格填充;%.15:若字符长度超过15,截去多余字符 --> <!-- %-40:若字符长度小于40,则右边用空格填充;%.40:若字符长度超过40,截去多余字符;logger{39}对应的是“logging.WARNING”级别。具体来说,Python的logging模块定义了以下几个级别(从低到高):NOTSET、DEBUG、INFO、WARNING、ERROR、CRITICAL。因此,logger{39}表示的是WARNING级别,即日志记录器会记录所有WARNING级别及以上的日志信息 --> <!-- %m表示日志消息;%n表示换行符;${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}表示异常信息。如果日志输出中包含异常信息,这个规则将会将其转换为字符串,并将其中的换行符替换为空格,以便更容易地在日志输出中显示 --> <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> <!--1. 输出到控制台--> <!-- 定义控制台日志输出的appender,class="ch.qos.logback.core.ConsoleAppender"表示使用Logback框架提供的ConsoleAppender类来输出日志到控制台 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--> <!-- 定义日志输出级别的过滤器,class="ch.qos.logback.classic.filter.ThresholdFilter"表示使用Logback框架提供的ThresholdFilter类来过滤日志输出,<level>debug</level>表示只输出debug级别及以上的日志 --> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>debug</level> </filter> <encoder> <!-- ${CONSOLE_LOG_PATTERN}表示控制台日志输出格式,UTF-8表示编码格式 --> <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> <!-- 设置字符集 --> <charset>UTF-8</charset> </encoder> </appender> <!--2. 输出到文档--> <!-- 2.1 level为 DEBUG 日志,时间滚动输出 --> <!-- 定义文件日志输出的appender,class="ch.qos.logback.core.rolling.RollingFileAppender"表示使用Logback框架提供的RollingFileAppender类来输出日志到文件 --> <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${logging.path}/${serverName}/web_debug.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 设置字符集 --> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <!-- 定义日志文件滚动策略的标签,class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"表示使用Logback框架提供的TimeBasedRollingPolicy类来定义日志文件的滚动策略 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 日志归档 --> <!-- 定义日志文件名的模式。在这个模式中,${logging.path}表示日志文件的路径,%d{yyyy-MM-dd}表示日期格式,%i表示文件索引 --> <fileNamePattern>${logging.path}/${serverName}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 定义日志文件滚动策略的标签,class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"表示使用Logback框架提供的SizeAndTimeBasedFNATP类来定义日志文件的滚动策略,<maxFileSize>100MB</maxFileSize>表示日志文件的最大大小为100MB。这个滚动策略通常用于按照时间和文件大小滚动日志文件,以便更好地管理日志文件的大小和数量 --> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>7</maxHistory> </rollingPolicy> <!-- 此日志文档只记录debug级别的 --> <!-- 定义日志输出级别的过滤器。在这个过滤器中,class="ch.qos.logback.classic.filter.LevelFilter"表示使用Logback框架提供的LevelFilter类来过滤日志输出,<level>debug</level>表示只输出debug级别及以上的日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>debug</level> <!-- <onMatch>ACCEPT</onMatch>表示如果日志事件与过滤器匹配,则接受该事件,<onMismatch>DENY</onMismatch>表示如果日志事件与过滤器不匹配,则拒绝该事件 --> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 2.2 level为 INFO 日志,时间滚动输出 --> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${logging.path}/${serverName}/web_info.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 天天日志归档路径以及格式 --> <fileNamePattern>${logging.path}/${serverName}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>7</maxHistory> </rollingPolicy> <!-- 此日志文档只记录info级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>info</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 2.3 level为 WARN 日志,时间滚动输出 --> <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${logging.path}/${serverName}/web_warn.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 此处设置字符集 --> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${logging.path}/${serverName}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>7</maxHistory> </rollingPolicy> <!-- 此日志文档只记录warn级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>warn</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 2.4 level为 ERROR 日志,时间滚动输出 --> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${logging.path}/${serverName}/web_error.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 此处设置字符集 --> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${logging.path}/${serverName}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>7</maxHistory> </rollingPolicy> <!-- 此日志文档只记录ERROR级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 4.1 开发环境:打印控制台--> <!-- 用于在Spring Boot应用程序中配置日志记录的标签。在这个标签中,name="dev"表示这个配置文件只在dev环境中生效,<logger name="com.myClass.controller" level="debug"/>表示为com.myClass.controller(根据业务修改)这个包下的类配置日志输出级别为debug --> <!-- <springProfile name="dev">--> <!-- <logger name="com.myClass.controller" level="debug"/>--> <!-- </springProfile>--> <!-- 用于配置日志输出的标签。在这个标签中,level="info"表示日志输出级别为info,<appender-ref ref="CONSOLE"/>、<appender-ref ref="DEBUG_FILE"/>、<appender-ref ref="INFO_FILE"/>、<appender-ref ref="WARN_FILE"/>、<appender-ref ref="ERROR_FILE"/>表示将日志输出到不同的appender中,分别为控制台、debug文件、info文件、warn文件和error文件 --> <root level="info"> <appender-ref ref="CONSOLE"/> <appender-ref ref="INFO_FILE"/> <appender-ref ref="WARN_FILE"/> <appender-ref ref="ERROR_FILE"/> </root> </configuration> hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/config/S7Config.java
@@ -15,15 +15,15 @@ public class S7Config { @Bean(name = "s7SerializerSPOne") public S7Serializer s7SerializerSPOne() { // S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.15"); S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191"); S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.15"); // S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191"); return S7Serializer.newInstance(s7PLC); } @Bean(name = "s7SerializerSPTwo") public S7Serializer s7SerializerSPTwo() { // S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.21"); S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191"); S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.21"); // S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191"); return S7Serializer.newInstance(s7PLC); } hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java
@@ -127,6 +127,7 @@ } else { s7DataSP = s7SerializerSPTwo.read(S7DataSP.class); } log.info("{}上片线,当前上片位信息:{}", deviceId, s7DataSP); Engineering engineering = engineeringMapper.selectOne(new LambdaQueryWrapper<Engineering>() .eq(Engineering::getState, Const.ENGINEERING_RUNNING).eq(Engineering::getStationCell, deviceId)); if (null == engineering) { @@ -135,11 +136,11 @@ } //任务暂停 S7DataSP task = new S7DataSP(); if (LOAD_GLASS_ONE_DEVICE.equals(deviceId)) { s7SerializerSPOne.read(S7DataSP.class); } else { s7SerializerSPTwo.read(S7DataSP.class); } // if (LOAD_GLASS_ONE_DEVICE.equals(deviceId)) { // s7SerializerSPOne.read(S7DataSP.class); // } else { // s7SerializerSPTwo.read(S7DataSP.class); // } // LoadGlassDeviceTask task = loadGlassDeviceTaskService.queryTaskMessage(tableName); ; if ("0".equals(s7DataSP.getInkageState().toString())) { @@ -237,6 +238,7 @@ } else { s7DataSP = s7SerializerSPTwo.read(S7DataSP.class); } log.info("{}上片线,当前上片位信息:{}", deviceId, s7DataSP); // LoadGlassDeviceTask task = loadGlassDeviceTaskService.queryTaskMessage(tableName); if (s7DataSP.getTaskRunning().toString().equals(Const.ENGINEERING_NEW)) { // if (task.getTaskRunning().equals(Const.ENGINEERING_NEW)) { hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
@@ -2,7 +2,7 @@ port: 10015 spring: profiles: active: dev active: yw application: name: loadGlass liquibase: hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
@@ -2,7 +2,7 @@ port: 10016 spring: profiles: active: dev active: yw application: name: temperingGlass liquibase: hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/config/ModbusConfig.java
@@ -14,14 +14,19 @@ @Bean(name = "CMJ1ModbusTcp") public ModbusTcp CMJ1ModbusTcp() { // return new ModbusTcp("127.0.0.1"); return new ModbusTcp("192.168.30.160"); // ModbusTcp modbusTcp=new ModbusTcp("127.0.0.1"); ModbusTcp modbusTcp=new ModbusTcp("192.168.30.160"); modbusTcp.setConnectTimeout(3000); return modbusTcp; } @Bean(name = "CMJ2ModbusTcp") public ModbusTcp CMJ2ModbusTcp() { // return new ModbusTcp("127.0.0.1"); return new ModbusTcp("192.168.30.162"); // ModbusTcp modbusTcp=new ModbusTcp("127.0.0.1"); ModbusTcp modbusTcp=new ModbusTcp("192.168.30.160"); modbusTcp.setConnectTimeout(3000); return modbusTcp; } } hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcHollowRemoveTask.java
@@ -41,6 +41,33 @@ private Integer offset = 40001; /** * 除膜机联机状态 * * @throws Exception */ @Scheduled(fixedDelay = 3000) public void filmRemoveStateOne() throws Exception { ModbusTcp modbusTcp = CMJ1ModbusTcp; try { modbusTcp.readUInt16(42001 - offset); log.info("除膜机1联机状态正常"); } catch (Exception e) { log.error("除膜机1联机状态异常", e); } } @Scheduled(fixedDelay = 3000) public void filmRemoveStateTwo() throws Exception { ModbusTcp modbusTcp = CMJ2ModbusTcp; try { modbusTcp.readUInt16(42001 - offset); log.info("除膜机2联机状态正常"); } catch (Exception e) { log.error("除膜机2联机状态异常", e); } } /** * 收到除膜机请求及玻璃id * * @throws Exception @@ -61,6 +88,10 @@ modbusTcp = CMJ1ModbusTcp; } else { modbusTcp = CMJ2ModbusTcp; } if (!modbusTcp.checkConnected()) { log.info("除膜机{}未连接", cell); return; } Integer requestEntity = modbusTcp.readUInt16(42001 - offset); // ReadWriteEntity requestEntity = miloService.readFromOpcUa(cell + "mesControl"); @@ -158,6 +189,10 @@ } else { modbusTcp = CMJ2ModbusTcp; } if (!modbusTcp.checkConnected()) { log.info("除膜机{}未连接", cell); return; } int requestEntity = modbusTcp.readUInt16(42001 - offset); int request = requestEntity; int flagRequest = request & 9; hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
@@ -387,7 +387,7 @@ public void outBigStorageTask() throws Exception { Date startDate = new Date(); S7DataZKDLPTwo s7DataZKDLPTwo = s7SerializerZKDLPTwo.read(S7DataZKDLPTwo.class); log.info("进片任务读取s7DataZKDLPTwo:{}", s7DataZKDLPTwo); log.info("出片任务读取s7DataZKDLPTwo:{}", s7DataZKDLPTwo); // ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP2B.DLP2B.mesControl"); // if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) { Boolean inkageEntity = s7DataZKDLPTwo.getMesControl(); @@ -415,14 +415,20 @@ //获取空闲且领取任务的数据信息,没有任务直接走玻璃调度 HashMap<Integer, Boolean> map = new HashMap<>(); try { Boolean oneEntity = CMJ1ModbusTcp.readUInt16(42027 - 40001) != 0; map.put(930, oneEntity); if (CMJ1ModbusTcp.checkConnected()) { Boolean oneEntity = CMJ1ModbusTcp.readUInt16(42027 - 40001) != 0; map.put(930, oneEntity); } else { map.put(930, Boolean.FALSE); } } catch (Exception e) { //nothing log.info("一线空闲状态获取异常"); } try { S7DataZKExtra s7DataZKExtra = s7SerializerZKQ2.read(S7DataZKExtra.class); log.info("中空额外读取{}", s7DataZKExtra); map.put(931, s7DataZKExtra.getIsFree()); map.put(932, s7DataZKExtra.getIsFree03()); } catch (Exception e) { @@ -1051,9 +1057,9 @@ int glassCount = baseInfoList.size(); List<BigStorageCageTask> bigStorageCageTaskList = new ArrayList<>(); //生成出片任务条数不足6补全 // for (T t : baseInfoList) { // bigStorageCageTaskList.add(new BigStorageCageTask(t.getGlassId(), t.getSlot(), targetSlot, 0)); // } for (T t : baseInfoList) { bigStorageCageTaskList.add(new BigStorageCageTask(t.getGlassId(), t.getSlot(), targetSlot, 0)); } // while (bigStorageCageTaskList.size() < 6) { // bigStorageCageTaskList.add(new BigStorageCageTask("", 0, 0, 0)); // } @@ -1061,6 +1067,7 @@ resetOutTask(); // bigStorageCageTaskService.removeAll(tableName); // bigStorageCageTaskService.saveTaskMessage(tableName, bigStorageCageTaskList); log.info("生成出片任务数据{}", bigStorageCageTaskList); S7DataZKDLPTwo s7DataZKDLPTwo = new S7DataZKDLPTwo(); for (int i = 0; i < bigStorageCageTaskList.size() && i < 6; i++) { String glassId = bigStorageCageTaskList.get(i).getGlassId(); @@ -1102,6 +1109,9 @@ } } s7SerializerZKDLPTwo.write(s7DataZKDLPTwo); log.info("出片任务写入数据{}", s7DataZKDLPTwo); S7DataZKDLPTwo s7DataZKDLPTwo1 = s7SerializerZKDLPTwo.read(S7DataZKDLPTwo.class); log.info("写入出片任务后读取数据{}", s7DataZKDLPTwo1); List<HollowBigStorageCageHistoryTask> historyList = bigStorageCageTaskList.stream().filter(e -> StringUtils.isNotBlank(e.getGlassId())).map(e -> { HollowBigStorageCageHistoryTask history = new HollowBigStorageCageHistoryTask(); BeanUtils.copyProperties(e, history); @@ -1109,6 +1119,7 @@ history.setTaskType(taskType); return history; }).collect(Collectors.toList()); log.info("历史任务保存{}", historyList); hollowBigStorageCageHistoryTaskService.saveBatch(historyList); log.info("将出片玻璃{}玻璃状态改为出片中", glassIds); hollowBigStorageCageDetailsService.update(new LambdaUpdateWrapper<HollowBigStorageCageDetails>() hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@ spring: profiles: active: dev active: yw application: name: hollowGlass liquibase: hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/logback-spring.xml
@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="10 seconds"> <!-- logger上下文名称(根据业务修改) --> <contextName>cacheVerticalGlass</contextName> <contextName>hollowGlass</contextName> <!-- 定义了一个名为serverName的属性,它的值来自于logging.file.name,如果没有找到该属性默认为MyServerName(根据业务修改) --> <springProperty name="serverName" source="logging.file.name" defaultValue="hollowGlass"/>