百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

通过Git实现对西门子博图程序版本控制

wptr33 2025-02-15 17:38 19 浏览

  1. 背景

在工业自动化项目调试过程中,经常会出现程序部分代码使用迭代更新、回滚等需求,时间久远后,经常会发生,不知那个版本才是自己需要的版本,git管理工具可以满足工程师们这个需求。

  1. 概述

通过博图版本控制接口VCI,可以将开源式分布式控制系统Git连接的计算机博图软件中。

可以实现对FB/FC/DB/软件单元等实现版本管理。

  1. 软件需求
  2. 博图V16
  3. Git软件 Git-2.47.1-64-bit(根据自身计算机系统版本确定)
  4. 远程仓库https://gitee.com 注册账户
  5. 实现步骤

4.1下载git软件及博图插件
TIA_Add-In_VCI_Git_Connector_1.0.0

下载网址:

a)https://support.industry.siemens.com/cs/document/109773999/tia-add-in?dti=0&lc=zh-CN

b)https://git-scm.com/downloads

4.2 安装

a) 将
Siemens.VCIGitConnector.addin 放入到 博途安装路径 AddIns 中,

默认是 C:\Program Files\Siemens\Automation\Portal V16\AddIns 文件夹中.

b) Git-2.47.1-64-bit,右键,选择“以管理员身份运行”。

4.3激活博图VCI 插件

开启博图新建事例项目,鼠标左键单击软件右侧“插件”。

鼠标选择“
Siemens.VciGitConnect.addin”,左键单击“状态”列箭头,选择“激活”。激活后如下图所示:

  • 在计算机L盘新建文件夹,例如文件夹名称 “L:\Private\gitProTest”,此文件夹作为本地仓库存储程序文件用途。右键单击gitProTest,选择“Open Git Bash here”.弹出下图所示


  • 本地仓库初始化及仓库配置
  1. 输入git init,执行仓库初始化。

2)git config --global user.name "anum" #配置用户名为 anum

git config --global user.email "123@qq.com" #配置邮箱信息为 123@qq.com

3)查看仓库状态 输入git status

  • 博图软件端程序代码执行推入本地仓库及远程仓库操作
  1. 在工程树管理窗口—>版本控制接口下,新建工作区,并打开工作区。
  2. 工作区配置:工作区路径选择刚新建的文件夹gitProTest,版本控制插件选择Git.

单击弹出窗口的 “确定”按钮。

  1. 将所需控制的程序FB/FC/DT鼠标左键选择后拖拽到右侧工作区,本例以“FB2000_Motor”为例,如下图所示:

输入注释后,单击OK按钮,执行完成后弹出如下窗口。

  1. 将FB2000_Motor修改,删除输入变量“i_bEnable”,重新编译。

此刻注意,版本控制接口之工作区已经发生变化。

动作:选择 “->导出到工作区”,动作图标再次发生变化。

选择顶部 “同步”按钮。

弹出注释输入窗口,对新变更做备注,单击“OK”按钮。

(5)查看本地仓库文件存储状态

从上图可以看出,仓库存在2个版本,V1.0.0 和V1.1.0. 文件资源管理器中,可以看见FB已经在仓库中了。

  • 远程仓库端操作
  1. 在https://gitee.com/注册账户并登录,然后新建仓库。
  2. 在本地仓库“Open Git Bash here”窗口实现本地仓库与远程仓库关联。

git remote add origin https://gitee.com/XXXX-lukas/portal-vci.git 将本地仓库与一个远程仓库关联起来。origin 是远程仓库在本地的默认名称,用于指代名称后面的远程仓库地址,也可以用其它名字。XXXX-lukas/portal-vci.git为远程仓库名称。

  1. 输入git remote –v查看关联状态
  • 将本地仓库中文件推入远程仓库中。

工作区右键选择带推入的文件,选择Git –>Push.

推送完成后,弹出如下界面。

查看远程仓库:

4.10 版本回滚操作

经过FB修改,现在本地仓库有2个版本的文件,其中一个是普通A,没有使能信号及清除数据信号,另一个版本B添加了使能信号及清除运行数据信号。

  1. 使用git reflog 查看对应版本号

HEAD@{0}:最新版本

HEAD@{1}:之前版本

  1. 例如我们需要回滚到之前的版本,使用git reset --hard HEAD @{1} #回滚版本

其中的 1 就是 reflog 中显示的版本号。

在图中, 1 是第一版, 0 是第二版。

如果新增第三版。那 2 就会指向第一版, 0 指向第三版。

博图版本控制接口-工作区,变化如下图所示:

动作选择:从工作区导入 –> 单击顶部 “同步”按钮。PLC程序更新完成。

  • 远程仓库推送到本地仓库

后期如果其它项目需要使用该远程仓库程序文件,可以同样建立本地仓库文件,然后初始化->本地仓库配置用户名和邮箱 ->关联远程仓库,然后再博图版本控制接口-工作区,右键选择.Vci,选择pull. 这操作就可以实现将远程仓库pull到本地仓库。

完成后弹出如下所示:

如果发生报错,则需要在本地仓库文件下,右键选择git bash here.输入指令:git pull origin master.

相关推荐

redis的八种使用场景

前言:redis是我们工作开发中,经常要打交道的,下面对redis的使用场景做总结介绍也是对redis举报的功能做梳理。缓存Redis最常见的用途是作为缓存,用于加速应用程序的响应速度。...

基于Redis的3种分布式ID生成策略

在分布式系统设计中,全局唯一ID是一个基础而关键的组件。随着业务规模扩大和系统架构向微服务演进,传统的单机自增ID已无法满足需求。高并发、高可用的分布式ID生成方案成为构建可靠分布式系统的必要条件。R...

基于OpenWrt系统路由器的模式切换与网页设计

摘要:目前商用WiFi路由器已应用到多个领域,商家通过给用户提供一个稳定免费WiFi热点达到吸引客户、提升服务的目标。传统路由器自带的Luci界面提供了工厂模式的Web界面,用户可通过该界面配置路...

这篇文章教你看明白 nginx-ingress 控制器

主机nginx一般nginx做主机反向代理(网关)有以下配置...

如何用redis实现注册中心

一句话总结使用Redis实现注册中心:服务注册...

爱可可老师24小时热门分享(2020.5.10)

No1.看自己以前写的代码是种什么体验?No2.DooM-chip!国外网友SylvainLefebvre自制的无CPU、无操作码、无指令计数器...No3.我认为CS学位可以更好,如...

Apportable:拯救程序员,IOS一秒变安卓

摘要:还在为了跨平台使用cocos2d-x吗,拯救objc程序员的奇葩来了,ApportableSDK:FreeAndroidsupportforcocos2d-iPhone。App...

JAVA实现超买超卖方案汇总,那个最适合你,一篇文章彻底讲透

以下是几种Java实现超买超卖问题的核心解决方案及代码示例,针对高并发场景下的库存扣减问题:方案一:Redis原子操作+Lua脚本(推荐)//使用Redis+Lua保证原子性publicbo...

3月26日更新 快速施法自动施法可独立设置

2016年3月26日DOTA2有一个79.6MB的更新主要是针对自动施法和快速施法的调整本来内容不多不少朋友都有自动施法和快速施法的困扰英文更新日志一些视觉BUG修复就不翻译了主要翻译自动施...

Redis 是如何提供服务的

在刚刚接触Redis的时候,最想要知道的是一个’setnameJhon’命令到达Redis服务器的时候,它是如何返回’OK’的?里面命令处理的流程如何,具体细节怎么样?你一定有问过自己...

lua _G、_VERSION使用

到这里我们已经把lua基础库中的函数介绍完了,除了函数外基础库中还有两个常量,一个是_G,另一个是_VERSION。_G是基础库本身,指向自己,这个变量很有意思,可以无限引用自己,最后得到的还是自己,...

China's top diplomat to chair third China-Pacific Island countries foreign ministers' meeting

BEIJING,May21(Xinhua)--ChineseForeignMinisterWangYi,alsoamemberofthePoliticalBureau...

移动工作交流工具Lua推出Insights数据分析产品

Lua是一个适用于各种职业人士的移动交流平台,它在今天推出了一项叫做Insights的全新功能。Insights是一个数据平台,客户可以在上面实时看到员工之间的交流情况,并分析这些情况对公司发展的影响...

Redis 7新武器:用Redis Stack实现向量搜索的极限压测

当传统关系型数据库还在为向量相似度搜索的性能挣扎时,Redis7的RedisStack...

Nginx/OpenResty详解,Nginx Lua编程,重定向与内部子请求

重定向与内部子请求Nginx的rewrite指令不仅可以在Nginx内部的server、location之间进行跳转,还可以进行外部链接的重定向。通过ngx_lua模块的Lua函数除了能实现Nginx...