根据需求定义"任务"是一个完整的业务搬运流程,整个流程涉及到多个机构(设备)分别动作执行多个步骤,所以依据前面的模型设计,需要把任务分解到多个连续的子任务(作业),未来通过顺序串联下达执行的方式来分步骤的完成任务的执行. 1.1. 仓库规划 同样,依据需求我们先来做几个仓库的规划设计,101位置是AGV的入库起始站台,102是提升机门口的入库工位,104是提升机1楼轿厢工位,同理504是提升机在5楼的轿厢工位.左边是5楼的货位区编码规则,完整好的货位号加上楼层编码05-01-01表示五…
前言:随着国家工业2025战略的推进,工业互联网发展将会提速,将迎来一个新的发展时期,越来越多的企业开始逐步的把产线自动化,去年年底投产的小米亦庄的智能工厂就是一个热议的新闻.小米/华为智能工厂只能说是中国制造2025的一个代表,产业转型和制造升级,笔者从事的企业领域就越到越来越多的(制造)企业开始悄悄的自动化/智能化.这里肯定有国家政策推动的大背景,同时,也有着企业自身不断提高生产率的“刚需”. 本序列我们也从一个需求问题开始:然后,拆解需求(问题):其次,解决拆解需求(问题)的点:再次,通过…
从sql到ORM应该说也是编程体系逐步演化的结果,通过类和对象更好的组织开个过程中遇到的各种业务问题,面向对象的解耦和内聚作为一套有效的方法论,对于复杂的企业应用而言确实能够解决实践过程中很多问题. 1.早期No ORM的做法 这里先跟笔者回忆一下历史,在没有普及使用对象映射层之前,做企业业务系统开发通常是怎么做的呢?首先是不变的当然是需求分析,需求基本确定下来后,就是依据原始业务单据进行数据库表设计了,因为大量的企业信息化系统首先要干的第一件事情就是保存表单\保存表单\保存表单,笔者多年来干过…
本章开始我们正式进入到实战项目开发过程,如何从需求分析获得的实体数据转到模型设计中来,变成Django项目中得模型层.当然,第一步还是在VS2019 IDE环境重创建一个工程项目,本文我们把工程名称命名为IndDemo,如下图: VS2019创建的Django项目结构如下图 现在按F5调试程序,又来到Django熟悉的欢迎页面了. 接下来让开始这趟实战之旅吧! 1.1. 实体关系图 从上一章需求涉及到的实体,来构建我们的实体关系图吧,这里的步骤也相当于早期开发设计的表结构设计,只是如前面章节说的…
本章我们演示代码是如何"进化"的,实战的企业日常开发过程中,系统功能总伴随着业务的不断增加,早期简单的代码慢慢的越来越复杂,敏捷编程中的"禅"--简单设计.快速发布.获得反馈.快速开发的迭代循环过程,如何保证迭代过程持续交互合格的代码,代码重构和单元测试是非常重要的手段.单元测试用来保证重构的代码先满足原来的测试逻辑,代码结构优化满足新的业务需求扩展,然后开发增加新的功能.新的单元测试,每一轮迭代发布新的功能,获取用户反馈- 上一章功能完成的时候,你发现当前的adm…
本章节我们再来说说测试,单元测试和功能测试.单元测试我们在数据验证章节简单提过了,本章我们进一步如何用单元测试来测试view的功能代码:同时,也涉及一下基于selenium的功能测试做法.笔者过去的项目上常规的功能测试都是由测试人员通过人工点击按钮的方式来完成的,这里我们利用selenium来完成,大家体会一下当功能测试可以回归的时候是啥赶脚. 1.1. 单元测试覆盖task_start函数 参考前面的单元测试例子,完成test_task_start任务下达的单元测试代码,断言状态是否变更为下达…
我们在13章节里通过监控界面讲了如何使用jquery的动态加载数据写法,通过简单案例来说明了如何实现动态的刷新监控界面的数据,本章我们将演示如何从Django模板加载数据逐步演化到前后端分离的异步数据加载和前端渲染主流开发方式,从而进一步实现前后端的解耦,提高Django开发Web应用的灵活性. 1.1. 修改任务列表模板 目前我们显示的任务列表是采用Django后台模板的方式加载数据的,要使用JQuery,同样采用探索编程方式,先实现前端加载模拟数据,Django模板只负责加载页面的基础架构,…
前面我们分三章来说明了使用django template与jquery的差别,通过jquery如何来实现前后端的分离,同时再9章节使用vue.js 我们浅尝辄止的介绍了JQuery到vue的切换,由于监控界面没有数据提交,无法很好的体现处我说的vue的优势,所以笔者增加本章节来进一步的对比两者异同点(没有对比就没有伤害),读者可以通过代码去体会vue的优势.vue作为精简版本的MVVM,完成双向绑定后我们编程的时候可以更专注于model本身,而不像JQuery还需要知道DOM元素的标签去读写值.…
Django Admin笔者使用下来可以说是Django框架的开发利器,业务model构建完成后,我们就能快速的构建一个增删查改的后台管理框架.对于大量的企业管理业务开发来说,可以快速的构建一个可发布的基本的原型,也可以直接通过后台管理快速开发基本的管理系统,提高产品迭代的效率和开发周期.现在就让我们开始配置程序,来掀开admin的庐山真面目! 1.1. 修改程序调试默认端口 笔者在这里为了避免与其它程序的默认端口冲突,我们把工程的默认端口改成8001,这样可以减少调试过程中遇到端口冲突时初学者…
1.1. 编辑界面 默认任务的编辑界面,对于model属性包含"choices"会自动显示下来列表供选择,"datetime"数据类型也默认提供时间选择组件,如下图: 注意:"auto_now_add=True"的属性默认不会显示在编辑界面,外键字段会自动加载关联表数据,如上图操作员属性. 1.1.1. 设置要显示的模型属性 我们可以通过设置不显示操作员选项,代码如下: fields=('TaskNum','Source','Target',Ba…
这个章节我们将演示用户端界面的开发,当前演示界面还是采用先实现基本功能再逐步完善的"敏捷"模式.首先聚焦在功能逻辑方面实现普通用户与系统的交互,普通用户通过url能查看到当前任务的执行情况列表.为了便于开发我们先设定一个目标url是http://localhost:8001/task/显示当前在执行的任务列表,同时,界面有操作按钮来执行针对任务的操作. 这里页面原型布局设计与Admin类似,如下图: 1.1. 配置url和view 为了便于对django的每个APP的url进行统一管理…
本章节我们将实现与admin里类似的列操作"下达"功能,演示客户端是如何实现操作功能,同时,演示也会强调一点,何时合并你的功能代码,避免相同功能使用不同的代码段来实现,在企业开发中非常重要,良好的编程习惯会让你在未来的维护和扩展中体会到什么叫"好的代码". 1.1. Table增加操作列 本例中我们采用url http://localhost:8001/task/1/start/ 来相应对某行任务执行"下达"操作,类似RESTful的接口模式后面…
前面的章节我们完成了任务管理主要功能的开发及单元测试编写,可如何知道单元测试效果怎么样呢?测试充分吗?还有没有没有测到的地方呢? 本章节我们介绍一个统计测试代码覆盖率的利器Coverage,Coverage.py (以下简称 Coverage)是 Python 测试界最为流行的一个库之一,用来统计测试覆盖率.测试覆盖率可以从一个角度衡量代码的质量,覆盖率越高,说明测试越充分,代码出现 bug 的几率相对也就越小.当然需要明确的是,测试覆盖率仅仅只是衡量代码质量的一个角度,即是否有代码未经过单元测…
上一章节我们完成了"CRUD"的后面3个功能点,新增由于改动较大我们专门增加本章来阐述,主要是完成技术栈切换后,会发现模板的代码判断过多,逻辑过于复杂.对未来存在的扩展和维护友好性严重下降! 1.1. 数据新增 作为企业开发信息管理的核心"增/删/改/查",目前为止我们涉及到了查询.修改和删除,现在我们来讲讲如何通过新增添加数据到系统吧.新增操作与修改删除不一样的就是新增的时候对象未在后台持久化到数据库中获取自身的对象标识,也就是说对象标识是空的或"0&q…
笔者也使用过一段时间adminx组件,后来由于adminx停更,又遇到更简单的django-simpleui后,现在基本上只使用simpleui了,使用simpleui的几个好处,笔者认为排在第一位的是于原生admin的兼容性非常高,大量的原生配置基本可以直接用.adminx扩展就需要改很多地方,配置文件也是变成不一样的adminx.py.试用之后,比较喜欢simpleui思路,不知道以后功能多了写复杂了会不会也得走adminx的老路.不过adminx和simpleui等第三方组件都是可以让我们…
前一章节介绍了List页面的JQuery技术栈的迁移,这一章节我们花一些篇幅来说说修改/查看页面的技术栈迁移.相对于List的获取数据,修改页面涉及到数据Post提交到后台更新数据库.我们仍旧小步迭代的方式推进,修改/查看页面的技术迁移. 1.1. 修改/查看页面分离 修改/查看页面分离与列表的前后台分离会相对复杂一些,主要时是修改页面会涉及到通过POST向后台提交数据修改.基于模板的方式加载数据,技术上是通过view的change函数里增加POST分支来实现数据提交的,提交成功后重定向加载列表…
本小节演示项目是如何从连接器到获取Tank4C9服务上的设备对象的值,并通过Connector服务的url返回给UI端请求的.另外,实际项目中考虑websocket中间可能因为网络通信等原因出现中断情况,我们增加一个“心跳”设计来定时发送连接请求,确保出现冲断的情况下,能够重新连接到服务端. 1. OPCUA-Client读取OPCUA服务Tag值 现在重构Connector APP views文件里的pushCollectorData函数,通过引入OPCUA-Client来读取OPCUA服务端…
前面章节我们采用OPC作为设备到上位的信息交互的协议,本章我们介绍跨平台的OPC UA.OPC作为早期的工业通信规范,是基于COM/DCOM的技术实现的,用于设备和软件之间交换数据,最初,OPC标准仅限于Windows操作系统.OPC是OLE for Process Control的缩写(中文意思:用于过程控制的OLE). OPC规范包括了3大部分: OPC DA:OPC实时数据访问规范,定义了包括数据值,更新时间与数据品质信息的相关标准.前面实战2我们使用openOPC获取的tag位号值就属于…
OPC(OLE for Process Control)定义:指为了给工业控制系统应用程序之间的通信建立一个接口标准,在工业控制设备与控制软件之间建立统一的数据存取规范.它给工业控制领域提供了一种标准数据访问机制,将硬件与应用软件有效地分离开来,是一套与厂商无关的软件数据交换标准接口和规程,主要解决过程控制系统与其数据源的数据交换问题,可以在各个应用之间提供透明的数据访问.实际项目中“设备”就变成一个可以访问的OPC Server和它的Tag位号值,更多的详情请参考OPC基金会官网:http:/…
本小节继续演示如何在Django项目中采用早期websocket技术原型来实现把OPC服务端数据实时推送到UI端,让监控页面在另一种技术方式下,实时显示现场设备的工艺数据变化情况.本例我们仍然采用比较轻量级的dwebsocket组件. 1. 安装dwebsocket组件 安装命令:pip install dwebsocket   1.1. dwebsocket使用方法 如果你想为一个单独的视图处理一个websocket连接可以使用accept_websocket装饰器,它会将标准的HTTP请求路…
基于python的互联网软件测试开发(自动化测试)-全集合 1   关键字 为了便于搜索引擎收录本文,特别将本文的关键字给强调一下: python,互联网,自动化测试,测试开发,接口测试,服务测试,api测试,分层测试,分层自动化..etc 2   本文目的 对近几年自己对互联网领域的测试开发的一些见解以及一些学习资料进行整理和分享,希望能够给有志于此领域的人一些入门的指导. 同时能够将 Google 这样的大的互联网公司的软件开发模式向中国地区进行一些推广吧. 笔者的观点具有比较强的倾向性:人…
[书名]:PYTHON数据分析与挖掘实战 第2版[作者]:张良均,谭立云,刘名军,江建明著[出版社]:北京:机械工业出版社[时间]:2020[页数]:340[isbn]:9787111640028 学习Python的主要语法后,想利用python进行数据分析,感觉<Python数据分析与挖掘实战>可以用来学习参考,理论联系实际,能够操作数据进行验证,基础理论的内容对于新手而言还是挺有帮助的, 能从实际场景介入入手讲解,有前因后果的介绍,但是对于多个方法,为什么要采用其中某个执行方法没有细化.…
[读书笔记与思考]<python数据分析与挖掘实战>-张良均 最近看一些机器学习相关书籍,主要是为了拓宽视野.在阅读这本书前最吸引我的地方是实战篇,我通读全书后给我印象最深的还是实战篇.基础篇我也看了,但发现有不少理论还是讲得不够透彻,个人还是比较倾向于 <Machine Learning>--Tom M.Mitchell,Andrew 的 machine learning 课程,或周华志的<机器学习>,Jiawei Han 的 <data mining>.…
前言 通用电气(GE).IBM.英特尔等公司主推的“工业互联网”正在经历“产品-数据分析平台-应用-生态”的演进.这主要得益于 Predix 数据分析平台对工业互联网应用的整合能力.Predix 就像工业数据领域的 iOS 或者安卓系统一样,能够让工程师自己建立模型和应用,打通前方数以万计的传感器和后方每天增加超过 5000 万条的数据库. 在实际应用中,东方航空公司在 Predix 上使用工业互联网应用搜集了 500 多台 CFM56 发动机的高压涡轮叶片保修数据,结合远程诊断纪录和第三方数据…
学习Python的主要语法后,想利用python进行数据分析,感觉<Python数据分析与挖掘实战>可以用来学习参考,理论联系实际,能够操作数据进行验证,基础理论的内容对于新手而言还是挺有帮助的, 能从实际场景介入入手讲解,有前因后果的介绍,但是对于多个方法,为什么要采用其中某个执行方法没有细化. 共15章,分两个部分:基础篇.实战篇.基础篇介绍了数据挖掘的基本原理,实战篇介绍了一个个真实案例,通过对案例深入浅出的剖析,在不知不觉中通过案例实践获得数据挖掘项目经验,同时快速领悟看似难懂的数据挖…
<python数据分析与挖掘实战>PDF&源代码&张良均 下载:链接:https://pan.baidu.com/s/1TYb3WZOU0R5VbSbH6JfQXw提取码:3dhe原网站还得注册,下载速度超慢,还是我这快.分享更多python数据分析相关电子书PDF及代码下载: 链接:https://pan.baidu.com/s/1gP_16Xq9eVmLJ1yOsWD9FA 提取码:l8dx <python数据分析与挖掘实战(张良均等)>PDF+源代码PDF,3…
目       录 1.      概述... 2 2.      实训柜... 2 3.      培训内容... 4 4.      二次开发培训... 5 1.   概述 中国工业互联网从 0 向 1 演进从缺政策.缺技术.缺市场,逐渐转移到了缺人才,跨行业.跨领域的复合型人才:IT与OT融合型人才:了解工业.了解数据分析.了解工业机理的复合型人才:既懂工业运营需求.又懂网络信息技术.有较强创新能力和操作能力的复合型人才:既有专业领域的知识.又懂得大数据.人工智能新算法的人才:懂工业和新兴…
基于之前的项目代码 Python Django CMDB项目实战之-1如何开启一个Django-并设置base页.index页.文章页面 Python Django CMDB项目实战之-2创建APP.建模(models.py).数据库同步.高级URL.前端页面展示数据库中数据 新建一个forms.py 加入下面的代码,定义forms 还有另外一种更简单的一种定义方式 实际上,我们的FanhuaForm和models数据库是对应的,因为有了,models中的表,才创建FanhuaForm表单去存储…
基于之前的项目代码来编写 Python Django CMDB项目实战之-1如何开启一个Django-并设置base页index页文章页面 现在我们修改一个文章列表是从数据库中获取数据, 下面我们就需要创建APP ,和数据库相关设置 运行命令 然后可以看到项目中会自动生成Server的文件 下面配置数据库 在setting.py中加入Server 然后配置连接数据库 默认是sqlite3数据库 在setting.py中我们改为连接自己的数据库 如图: 下面,我们需要定义一个类作为ORM 数据库映…
1.环境 win10 python 2.7.14 django 1.8.2 需要用到的依赖包:MySQLdb(数据库的接口包).PIL/pillow(处理图片的包) 安装命令: pip install django==1.8.2 pip install pillow 2.学习django需要的知识点: python基础 mysql基本查询 Html   css  js   web基础  ajax 3.首先开启一个Django项目 在命令行中进入需要创建django项目的目录,目录名称最好不要包括…