在博途中需要对程序版本进行管理,如何使用Git的方式实现呢?
可以通过博途版本控制接口VCI,可以将开源分布式版本控制系统Git 连接到 TIA Potal 中。
通过 Git软件,可以 控制 TIA Por tal 中的程序块版本 ,如函数块 FB ,函数 FC ,数据块 DB ,软件单元。
使用 Git 有什么优点呢?博途中的项目服务器也可以对程序块进行版本管理。
项目服务器只能对 PLC 中所有程序进行统一管理,而使用 Git ,可以对具体的单个 FB 或 FC 或 DB 进行管理。 每一个单独的程序块都可以管理。项目服务器属于集中式管理。 Git属于分布式版本控制系统,任何一处 协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。
1. 软件安装
(1) 安装Git 软件。 Git 官方网站上下载安装 Git 。
https://git-scm.com/downloads
选择对应系统的安装包,保持默认安装路径或自定义路径,其他设置不变进行安装。
国内网络在官方网站下载速度较慢,推荐使用国内镜像站下载
https://registry.npmmirror.com/binary.html?path=git-for-windows/
(2) 安装博途插件 VCI git connector Add in
https://support.industry.siemens.com/cs/cn/zh/view/109773999
将Siemens.VCIGitConnector.addin 放入到 博途安装路径 AddIns 中。
默认是C:\Program Files\Siemens\Automation\Portal V18\AddIns文件夹中。
2. 打开“插 件”栏,选择激活插件。
图 1-1 启用VCI插件
-
注册Gitee,并创建仓库。
https://gitee.com/
图 1-2 创建仓库
图 1-3 配置仓库路径 -
远端仓库配置完毕后,因为他是空的,所以需要在本地新建一个文件夹;然后,用命令git init将这个文件夹初始化成一个gitee本地仓库;最后,用命令git remote add将本地仓库与一个远程仓库关联起来。
详细操作文档:https://gitee.com/help/articles/4122
操作步骤:
5. 在任何盘新建一个文件夹,然后右键open git bash here
图 1-4 创建本地仓库
- 输入git init指令,将其初始化
指令:
git init \#将文件夹初始化成一个gitee本地仓库
图 1-5 初始化本地仓库
- 连接远程仓库
git remote add origin https://gitee.com/XXXX-lukas/portal-vci.git #将本地仓库与一个远程仓库关联起来。origin是远程仓库在本地的默认名称,用于指代名称后面的远程仓库地址,也可以用其它名字。https之后是你的仓库链接。
图 1-6 仓库的https链接
在本地仓库目录中执行命令git remote -v,可以看到本地仓库与远程仓库的关联关系。origin是远程仓库在本地的默认名称。
图 1-9 查看关联情况
2. 设置版本控制接口
-
新增接口并提交代码至本地仓库
-
新建一个博途项目,并添加一个PLC 。
-
展开“版本控制接口”,双击“新增工作区”,并打开工作区。
图 2-1 新增工作区 -
点击“组态工作区”按钮,设置工作区路径,选择版本控制插件。工作区路径为代码仓库
图 2-2 进入工作区 -
在博途中新建“Cylinder_VCI[FB2]”, 编写气缸的简单控制,然后编译!
图 2-3 创建FB -
打开版本控制接口工作区,将“BLOCK_ 1[FB1]” 拖入到工作区。
图 2-4 将项目FB拖入工作区
图 2-5 commit需添加注释
图 2-6 导出成功后提示
- 打开本地仓库路径,可以看到Cylinder_VCI 这个FB的xml文档就存到放本地仓库了。
但此时Gitee仓库中是没有的。
图 2-7 本地仓库
- 修改FB,更新本地仓库
增加使能接口,并修改逻辑。
图 2-8 修改功能块
- 功能块修改后发现工作区状态发生变化。
图 2-9 工作区状态变化
- 选择导出,点击同步按钮,将博途项目中最新修改的功能块同步到本地仓库。
图 2-10 同步本地仓库
- 再次commit,并提交注释。
图 2-11 添加commit注释
尽量用英语来写注释。
- 目前仓库中应该有两个版本的功能块。右键本地仓库文件夹,选择git bash
输入指令可以查看各个版本和注释:
指令:
git log
图 2-12 本地仓库存放的历史版本
- 如果需要将本地的功能块版本回滚,需要借助两个指令。
git reflog #查看版本号
git reset hard HEAD @{1} #回滚版本
其中的1就是reflog中显示的版本号。
在图中,1是第一版,0是第二版。如果新增第三版。那2就会指向第一版,0指向第三版。类似于栈指针的概念。
图 2-13 版本回滚
- 版本回滚后,工作区状态同样会发生变化。
图 2-14 工作区状态发生变化
-
这时候需要反向操作,选择导入,然后点击同步按钮。
图 2-15 将最新/回滚版本导入博途项目 -
查看最新的FB功能块,发现刚才增加的管脚和逻辑都没有了。
图 2-16 功能块回滚成功
- 点击“Push”将本地仓库的对象推送至远程仓库,如图2-16所示。
图 2-17 git的push操作
- 但是本地与远程仓库的分支没有匹配,点击“Push”命令会报错,如图2-18所示。
图 2-18 git的push操作报错
- 按照提示,在本地仓库文件夹下(一定是当前仓库文件夹),右键快捷菜单点击“Git Bash Here”,打开Git Bash,键入“git push --set-upstream origin master”消除故障。
指令:
git push --set-upstream origin master
图 2-18 push报错处理
-
接下来显示git登陆弹窗,输入自己的账户名和密码
图 2-19 登陆gitee -
成功后会提示分支已经链接
然后再次点击“Push”命令,本地仓库的对象就推送到远程仓库了。
图 2-20 push完成
- 打开远程仓库可以看到存储的项目,如图2-21所示。
也可以看到刚才创建的cylinder_VCI程序块。
图 2-21 Gitee仓库
-
打开程序块可以看到,这是回滚到第一个版本的程序。
图 2-22 程序信息 -
如果其他项目希望使用到这个功能块时,可以同样创建一个本地仓库文件夹
然后初始化仓库,连接上gitee仓库,通过git remote -v查看是否顺利关联。
图 2-23 新项目的本地仓库初始和关联
图 2-24 新项目组态工作区
- 在工作区中,右键.vci,选择pull。
这一操作可以从远程仓库pull回最新程序到本地仓库。
图 2-25 pull操作
图 2-26 pull操作报错
- 发生报错后,同样在本地仓库路径下,git bash,输入指令
指令:
git pull origin master
图 2-27 pull报错处理
-
然后直接到工作区就可以看到远程仓库的cylinder_VCI就pull到了本地仓库中。
图 2-28 本地仓库更新成功 -
将工作区xml拖入到项目中进行转换,就可以使用这一版本的功能块了。
图 2-29 博途项目更新成功